計(jì)算機(jī)應(yīng)用基礎(chǔ)
《計(jì)算機(jī)應(yīng)用基礎(chǔ)》由會(huì)員分享,可在線閱讀,更多相關(guān)《計(jì)算機(jī)應(yīng)用基礎(chǔ)(78頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、1 引 子 : (自 學(xué) )1. 指 令 助 記 符 表2. 學(xué) 習(xí) 指 令 的 要 點(diǎn) 3. 利 用 DEBUG程 序 , 學(xué) 習(xí) 指 令 系 統(tǒng)4. 指 令 中 操 作 數(shù) 的 表 示5. 書(shū) 寫(xiě) 指 令 注 意 事 項(xiàng) 2 指 令 類 型 助 記 符通 用 傳 送 MOV, PUSH, POP, XCHG, XLAT地 址 傳 送 LEA, LDS, LES標(biāo) 志 傳 送 PUSHF, POPF, LAHF, SAHF數(shù)據(jù)傳送 輸 入 輸 出 IN, OUT加 法 ADD, ADC, INC, AAA, DAA減 法 SUB, SBB, DEC, NEG, CMP, AAS, DAS乘
2、法 MUL, IMUL, AAM除 法 DIV, IDIV, AAD算 術(shù)運(yùn) 算 符 號(hào) 擴(kuò) 展 CBW, CWD邏 輯 運(yùn) 算 AND, TEST, OR, XOR, NOT移 位 SHL, SAL, SHR, SAR邏 輯操 作 循 環(huán) 移 位 ROL, ROR, RCL, RCR 1. 指 令 助 記 符 表 3 指 令 類 型 助 記 符串 操 作 MOVS,CMPS,SCAS,LODS,STOS串處 理 重 復(fù) 控 制 REP,REPE/REPZ,REPNE/REPNZ無(wú) 條 件 轉(zhuǎn) 移 JMP條 件 轉(zhuǎn) 移 JE/JZ, JNE/JNZ, JS, JNS, JO, JNOJP, J
3、NP, JC, JNC, JCXZJA/JNBE, JAE/JNB, JB/JNAE, JBE/JNAJG/JNLE, JGE/JNL, JL/JNGE, JLE/JNG循 環(huán) 控 制 LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ 過(guò) 程 調(diào) 用 CALL, RET控制轉(zhuǎn)移 中 斷 指 令 INT, INTO, IRET處 理 機(jī) 控 制 CLC, STC, CMC,CLD, STD, CLI, STINOP, HLT, WAIT, ESC, LOCK 4 2. 學(xué) 習(xí) 指 令 的 要 點(diǎn)從 以 下 幾 個(gè) 方 面 來(lái) 掌 握 一 條 指 令 :l 指 令 的 助 記 符l
4、 指 令 的 格 式 : 操 作 數(shù) 的 個(gè) 數(shù) 、 類 型 ( B, W, DW)l 執(zhí) 行 的 操 作 : 指 令 執(zhí) 行 后 的 結(jié) 果包 括 : 哪 些 寄 存 器 、 內(nèi) 存 單 元 的 值 發(fā) 生 了 變 化 對(duì) 標(biāo) 志 位 有 無(wú) 影 響 , 哪 些 受 影 響l 特 點(diǎn) 及 注 意 事 項(xiàng) 只 介 紹 常 用 的 指 令 , 其 他 需 要 時(shí) 可 自 學(xué) 。 5 D:DEBUG - A ;匯 編 指 令0AF8:0100 MOV AL,0B5 0AF8:0102 ADD AL, 8F 0AF8:0104 - R ;顯 示 指 令 執(zhí) 行 前 各 寄 存 器 的 值 AX=00
5、00 BX=0000 CX=0000 DX=0000 、 、 、 、 、 、CS=0AF8 IP=0100 NV UP EI PL NZ NA PO NC- T=100 2 ;執(zhí) 行 指 令 , 查 看 結(jié) 果AX=0044 BX=0000 CX=0000 DX=0000 、 、 、 、 、 、CS=0AF8 IP=0104 OV UP EI PL NZ AC PE CY0AF8:0104 2080FC01 AND BX+SI+01FC, AL - 1 0 1 1 0 1 0 1 + 1 0 0 0 1 1 1 1進(jìn) 位 1 1 1 1 1 1 1 0 1 0 0 0 1 0 0編 程 完 成
6、 B5h + 8Fh = ? 學(xué) 習(xí) 加 法 ADD指 令 及 其 對(duì) 狀 態(tài) 標(biāo) 志 位 的 影 響 。3. 利 用 DEBUG學(xué) 習(xí) 指 令 系 統(tǒng) ( 示 例 ,實(shí) 驗(yàn) ) 6 4. 指 令 中 操 作 數(shù) 的 表 示符 號(hào) 表 示 內(nèi) 容data 立 即 數(shù) 操 作 數(shù)reg 通 用 寄 存 器 操 作 數(shù) 8 位 : AH、 AL、 BH、 BL、 CH、 CL、 DH、 DL 16 位 : AX、 BX、 CX、 DX、 BP、 SP、 SI、 DIsegreg 段 寄 存 器 CS、 DS、 SS、 ESmem或 存 儲(chǔ) 器 操 作 數(shù) ( 5種 尋 址 方 式 )src 源 操
7、 作 數(shù)dst 目 的 操 作 數(shù) ( ) 注 釋 時(shí) 表 示 寄 存 器 、 存 儲(chǔ) 器 、 端 口 的 內(nèi) 容oprd1 oprd2 兩 操 作 數(shù) 7 5. 書(shū) 寫(xiě) 指 令 注 意 事 項(xiàng) ( 本 章 全 部 結(jié) 束 后 再 復(fù) 習(xí) )l 不 區(qū) 分 字 母 的 大 小 寫(xiě)下 列 寫(xiě) 法 表 示 同 一 條 指 令 :MOV AX, 1ABDH mov ax, 1abdhl 不 自 創(chuàng) 助 記 符將 MOV AL , 0 寫(xiě) 成 MOVE AL, 0 JMP lable 寫(xiě) 成 JUMP lable 8 l 注 意 操 作 數(shù) 的 范 圍對(duì) 字 節(jié) 操 作 指 令 0 FFH 0 255
8、 對(duì) 字 操 作 指 令 0 FFFFH 0 65535 MOV AL , 260 MOV AX , 70000 MOV AL, 1FFH MOV AL, 2ABCDH 9 l 對(duì) 無(wú) 操 作 數(shù) 指 令 , 不 添 加 操 作 數(shù) 。 STC AL l 對(duì) 單 操 作 數(shù) 指 令 , 操 作 數(shù) 不 能 是 立 即 數(shù) 。 IMUL 6 10 l 對(duì) 雙 操 作 數(shù) 指 令 不 能 兩 個(gè) 同 為 存 儲(chǔ) 器 操 作 數(shù) MOV DI , SI 目 的 操 作 數(shù) 不 能 是 立 即 數(shù) ADD 3 , AL 兩 個(gè) 操 作 數(shù) 的 類 型 應(yīng) 相 同 SUB AX , BL 若 value
9、 定 義 為 字 類 型 存 儲(chǔ) 器 變 量 : MOV CL, value BX 11 l 內(nèi) 存 操 作 數(shù) 的 屬 性 應(yīng) 明 確 。 MOV BX , 0MOV byte ptr BX , 0MOV word ptr BX , 0MOV BX , ALMOV BX , AX 12 l A、 B、 C、 D、 E、 F開(kāi) 頭 的 十 六 進(jìn) 制 數(shù) 前 面 加 0, 與 H結(jié) 尾 的 標(biāo) 識(shí) 符 區(qū) 別 。如 寄 存 器 名 : AH、 BH、 CH、 DH 變 量 名 : abcdH 等例 mov AL, 0AH mov AL, AH mov BX, 0abcdH 13 l CS 和
10、IP的 值 只 在 控 制 轉(zhuǎn) 移 指 令 中 修 改 。l 對(duì) 非 控 制 轉(zhuǎn) 移 指 令 , 取 完 指 令 后 IP值 自 動(dòng) 指 向 下 條 指 令 。l 段 寄 存 器 CS的 值 , 只 在 MOV、 PUSH中 可 作 操 作 數(shù) , 且 這 兩 條 指 令 執(zhí) 行 結(jié) 果 不 改 變 CS值 。MOV AX, CSPUSH CSl IP、 PSW兩 個(gè) 寄 存 器 不 作 為 操 作 數(shù) 在 指 令 中 出 現(xiàn) 。mov IP , 1234Hmov PSW , 0F0FHl PSW狀 態(tài) 寄 存 器 的 值 由 指 令 執(zhí) 行 后 確 定 , 不 同 的 指 令 對(duì) 各 標(biāo) 志
11、 的 影 響 不 同 。 14 數(shù) 據(jù) 傳 送 是 最 基 本 、 最 重 要 的 一 種 操 作 實(shí) 際 程 序 中 , 使 用 的 比 例 最 高寄 存 器 寄 存 器寄 存 器 內(nèi) 存 單 元寄 存 器 I/O端 口設(shè) 置 寄 存 器 、 內(nèi) 存 單 元 的 初 始 值二 數(shù) 據(jù) 傳 送 指 令 15 按 傳 送 內(nèi) 容 , 可 分 為 四 類 :1. 通 用 數(shù) 據(jù) 傳 送 MOV, PUSH, POP, XCHG, XLAT2. 地 址 傳 送 LEA, LDS, LES3. 標(biāo) 志 傳 送 PUSHF, POPF, LAHF, SAHF 4. 輸 入 輸 出 傳 送 IN, OUT
12、 特 點(diǎn) : 1. 除 POPF、 SAHF外 , 其 他 傳 送 指 令 對(duì) 標(biāo) 志 位 均 無(wú) 影 響 2. 唯 一 允 許 以 段 寄 存 器 做 操 作 數(shù) 的 指 令 且 只 有 MOV、 PUSH、 POP這 三 條 允 許 16 1. 通 用 傳 送 指 令 MOV、 PUSH、 POP、 XCHG、 XLATreg/mem/segreg regreg/segreg memreg/mem segregreg/mem data 可 實(shí) 現(xiàn)( 1) MOV傳 送 指 令格 式 MOV dst, src執(zhí) 行 ( dst ) ( src ) 17 例 : reg/mem/segreg
13、reg 通 用 寄 存 器 /存 儲(chǔ) 器 /段 寄 存 器 通 用 寄 存 器 MOV AL , BL MOV BX , AL MOV DS , AX reg/segreg mem 通 用 寄 存 器 /段 寄 存 器 存 儲(chǔ) 器 MOV AL , BX MOV DS , BX+SI reg/mem segreg 通 用 寄 存 器 /存 儲(chǔ) 器 段 寄 存 器 MOV BX , CS MOV BX , DS reg/mem data 通 用 寄 存 器 /存 儲(chǔ) 器 立 即 數(shù) MOV Al , 9 MOV BX , OFFSET buffer MOV BYTE PTR value , 0
14、MOV WORD PTR BX , 1 18 MOV指 令 特 點(diǎn) 及 注 意 事 項(xiàng) :l 雙 操 作 數(shù) 指 令 (注 意 雙 操 作 指 令 的 特 點(diǎn) )l 可 進(jìn) 行 字 節(jié) 或 字 傳 送l 不 允 許 存 儲(chǔ) 器 傳 送 到 存 儲(chǔ) 器MOV BX , value MOV DI, SI MOV AX , value MOV BX , AXMOV AL , SI MOV DI , AL 19 l 可 對(duì) DS、 ES、 SS 賦 值 但 不 允 許 立 即 數(shù) 直 接 傳 送 給 段 寄 存 器MOV DS, AX MOV ES , BX MOV DS, 1000H MOV AX
15、, 1000HMOV DS, AXl CS不 能 做 目 的 操 作 數(shù) , 不 能 通 過(guò) 傳 送 指 令 改 變 CS的 值 MOV CS , AX 20 l 不 允 許 段 寄 存 器 傳 送 到 段 寄 存 器 MOV ES , DS MOV AX , DS MOV ES , AXD:MASMDEBUG-A1693:0100 MOV ES, DS Error1693:0100 MOV AX, DS1693:0102 MOV ES, AX1693:0104 - 21 例 編 程 將 CL寄 存 器 的 內(nèi) 容 傳 送 到 200:100H單 元 中 。MOV AX, 200HMOV DS
16、 , AX ; (DS) = 200HMOV 100H , CL ;(02100H) = (CL)編 程 1:MOV AX, 200HMOV DS , AX ; (DS) = 200HMOV DI , 100H ; (DI) = 100H MOV DI , CL ;(02100H) = (CL)編 程 2:MOV 200:100H , CL 22 例 :實(shí) 現(xiàn) 將 AREA1開(kāi) 始 的 100個(gè) 數(shù) 據(jù) 傳 送 到 AREA2開(kāi) 始 的 單 元 。 AREA1: AREA2:100個(gè) 數(shù) 據(jù) 23 分 析 題 意 : 可 以 用 200條 MOV指 令 來(lái) 完 成 100個(gè) 數(shù) 據(jù) 傳 送 ,
17、 指 令 操 作 重 復(fù) , 每 個(gè) 數(shù) 據(jù) 傳 送 后 的 地 址 是 變 化 的 。 可 以 利 用 循 環(huán) ,但 每 循 環(huán) 一 次 要 修 改 地 址 ( 源 地 址 和 目 的 地 址 ) ,必 須 把 地 址 放 在 寄 存 器 當(dāng) 中 , 用 寄 存 器 間 接 尋 址 來(lái) 尋 找 操 作 數(shù) . 24 得 到 如 下 程 序 :MOV SI, AREA1 MOV DI, AREA2 MOV CX, 100AGAIN : MOV AL, SIMOV DI, AL JNZ AGAIN 25 如 下 表 所 示 : (略 ) (若 段 超 越 , 再 加 兩 個(gè) 時(shí) 鐘 T周 期 )
18、寄 存 器 間 接 尋 址尋 址 方 式 計(jì) 算 EA所 需 時(shí) 間直 接 尋 址寄 存 器 相 對(duì) 尋 址基 址 加 變 址 尋 址 BP+DI, BX+SIBP+SI, BX+DI 相 對(duì) 基 址 加 變 址 尋 址 BP+DI+位 移 量 】 , BX+SI+位 移 量 BP+SI+位 移 量 】 , BX+DI+位 移 量 6T5T9T7T8T11T12T 26 : 指 令 字 節(jié) 數(shù) 與 尋 址 方 式 有 關(guān) 。 通 常 操 作 碼 占 二 個(gè) 字 節(jié) ; 立 即 尋 址 : 立 即 數(shù) 增 加 1-2個(gè) 字 節(jié) 數(shù) ; 操 作 數(shù) 在 內(nèi) 存 中 : 直 接 尋 址 :直 接 地
19、 址 為 1-2個(gè) 字 節(jié) , 總 的 指 令 長(zhǎng) 3-4個(gè) 字 節(jié) ; 寄 存 器 間 接 尋 址 ( 沒(méi) 有 位 移 量 ) : 2個(gè) 字 節(jié) ; 變 址 尋 址 或 者 相 對(duì) 基 址 加 變 址 : 都 有 1-2字 節(jié) 的 位 移 量 , 指 令 字 節(jié) 數(shù) 為 2-4個(gè) 字 節(jié) 。指 執(zhí) 行 指 令 時(shí) , 內(nèi) 存 與 CPU之 間 數(shù) 據(jù) 傳 送 的 次 數(shù) 。 凡 是 立 即 數(shù) 寄 存 器 或 寄 存 器 之 間 的 傳 送 無(wú) 此 傳 送 數(shù) 。 凡 是 寄 存 器 與 存 儲(chǔ) 器 之 間 傳 送 次 數(shù) 為 1。 27 (2) PUSH (Push word onto s
20、tack) POP (Pop word off stack) 這 是 兩 條 堆 棧 操 作 指 令 。l 堆 棧 是 按 照 先 進(jìn) 后 出 原 則 組 織 的 一 段 內(nèi) 存 區(qū) 域 。 通 常 用 于 存 放 一 些 重 要 數(shù) 據(jù) , 如 : 程 序 的 地 址 、 或 是 需 要 恢 復(fù) 的 數(shù) 據(jù) 。l 為 方 便 數(shù) 據(jù) 的 存 放 和 恢 復(fù) , 設(shè) 置 專 門(mén) 的 指 針 , 指 向 堆 棧 中 要 操 作 的 單 元 。 段 值 由 SS 給 出 , 偏 移 地 址 由 SP 給 出 SS 堆 棧 段 寄 存 器 (stack segment) SP 堆 棧 指 針 寄 存
21、 器 (stack point) SS:SP 28 下 推 式 的 ( 規(guī) 定 堆 棧 設(shè) 置 在 堆 棧 段 內(nèi) ) 改 變 SP的 內(nèi) 容 , 隨 著 推 入 堆 棧 內(nèi) 容 增 加 , SP的 值 減 少 。 先 進(jìn) 后 出 工 作 原 則 ( Last In First Out 簡(jiǎn) 稱 LIFO) 堆 棧 在 內(nèi) 存 中 的 情 況 : 29 可 以 用 一 條 立 即 數(shù) 傳 送 指 令 給 SP賦值 , 確 定 SP在 SS段 中 的 初 始 位 置 。例 : 設(shè) (SS)=9000H , 堆 棧 段 為 64KB MOV SP,0E200H ;(SP)=0E200H則 : 整 個(gè)
22、 堆 棧 段 的 物 理 地 址 范 圍 為 : 堆 棧 在 內(nèi) 存 中 的 情 況 如 右 圖 所 示 : . . 偏 移 地 址 物 理 地 址00000H( 低 地 址 )90000H 9E200H 9FFFFHFFFFH (SP)=E200H 0000H 堆 棧段堆 棧 在 內(nèi) 存 中 的 情 況 30 (堆 棧 操 作 指 令 有 兩 條 ): 格 式 : PUSH src ; (SP) (SP)-2 (SP)+1,(SP) (src) 格 式 : POP dest ;(dest) (SP)+1,(SP) (SP) (SP)+2 SS:SP SS:SP (src)SS:SP SS:S
23、P (dst) 31 PUSH 入 棧 操 作格 式 PUSH src 執(zhí) 行 ( SP) ( SP) - 2 ( SS: SP) ( src) 特 點(diǎn) :l 單 操 作 數(shù) 指 令l 操 作 數(shù) 為 16位 , 可 以 是 reg/segreg/mem, 不 可 以 是 datareg : AX, BX, CX, DX, SI, DI, BP, BXsegreg : CS, DS, ES, SSmem : 字 類 型 SS:SP SS:SP (src) 32 例 : PUSH AX若 執(zhí) 行 前 : ( SS) = 2000H( SP) = 1002H( SS: SP) = 2010H (
24、AX) = 1234H3B2A10 低高20 地 址SS:SP2000:1002 指 令 執(zhí) 行 前(AX)=1234h 則 執(zhí) 行 后 : ( SS) = 2000H( SP) = 1000H( SS: SP) = 1234H( AX) = 1234H123410 低高20 地 址SS:SP2000:1000 指 令 執(zhí) 行 后(AX)=1234h 不 變 減 2 變不 變 33 D:MASMDEBUG-A ;匯 編 兩 條 指 令1693:0100 MOV AX, 12341693:0103 PUSH AX1693:0104-R ;顯 示 指 令 執(zhí) 行 前 寄 存 器 值A(chǔ)X=0000
25、BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1693 ES=1693 SS=1693 CS=1693 IP=0100 NV UP EI PL NZ NA PO NC1693:0100 B83412 MOV AX, 1234-T=100 2 ;執(zhí) 行 CS:100開(kāi) 始 處 的 兩 條 指 令 .AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEC BP=0000 SI=0000 DI=0000DS=1693 ES=1693 SS=1693 CS=1693 IP=0104 NV UP EI PL N
26、Z NA PO NC 1693:0104 03C6 ADD AX,SI-D SS:FFEC L10 ;查 看 棧 頂 內(nèi) 容1693:FFE0 34 12 00 00 4.1693:FFF0 FF FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF .- 例 利 用 DEBUG學(xué) 習(xí) PUSH指 令 注 意 相 關(guān) 寄 存 器 和 內(nèi) 存 單 元 內(nèi) 容 的 變 化 34特 點(diǎn) :l單 操 作 數(shù) 指 令l操 作 數(shù) 為 16位 , 可 以 是 reg/segreg/mem, 不 可 以 是 datareg : AX, BX, CX, DX, SI, DI
27、, BP, BXsegreg : DS, ES, SS, 不 允 許 是 CSmem : 字 類 型 POP出 棧 操 作 SS:SP SS:SP (dst)格 式 POP dst 執(zhí) 行 ( dst) ( SS: SP) ( SP) ( SP) + 2 35 若 執(zhí) 行 前 : ( SS) = 2000H( SP) = 1000H( SS: SP) = 1234H ( BX) = 5678H123410 低高20SS:SP2000:1000指 令 執(zhí) 行 前地 址(BX)=5678h例 : POP BX 123410 低高20SS:SP2000:1002 指 令 執(zhí) 行 后地 址(BX)=1
28、234h則 執(zhí) 行 后 : ( SS) = 2000H( SP) = 1002H ( SS: SP) = 2010H ( BX) = 1234H 不 變 加 2 變 變 36 -A 1693:0100 MOV BP, SP ;取 當(dāng) 前 棧 頂 地 址 1693:0102 MOV WORD PTR BP, 1234 ;用 MOV指 令 使 棧 頂 內(nèi) 容 為 1234H1693:0107 POP BX ;出 棧 指 令1693:0108-R ;查 看 指 令 執(zhí) 行 前 狀 態(tài)AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=
29、0000DS=1693 ES=1693 SS=1693 CS=1693 IP=0100 NV UP EI PL NZ NA PO NC1693:0100 89E5 MOV BP, SP-T=100 ;執(zhí) 行 CS:100處 的 第 一 條 mov指 令A(yù)X=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=FFEE SI=0000 DI=0000DS=1693 ES=1693 SS=1693 CS=1693 IP=0102 NV UP EI PL NZ NA PO NC1693:0102 C746003412 MOV WORD PTR BP+00, 1234 SS
30、:FFEE=0000-T ;執(zhí) 行 下 一 條 mov指 令A(yù)X=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=FFEE SI=0000 DI=0000 DS=1693 ES=1693 SS=1693 CS=1693 IP=0107 NV UP EI PL NZ NA PO NC1693:0107 5B POP BX-T ;執(zhí) 行 pop指 令 , 注 意 BX, SP的 變 化AX=0000 BX=1234 CX=0000 DX=0000 SP=FFF0 BP=FFEE SI=0000 DI=0000DS=1693 ES=1693 SS=1693 CS=16
31、93 IP=0108 NV UP EI PL NZ NA PO NC1693:0108 F5 CMC- 例 在 DEBUG下 學(xué) 習(xí) POP指 令 37 例 : 執(zhí) 行 下 列 程 序 段 PUSH AX PUSH BX MOV AX, 66H MOV BX, 99H POP BX POP AX 若 執(zhí) 行 前( SS) = 3000H( SP) = 200EH( SS:SP) = 1234H( AX) = 0A0BH( BX) = 0C0DH3000:200ESS:SP 執(zhí) 行 前 (AX)=0A0B (BX)=0C0D 3412執(zhí) 行 后 3000:200CSS:SP 0B0A3000:2
32、00ASS:SP 執(zhí) 行 后 0D0C 3000:200CSS:SP 執(zhí) 行 后 : (BX)=0C0D執(zhí) 行 后 (AX)=0066 (BX)=0099執(zhí) 行 后 SS:SP 執(zhí) 行 后 執(zhí) 行 后 : (AX)=0A0B3000:200ESS:SP 執(zhí) 行 后 38 用 PUSH往 SS段 傳 送 一 批 數(shù) 據(jù) 后 , 再 用 POP取 出 時(shí) ,取 出 單 元 的 順 序 與 存 放 時(shí) 的 順 序 正 好 相 反 , “ 后 進(jìn) 先 出 ” POP AX (AX)=0A0B PUSH AX 3000:200ESS:SP 執(zhí) 行 前 3000:200CSS:SP 3000:200ASS
33、:SP PUSH BX 3000:200ESS:SP 3000:200CSS:SP 0D0C0B0A3412 POP BX (BX)=0C0D(AX)=0A0B (BX)=0C0D MOV AX,0066 ; (BX)=0099 MOV AX,0066 ; (AX)=0066 39 堆 棧 使 用 的 場(chǎng) 合l 用 堆 棧 保 存 恢 復(fù) 信 息 l 子 程 序 的 調(diào) 用 、 返 回 以 及 中 斷 調(diào) 用 、 返 回 l 用 堆 棧 傳 送 數(shù) 據(jù) ( 程 序 設(shè) 計(jì) 中 介 紹 ) 40 主 程 序 子 程 序 :子 程 序 : 在 一 個(gè) 實(shí) 際 程 序 中 , 有 些 操 作 要 執(zhí)
34、 行 多 次 , 把 要 重 復(fù) 執(zhí) 行 ( subroutine) 操 作 編 為 子 程 序 。 也 常 把 一 些 常 用 的 操 作 標(biāo) 準(zhǔn) 化 、 通 用 化 的 子 程 序 。主 程 序 ( Main program) :往 往 要 調(diào) 用 子 程 序 或 處 理 中 斷 , 暫 停 主 程 序 , 執(zhí) 行 子 程 序 或 中 斷 服 務(wù) 程 序 。 41 ( 8088中 碼 段 寄 存 器 CS和 指 令 指 針 IP) , 才 能 , 通 常 用 到 內(nèi) 部 寄 存 器 , 執(zhí) 行 結(jié) 果 會(huì) 影 響 標(biāo) 志 位 , 必 須 在 調(diào) 用 子 程 序 之 前 將 。 子 程 序
35、嵌 套 或 子 程 序 遞 歸 ( 自 調(diào) 自 ) 保 留 許 多 信 息 , 而 且 保 證 正 確 返 回 ( 且 后 進(jìn) 先 出 ) 。 后 保 留 先 取 出 原 則 ( 即 LIFO-LAST In First out) 。 42 注 意 : SP堆 棧 指 針 ,始 終 指 向 棧 頂 。 SP初 值 用 MOV SP, data來(lái) 設(shè) 定 。 43 q 存 放 CPU寄 存 器 或 存 儲(chǔ) 器 中 暫 時(shí) 不 使 用 的 數(shù) 據(jù) , 使 用 數(shù) 據(jù) 時(shí) 將 其 彈 出 : PUSH AX ; 將 (AX)入 棧 . . 11 22(SP)-2 (SP)-1(SP) 堆棧段 PUS
36、H AX前 (AX) . 22H11H . 11H 22H(SP) (SP)+1(SP)+2 堆棧段 PUSH AX后 (AX) 44 使 用 數(shù) 據(jù) 時(shí) 將 其 彈 出 :POP BX .22H 11H . 33H 44HBX(SP) (SP)+1(SP)+2 堆棧段 POP BX前 .22H 11H . 11H 22HBX(SP)-2 (SP)-1(SP) 堆棧段 POP BX后 45 q 調(diào) 用 子 程 序 ( 或 過(guò) 程 ) 或 發(fā) 生 中 斷 時(shí) 要 保 護(hù) 斷 點(diǎn) 的 地 址 , 子 程 序 或 中 斷 返 回 時(shí) 恢 復(fù) 斷 點(diǎn) 。子 程 序 嵌 套 .斷 點(diǎn) 2(L)斷 點(diǎn) 2
37、(H) 斷 點(diǎn) 1(L)斷 點(diǎn) 1(H) .(SP) 先壓入后壓入 先彈出后彈出 堆棧段斷 點(diǎn) 地 址 壓 入 和 彈 出 情 況 主程序 子程序 1 子 程序2斷 點(diǎn) 1 斷 點(diǎn) 2 彈 出斷 點(diǎn) 2彈 出斷 點(diǎn) 1 46 注 意 事 項(xiàng)l 堆 棧 是 一 重 要 數(shù) 據(jù) 結(jié) 構(gòu) , 使 用 堆 棧 應(yīng) 有 明 確 目 的 。 不 亂 用 堆 棧 操 作 , 不 亂 修 改 堆 棧 內(nèi) 容 。PUSH、 POP、 PUSHF、 POPF、CALL、 RET、 INT、 IRET 亂 修 改 SS 和 SP 的 內(nèi) 容包 括 亂 用 BP參 與 的 存 儲(chǔ) 器 操 作 數(shù) 亂 用 指 令 47
38、 l PUSH和 POP 指 令 只 能 對(duì) 字 操 作 。 PUSH AL POP BYTE PTR BX l 可 以 對(duì) 段 寄 存 器 操 作 但 POP不 能 對(duì) CS操 作 PUSH DS PUSH CS POP ES POP CS 48 自 學(xué) 堆 棧 應(yīng) 用 : 比 較 下 邊 兩 個(gè) 程 序 運(yùn) 行 結(jié) 果 ? 例 : MOV BP,SPPUSH AXPUSH BXPUSH CXMOV CX,BP-6 MOV BX,BP-4MOV AX,BP-2ADD SP, 6例 : PUSH AXPUSH BXPUSH CXPOP CXPOP BX POP AX 49 ( 3) XCHG交
39、 換 指 令 格 式 XCHG oprd1, oprd2 執(zhí) 行 (oprd1) (oprd2)reg regreg memmem reg 可 實(shí) 現(xiàn) 50 例 XCHG AX, BX 字 操 作 執(zhí) 行 前 ( AX) = 1122H ( BX) = 3344H 執(zhí) 行 后 ( AX) = 3344H ( BX) = 1122H 例 XCHG AH, BL 字 節(jié) 操 作 執(zhí) 行 前 ( AX) = 1122H ( BX) = 3344H 執(zhí) 行 后 ( AX) = 4422H ( BX) = 3311H 51 XCHG oprd1, oprd2 注 意 事 項(xiàng) :l 雙 操 作 數(shù) 指 令
40、l可 進(jìn) 行 字 或 字 節(jié) 操 作 ,不 影 響 標(biāo) 志 位 。l不 允 許 對(duì) 立 即 數(shù) 、 段 寄 存 器 做 操 作 數(shù) XCHG AX, 4 XCHG BX, DS 存 儲(chǔ) 器 之 間 不 能 交 換 , 兩 個(gè) 操 作 數(shù) 中 必 須 有 一 個(gè) 在 寄 存 器 中 ; XCHG BX,DI (錯(cuò) ) 52 該 指 令 不 影 響 標(biāo) 志 位 。格 式 : XLAT str_table ; ( AL) ( ( BX ) +( AL) ) 或 XLAT str_table表 格 符 號(hào) 地 址 ( 首 地 址 ) , 只 是 為 了 提 高 可 讀 性 而 設(shè) 置 , 匯 編 時(shí)
41、仍 用 BX。 53 XLAT指 令 使 用 方 法 :v 先 建 立 一 個(gè) 字 節(jié) 表 格 ;( 相 對(duì) 與 表 格 首 地 址 位 移 量 ) ; ( 表 中 第 一 個(gè) 元 素 的 序 號(hào) 為 0) 。 (AL)為 轉(zhuǎn) 換 的 代 碼 。 54 若 把 字 符 的 掃 描 碼 轉(zhuǎn) 換 成 ASCII碼 ; 或 數(shù) 字 09轉(zhuǎn) 換 成 7段 數(shù) 碼 所 需 要 的 相 應(yīng) 代 碼 ( 字 形 碼 ) 等 就 要 用 XLAT指 令 。例 : 內(nèi) 存 的 數(shù) 據(jù) 段 中 有 一 張 十 六 進(jìn) 制 數(shù) 字 的 ASCII碼 表 。 首 地 址 為 : Hex_table ,欲 查 出 表
42、中 第 10個(gè) 元 素 ( A) 55 執(zhí) 行 指 令 序 列 :MOV BX, OFFSET Hex_tableMOV AL, 0AH XLAT Hex_table假 設(shè) : ( DS) =F000H, Hex_table=0040H ( AL) =0AH執(zhí) 行 XLAT以 后 : ( AL) =41H=( F004AH) , 即 “ A”的 ASCII碼 。 30H31H32H.39H41H42H.46H.Hex_tableHex_table+1Hex_table+2Hex_table+0AHHex_table+0BHHex_table+0FH FBA912016進(jìn) 制 數(shù) 的 ASCII
43、碼 表 56 ( Address-object transfer) 8086 /8088 提 供 三 條 :地 址 指 針 寫(xiě) 入 指 定 寄 存 器 或 寄 存 器 對(duì) 指 令 。(1) LEA(Load Effective Address)(2) LDS (Load pointer using DS)(3) LES (Load pointer using ES) 57 (1) LEA有 效 地 址 傳 送格 式 LEA reg, mem執(zhí) 行 ( reg) mem的 EA 功 能 : 寄 存 器 存 儲(chǔ) 器 操 作 數(shù) 的 偏 移 地 址 58執(zhí) 行 后 ( BX ) = 1000H注 意
44、 : OFFSET是 匯 編 程 序 提 供 的 一 個(gè) 操 作 符 , 不 是 CPU的 指 令 . LEA BX, buffer例 buffer是 一 個(gè) 符 號(hào) 地 址 表 示 的 內(nèi) 存 操 作 數(shù) (變 量 )。 .12h34h56h.buffer 內(nèi) 存DS: 1000h若 變 量 buffer的 偏 移 地 址 = 1000H等 價(jià) 于 MOV BX , OFFSET buffer 59 buffer 1A2B3C4D、 、 、 、 、例 將 buffer為 首 的 4個(gè) 字 節(jié) 內(nèi) 存 內(nèi) 容 相 加 , 存 放 在 AL中 。 MOV AX, SEG buffer MOV D
45、S, AX LEA BX, buffer MOV CX, 4 MOV AL, 0 exit: ADD AL, BX INC BX DEC CX ;(cx) =(cx) -1 JNZ exit ;ZF 0, 轉(zhuǎn) 至 exit說(shuō) 明 : 1) 操 作 符 SEG 的 作 用 是 取 變 量 的 段 地 址 。 執(zhí) 行 完 前 兩 條 指 令 后 , (DS)=buffer的 段 值 2) 操 作 符 OFFSET的 作 用 是 取 變 量 的 偏 移 地 址 執(zhí) 行 完 LEA BX, buffer, (BX)為 buffer的 偏 移 地 址 , 3)操 作 數(shù) BX是 以 DS為 段 值 ,
46、BX為 偏 移 值 的 內(nèi) 存 單 元 60 LEA reg, mem特 點(diǎn) 及 注 意 事 項(xiàng) :l目 的 操 作 數(shù) reg應(yīng) 是 16位 通 用 寄 存 器 LEA ES, BX LEA AL, buffer LEA 6, BX+SI LEA DI, buffer l 源 操 作 數(shù) 應(yīng) 是 存 儲(chǔ) 器 操 作 數(shù) LEA BX, AX l 傳 送 的 是 內(nèi) 存 單 元 的 有 效 地 址 , 與 其 內(nèi) 容 無(wú) 關(guān) 。 .12h34h56h.buffer 內(nèi) 存 61 (Load pointer using DS)格 式 : LDS reg16, mem32 ; ( reg16) (
47、 EA) ( DS) ( ( EA) +2) )功 能 : 前 兩 個(gè) 單 元 內(nèi) 容 (16位 偏 移 量 )裝 入 指 定 通 用 寄 存 器 , 后 兩 個(gè) 單 元 內(nèi) 容 (段 地 址 ) 裝 入 到 DS段 寄 存 器 。 用 于 寫(xiě) 遠(yuǎn) 地 址 指 針 。 62 例 : 假 設(shè) : (DS)=C000H指 令 : LDS SI, 0010H執(zhí) 行 指 令 后 : (SI)=0180H (DS)=2000H 80H01H00H20HC000H: 0010H(DS) C0011HC0012HC0013H .存 儲(chǔ) 器 63 格 式 : LES reg16, mem32 ; ( reg1
48、6) ( EA) ( ES) ( ( EA) +2) )功 能 : 把 源 操 作 數(shù) 指 定 的 4個(gè) 相 繼 字 節(jié) 送 指 令 指 定 的 寄 存 器 及ES寄 存 器 中 。 前 兩 個(gè) 單 元 內(nèi) 容 (16位 偏 移 量 )裝 入 指 定 通 用 寄 存 器 , 后 兩 個(gè) 單 元 內(nèi) 容 (段 地 址 ) 裝 入 到 ES段 寄 存 器 。 此 指 令 常 常 指 定 DI寄 存 器 。 用 于 寫(xiě) 遠(yuǎn) 地 址 指 針 。 64 例 : 假 設(shè) : (DS)=B000H (BX)=080AH指 令 : LES DI, BX執(zhí) 行 指 令 后 : (DI)=05A2H (ES)=4
49、000H A2H05H00H40HB000H: 080AH(DS) B080BHB080CHB080DH .存 儲(chǔ) 器(BX) 65 ( Flag register transfer)采 用 了 隱 含 寄 存 器 ( AH、 Flags)操 作 數(shù) 方 式 。 8088有 四 條 標(biāo) 志 傳 送 操 作 指 令 :(1) LAHF( Load AH into flags)(2) SAHF( Store AH into flags) (3) PUSHF( Push flags onto stack)(4) POPF( Pop flags off stack) 66 ( Load AH from
50、 flags)格 式 : LAHF ; ( AH) ( PSW的 低 字 節(jié) )功 能 : 。 SF ZF AF PF CF01234567TFIFDFOF 89101112131415 01234567 FLAGS AHLAHF指 令 操 作 圖 示 意 67 (2) SAHF( Store AH into flags)格 式 : SAHF ; ( PSW的 低 字 節(jié) ) ( AH)功 能 : ( AH) 送 標(biāo) 志 寄 存 器 低 八 位 。SF ZF AF PF CF01234567TFIFDFOF 89101112131415 01234567FLAGS AH 68SS:SP SS:
51、SP (PSW)(4). POPF標(biāo) 志 出 棧格 式 POPF執(zhí) 行 ( PSW) ( SS: SP) ( SP) ( SP) + 2 SS:SP SS:SP (PSW)(3). PUSHF標(biāo) 志 入 棧格 式 PUSHF執(zhí) 行 ( SP) ( SP) - 2 ( SS: SP) ( PSW) 69 特 點(diǎn) 及 注 意 事 項(xiàng) :l 無(wú) 操 作 數(shù) 的 形 式 , 操 作 數(shù) 隱 含 為 ( PSW)PUSHF AXPOPF CXl PUSHF和 POPF用 于 標(biāo) 志 信 息 的 保 存 和 恢 復(fù) 70 注 意 :( 1) 標(biāo) 志 位 的 影 響LAHF、 PUSHF不 影 響 標(biāo) 志
52、位 ,SAHF、 POPF由 裝 入 的 值 確 定 標(biāo) 志 位 的 值 , 即 影 響 標(biāo) 志 位 。( 2) PUSH F、 POPF用 于 保 護(hù) 調(diào) 用 過(guò) 程 前 ( PSW),過(guò) 程 返 回 后恢 復(fù) 。例 : PUSH AXPUSH CXPUSH F CALL TRANS POPFPOP CXPOP AX 71 上 述 兩 條 指 令 與 FR的 16位 有 關(guān) 。 特 殊 用 途 見(jiàn) 下 例 。例 : 將 標(biāo) 志 寄 存 器 的 單 步 標(biāo) 志 TF置 位 。PUSHF ; ( FLAGS) ( SP)POP AX ; ( SP) AXOR AX, 0100H; 設(shè) 置 D8=
53、TF=1PUSH AX ; ( AX) ( SP)POPF ; ( SP) FLAGS, 即 ( AX) FLAGS 72 ( Input and Output) 輸 入 輸 出 指 令 共 兩 條 : ( (Input byte or word) ( (Output byte or word) 輸 入 指 令 用 于 CPU從 外 設(shè) 端 口 接 收 數(shù) 據(jù) , 輸 出 指 令 用 于 CPU向 外 設(shè) 端 口 發(fā) 送 數(shù) 據(jù) 。 無(wú) 論 接 收 還 是 發(fā) 送 數(shù) 據(jù) , 必 須 通 過(guò) 累 加 器 AX(字 ) 或 AL(字 節(jié) ) ,又 稱 累 加 器 專 用 傳 送 指 令 。 73
54、 每 個(gè) 外 設(shè) 要 占 幾 個(gè) 端 口 : 數(shù) 據(jù) 口 , 狀 態(tài) 口 和 控 制 口 。 CPU I/O設(shè) 備譯碼 數(shù) 據(jù) 端 口 DBAB CB I/O接 口狀 態(tài) 端 口控 制 端 口 74 在 IBMPC機(jī) 里 , 可 以 配 接 許 多 外 部 設(shè) 備 ,每 個(gè) 外 設(shè) 與 CPU之 間 交 換 數(shù) 據(jù) , 狀 態(tài) 信 息 和 控 制 命 令 ,每 一 種 信 息 交 換 都 要 通 過(guò) 一 個(gè) 端 口 來(lái) 進(jìn) 行 。端 口 數(shù) : 外 部 設(shè) 備 最 多 有 65536個(gè) I/O端 口 。 A0A15譯 碼 形 成 。端 口 號(hào) : 端 口 號(hào) ( 即 外 設(shè) 端 口 地 址 )
55、 為 0000HFFFFH。PC機(jī) 僅 使 用 A 0A9譯 碼 形 成 I/O口 地 址 , 即 1024H個(gè) 口 地 址 端 口 號(hào) : 0000H03FFH其 中 : A9=1, 表 示 擴(kuò) 充 槽 上 的 口 地 址 。 75 , 可 以 直 接 寫(xiě) 在 指 令 中 ,端 口 號(hào) 代 替 指 令 中 的 PORT,機(jī) 器 指 令 用 二 字 節(jié) 表 示 , 第 二 字 節(jié) 就 是 端 口 號(hào) 。,必 須 先 把 端 口 號(hào) 放 到 DX寄 存 器 中 。不 需 要 用 任 何 段 寄 存 器 來(lái) 修 改 它 的 值 。 76 格 式 : IN acc, port ;(acc) (por
56、t)具 體 形 式 有 四 種 :IN AL, data8 ; 端 口 地 址 8位 , 輸 入 一 個(gè) 字 節(jié) IN AX, data8 ; 端 口 地 址 8位 , 輸 入 一 個(gè) 字IN AL, DX ; 端 口 地 址 16位 , 輸 入 一 個(gè) 字 節(jié) IN AX, DX ; 端 口 地 址 16位 , 輸 入 一 個(gè) 字 必 須 通 過(guò) 累 加 器 AX(字 ) 或 AL(節(jié) ) 輸 入 數(shù) 據(jù) 。 77 (Output byte or word) 格 式 : OUT port, acc ;(port) (acc)具 體 形 式 有 四 種 : OUT data8 , AL ; 端
57、 口 地 址 8位 , 輸 出 一 個(gè) 字 節(jié) OUT data8, AX ; 端 口 地 址 8位 , 輸 出 一 個(gè) 字 OUT DX , AL ; 端 口 地 址 16位 , 輸 出 一 個(gè) 字 節(jié) OUT DX , AX ; 端 口 地 址 16位 , 輸 出 一 個(gè) 字 必 須 通 過(guò) 累 加 器 AX(字 ) 或 AL(節(jié) ) 輸 出 數(shù) 據(jù) 。 78 例 1: 實(shí) 現(xiàn) ( 28H) ( DATA_WORD) IN AX, 28H MOV DATA_WORD, AX例 2: 從 端 口 3FCH 送 一 個(gè) 字 到 AX寄 存 器 MOV DX, 3FCH IN AX, DX ; ( AL) ( 3FCH) , ( AH) ( 3FDH) 例 3: 實(shí) 現(xiàn) 將 ( AL) (05H) OUT 5, AL; ( 05H) ( AL)思 考 : MOV AX, 2000H與 IN AX, 28H的 區(qū) 別 ?
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《光的折射》課件-(公開(kāi)課獲獎(jiǎng))2022年滬科版物理-
- UV油墨的基礎(chǔ)知識(shí)課件
- 藍(lán)色簡(jiǎn)約后備護(hù)士長(zhǎng)競(jìng)聘動(dòng)態(tài)課件
- 藍(lán)色清新筆記本翻頁(yè)年終總結(jié)模板課件
- 81二元一次方程組課件(人教版七年級(jí)下)
- 局部解剖學(xué)-頭部-蝶鞍區(qū)、海綿竇、硬腦膜
- 7273第1課時(shí) 位似圖形及作圖
- 供應(yīng)鏈管理-PPT
- 幼兒園管理過(guò)程
- 4索溪谷的“野”2
- 外科補(bǔ)液注意問(wèn)題
- 組織行為學(xué)--價(jià)值觀與態(tài)度
- 燈光教學(xué)課件1
- 中原城市春季車展招商方案
- 祛痰劑醫(yī)學(xué)知識(shí)專家講座