




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第三章指令系統及尋址方式一、教學內容指令格式指令尋址方式指令系統二、要求掌握指令的書寫格式、指令的尋址方式和每一條指令的作用。三、重點掌握指令的尋址方式和每一條指令的功能作用。四、 難點在于理解和掌握指令的尋址方式, 怎樣找到操作數所在存儲單元的存放地址以及運用指令編程的技巧等。五、本章分為 4 講,每講 2 學時。第一講 指令尋址方式1指令的書寫格式指令有兩種書寫格式:? 機器指令:由一串二進制數描述? 符號指令:用英文字母縮寫詞描述。符號指令的書寫格式如下:標號: 操作助記符 目的操作數 ,源操作數 ;注釋幾點說明:1)標號表示某一條指令所在存儲單元的首址。標號應由字母打頭,后跟字母、數字
2、及特殊字符均可,但不能用關鍵字。標號的用法:標號一般放在子程序(子過程)的第一條指令的開頭;標號一般放在轉移指令要轉去的目的地的 第一條指令的開頭。標號一般放在其他符號定義的前面。)指令助記符(操作助記符): MO;V ADD; SUB; END。3) 操作數 有源操作數和目 的操作數, 他們之間用 “,” 分隔 操作數也可有可無。2數據尋址方式一般在指令中包含有操作碼和操作數, 怎樣找到指令中的操作數和操作數所 在的地址,這就是尋址方式。1)立即尋址操作數直接包含在代碼段的指令中。如: MOV EAX, HMOV BX, 6688HMOV AX, 1234H? 立即數只能作為源操作數? 立即
3、尋址主要用來給通用寄存器或存儲器賦值? 不允許給段寄存器直接賦值2)寄存器尋址操作數在寄存器中。32 位寄存器: EAX、 EBX、 ECX、 EDX、ESP 、 EBP、 ESI 、 EDI TOC o 1-5 h z 16位寄存器:AX、BX、CX、DX、SP、BP、SI、DI、CS、DS、SS、ES、FS、GS8位寄存器:AH、AL、BH、BL、CH、CL、DH、DL如:MOV AX, BXMOV EDI , ESIMOV AL , CL3)存儲器尋址操作數在存儲器中,其地址由指令以某種方式指出。16 位指令模式下的存儲器尋址16位指令模式尋址結構由4部分組成:段基址X 10H基址+變址
4、+偏移量基址:BX、 BP , 變址: SI、 DI , 偏移量: 8位或 16位如果有效地址在BX, SI或DI中,則以DS寄存器內容為段基址;如果有效地址在BP中,則以SS段寄存器的內容為段基址。如果使用段超越( CS: ES: DS: SS: ) , 前綴操作數可以放在冒號前指定的段。例如: MOV E:S DI , ALMOV ES : 2000H, AL其中ES為前綴字節,產生目標碼時,它將放在MOV旨令的前面, 即:26 ES 8805 MOVDI , AL亦即:268805 MOES: DI , AL16位指令模式尋址方式:直接尋址、寄存器間接尋址、寄存器相對尋址、 基址變址尋址
5、、相對基址變址尋址。?直接尋址操作數在存儲器單元中。操作數所在白有效地址EA直接由指令指出。例 1 MOV AX, 3000H例 2 MOV BL , BLOCK例 3 MOV BX, DATA1?寄存器間接尋址操作數的有效地址在BX BP或SI、DI中,EA可表示為EA=(BX)(BP)(SI)(DI)例 1 MOV AX, BX例 2 MOV DL, SI?寄存器相對尋址操作數在存儲單元中,其有效地址 EA可表示為EA=位偏移量位偏移量-(BX) -| (BP) _8 (SI) 16L(DI)例 1 : MOV ALBX + 4000H亦可寫成:MOV AL, 4000HBX例 2 : M
6、OV AX , BP+2000H?基址變址尋址操作數在存儲單元中,其有效地址 EA可表示為EA=(BX)邳(BP) (DI)例 1 MOV AX , BX+SI或寫成: MOV AX, BXSI 例 2 MOV AX , BX+DI 例 3 MOV AX , BP+SI 例 4 MOV AX , BP+DI?相對基址變址尋址操作數在存儲單元中,其有效地址 EA可表示為_ (BX) I悖8位偏移量EA= (BP) J樸16+位偏移量例 1: MOV AX, BX+SI + 1500H或寫成:MOV AX, 1500BXSI例 2 : MOV AX, BP+DI+1000H32位指令模式下的存儲器
7、尋址32位指令模式尋址結構由5部分組成:段址+基址+變址*比例因子+偏 移量其中基址寄存器或變址寄存器可以是除ESP以外的任何32位通用寄存器。當基址寄存器為EBP時,默認段寄存器SS存放段選擇符,否則,默認DS存放段 選擇符。也可使用段超越前綴來指定。比例因子為 1, 2, 4, 8。偏移量為8位 或32位。?直接尋址,有兩種書寫格式指令中直接寫出操作數所在存儲單元的 32位有效地址(EA),注意:段超越前綴不能省略,否則,會出現尋址錯誤。如:MOV EAX DS H用變量名代表存儲單元的有效地址如:把數據段中以BUF命名的雙字單元的內容送到 EAXMOV EA,X DS: BUFMOV E
8、A,X BUF? 寄存器間接尋址操作數的有效地址由 EA (EAX EBX ECX EDX ESI、EDI、EBP指定。如: MOV EBX, UBFMOVEAX, EBX? 相對基址尋址操作數的有效地址由EA( EAX、 EBX、 ECX、 EDX、 ESI、 EDI、 EBP) + 偏移量( 8、 32)指定。如:MOV EAX NUM ; NBMt效地址MOVEDX, EAX+80H? 變址尋址,有兩種格式有比例因子的變址尋址如:MOV EBX ESI X4+80H無比例因子的變址MOV EBX, ESI+80H? 基址加變址尋址,有兩種格式有比例因子的基址加變址尋址如:MOV EAX,
9、 EBP+ESIX 4+80H無比例因子的基址加變址尋址如: MOV EAX, EBP+ESI+80H3程序地址尋址方式1)相對尋址相對尋址為段內尋址, 指令中給出帶符號的相對偏移量, 程序目標地址為當前 IP 值加上相對偏移量作為偏移地址。NEXT例如:地址機器碼助記符1D24: 01008BF7MOV DI , SI1D24: 0102 EB02JMPSHORT1D24:01048ACAMOVCL ,DL1D24:01068AC3NEXT: MOV AL,BL2)直接尋址直接尋址是指指令中直接給出轉移指令的目標地址。 在段間轉移中, 指令中 給出目標段地址或代碼段的段描述符。例如:地址機器
10、碼助記符1D24: 0010 8BF7MOVDI , SI1D24: 0012EA0A00251D JMP FAR PTR NEXT3)間接尋址間接尋址 分段內和段間間接尋址,指令中以間接方式給出轉移指令的目標地址,通常存放在數據段。采用(E) BP尋址,指令目標地址放在堆棧段。使用 段超越前綴,也可以存放在其他段。下面的例子為段問間接轉移指令。BX中存放的是符號地址 BUF的偏移地址 BUF-一雙字類型。在BUF所指的存儲單元中存放著 CODE段中標號NEXT勺段基 址和偏移地址(1D25: 0008) 。4堆棧地址尋址方式用途: 暫存數據, 自動保護中斷斷點、 調用過程斷點等, 堆棧的存取
11、方式是:采用先進后出規則。使用PUSH指令將數據壓入堆棧,使用POP旨令數據彈出堆 棧。1)字數據進棧步驟 :?(E) SP- - (E) SP? 高8位堆棧?(E) SP- - (E) SP? 低8位-堆棧2)字數據出棧步驟:? 棧頂內容-目標寄存器或目標單元的低 8位?(E) SP+ (E) SP? 棧頂內容-目標寄存器或目標單元的高 8位(E) SP+ (E) SP第二講 指令格式指令基本格式: 標號: 助記符 目的操作數,源操作數;注釋? 標號可有可無;? 助記符必有,如: ADD , MO,V IN , OUT。? 操作數(目的操作數,源操作數)可有可無。操作數:寄存器、存儲器、立即
12、數。1通用寄存器8 位:AH, AL, BH, BL, CH, CL, DH, DL16位:AX, BX, CX, DX, SI , DI , SP, BP32 位:EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP2存儲器操作數需要通過寄存器間接尋址,來到操作數所在存儲單元的地址。16位間接尋址的寄存器有:BX, BP, SI , DI;32 位間接尋址的寄存器有:EAX, EBX, ECX, EDX, ESI, EDI, EBP。3存儲器操作數缺省數據類型:8 位指令操作為:字節類型;16位指令操作為:字類型;32 位指令操作為:雙字型;在使用中如要改變地址表達式
13、的類型,可使用PTR偽指令來定義。如: 字節型 BYTE PTRReg字 型 WORD PTR Reg雙字型 DWORD PTR Reg如: INC WORD PTR BX4段寄存器操作數(Seg)為 16 位的段寄存器:CS, DS, ES, SS, FS, GS。5立即數(imm)只能作為源操作數, 其數據類型由目的操作數來決定。 如果采用十六進制表示立即數,當大于9時,AF的數必須在前面加“ 0”,后面加“ H對指令的分析應注意以下 4 點:? 指令的功能;? 適用于指令的尋址方式;? 指令對標志位的影響;? 指令長度和執行時間。第三講 指令系統按功能分類:? 數據傳送指令? 算術運算指
14、令? 邏輯運算指令? 控制轉移類指令? 串操作指令? 輸入 / 輸出指令? 處理器控制指令?中斷指令與DO財能調用1數據傳送指令數據傳送指令包括通用數據傳送、 地址傳送指令、 標志寄存器傳送指令、 符號擴展指令和擴展傳送指令等。1)通用數據傳送指令 傳送指令格式: MOV Dest, Source如: MOV AL, CLMOV BX, SIMOV EAX, EBXMOV AX, 0D56BHMOV EAX, EBX+ESI交換指令交換操作數的數據類型:字節型、字型、雙字型。允許通用寄存器之間,通用寄存器與存儲器之間交換數據。格式: XCHG DEST, SRC如: XCHG EAX, EBX
15、; 32 位交換XCHG AX , SI ;存儲器與寄存器交換XCHG AL , DL; 8位交換字節交換指令格式: BSWAP 32 位寄存器功能: 將 位 31 位 24 與 位 7 位 0 交換, 位 23 位 16 與位 15 位8 交換查表指令格式: XLAT 表頭變量名功能: 取出 DS : BX+ AL 中的 1 個字節送給AL , 或者取出DS: EBX+AL中的 1 個字節送給AL。擴展傳送指令格式: MOVSX DEST , SRCMOVZX DEST , SRC如 : MOV BL , 80HMOVSX AX, BL; AX=FF80HMOVZX AX, BL;AX=00
16、80H2)堆棧操作指令堆棧是人為定義的一塊內存空間, 用來暫存數據的。 堆棧能自動保護中斷斷點和現場以及調用子過程的斷點和現場等。 對數據的存取按照“先進后出”的規則進行。堆棧的棧底在高端地址單元,棧頂為低端地址。當數據進棧后,棧頂向低端地址下浮;當數據出棧后,棧頂向高端地址上浮。壓棧指令 : PUSH SRC如: PUSH ALPUSH AXPUSH EAXPUSH DSPUSH SIPUSH DWORD PTR SIPUSH 1234HPUSH 80H出棧指令: POP DEST: POP 80H TOC o 1-5 h z POP1234HPOPDWORD PTR DIPOPDIPOPD
17、SPOPEAXPOPAXPOPAL3)地址傳送指令有效地址送寄存器指針送寄存器和DS指針送寄存器和ESLEA (Load Effective Address)LDS (Load DS with Pointer)LES (Load ES with Pointer)這組指令將地址送到指定的寄存器中。4)標志寄存器傳送指令(Flag Register transfers)LAHF (Load Register AH with Flags) 標志送 AHSAHF (Store AH into Flags) AH 送標志寄存器PUSHF(PUSH the Flags) 標志入棧POPF(POP the
18、Flags) 標志出棧。2算術運算類指令1)加法指令加法指令有:ADD (add) 加法指令ADC (Add with Carry) 帶進位的加法指令INC (increment) 加 1 指令。2)減法指令減法指令有:SUB (subtract)減法指令SBB (subtract with borrow)帶借位的減法指令 DEC (decrement) 減 1 指令NEG (negate) 求補指令CMP (compare)比較指令。3)二進制整數的乘、除運算指令及符號擴展指令進制整數的乘、除運算指令及符號擴展指令包括:MUL (Unsigned Multiple) 無符號數乘法IMUL (
19、Signed Multiple) 帶符號數乘法DIV (Unsigned Divide)無符號數除法IDIV (Signed Divide)帶符號數除法 CBW (Convert Byte to Word)字節轉換為字 CWD (Convert Word to Double word)字轉換為雙字。.邏輯運算與移位指令這類指令包括邏輯運算指令和移位指令,它用于直接對寄存器或存儲器操作 數的二進制位進行操作。1)邏輯運算指令邏輯非? 格式:NOT操作數? 功能:對操作數按位求反,結果送操作數存放。? 尋址方式:除立即尋址之外的任意尋址方式。? 該指令不影響標志位。邏輯與? 格式:AND目的操作數
20、,源操作數? 功能:該指令對兩個操作數按位進行邏輯“與”運算。即只有當對應位均為1時,與的結果才是1,否則為00 “與”運算后的結果送目的操作數。?目的操作數可以是寄存器尋址和存儲器尋址。源操作數可以是立即數、寄存器數和存儲器操作數。?“與”運算使標志CF=Q OF=Q根據運算結果影響PF, SF, ZF標志,對AF標志未作定義。邏輯或? 格式:OR目的操作數,源操作數? 功能:兩個操作數按二進制位進行邏輯“或”運算。進行“或”運算的 兩位只要有1,結果為1,否則為0o “或”運算結果送回目的操作數。?目的操作數可以是累加器和任意通用寄存器、存儲器操作數。源操作數可以是立即數、寄存器和存儲器操
21、作數。?“或”運算使標志CF=Q OF=Q根據運算結果影響PF, SF, ZF標志,對AF標志未作定義。? 其尋址方式與AND旨令相同。異或指令? 格式:XOR目的操作數,源操作數? 功能:源操作數與目的操作數按二進制對應位進行異或,若對應的二進 制位相同(同為1或同為0)結果為0,不同則結果為1。?目的操作數可以是累加器、任意通用寄存器和內存操作數。源操作數可 以是立即數、寄存器和內存操作數。? 該指令使標志位CF=OF=0PF、SF、ZF根據運算的結果決定。AF未作定 義。2)移位指令?移位指令包括算術移位、邏輯移位和循環移位。? 邏輯移位指令把操作數當成二進制位用。因此,移位指令以及循環
22、移位 指令也把操作數當成二進制位用。? 這些指令的目的操作數可以是寄存器或內存操作數,源操作數用來指定移位的位數。? 如果只移1位(次),移動次數可以直接用1表示。? 如果移位的位數超過1位,則應先將移位次數傳送給寄存器 CL,然后用CL表示移動次數算術左移指令格式: SAL 目的操作數,移動次數功能: 該指令將目的操作數當作二進制位串, 把目的操作數的內容向左移動指定的位數( 由移動次數給出 ) ,每左移一位,最低位補0,最高位移入進位標志CF。當指令規定的移位次數等于1時,移位后,如CF與操作數的最高位不同, 則OF=1儂明溢出),否則OF=Q移位計數值不等于1, OF不確定。這條指令還
23、將影響PF、SF、ZF標志,AF標志未定義。對于算術左移,每移一位相當于操作數乘2。算術右移指令SAR格式: SAR 目的操作數,移動次數功能: 將指定的目的操作數的值按二進制位串從最低位開始向右移動指定次數。每移動1次,最低位被移出,并送標志位 CF,最高位由符號位來填補(即原 來的目的操作數最高位為 1,移動后最高位仍然為 1,否則為 0) 。操作數每右移一位,相當于該數被 2 除。邏輯左移指令SHL格式: SHL 目的操作數,移動次數功能:與算術左移指令完全一樣。邏輯右移SHR旨令格式:SHW的操作數,移動次數功能: 將目的操作數按二進制位從最低位開始向右移動指定的位數, 每向右 移動1
24、次,被操作數的最低位進入 CF標志,最高位補00循環移位指令8086 的循環移位指令有:ROL DEST, CNT ROR DES,T CNT RCL DEST, CNT RCR DEST, CNT;循環左移;循環右移;帶進位循環左移;帶進位循環右移CNT弋表移位次數,當移1位時,可在CNT處可直接寫1,當移位次數超過 1次時,必須先將移位次數送 CL,然后在CNT處寫CL DESTft示目的操作數.用操作指令用操作指令是用一條指令實現對一用字符或數據進行操作。其中有5條基本的用操作指令和1條重復前綴。當重復前綴加在這些指令前面時,可實現重復用操作。它們常用于循環結構。存儲器中的字節序列或字序列叫做用(String)。用操作指令就是每次對用中 的一個元素進行操作
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 災害監測員管理制度
- 烘焙室采購管理制度
- 烤漆房設備管理制度
- 熱水IC卡管理制度
- 煤氣熔煉爐管理制度
- 煤礦水泥墻管理制度
- 煤礦風井口管理制度
- 燃氣站公司管理制度
- 愛心托管所管理制度
- 物業充電樁管理制度
- DB6112∕T 0001-2019 西咸新區中深層無干擾地熱供熱系統應用技術導則
- 青島市 主要片區 項目 拆遷補償方案 鏈接
- 病例報告表(CRF)模板
- Q∕GDW 11612.2-2018 低壓電力線高速載波通信互聯互通技術規范 第2部分:技術要求
- 國家開放大學《生活方式與常見疾病預防》形考任務1-4參考答案
- 第三章_采場頂板活動規律
- 數字PID控制器設計制作.答案
- DR曝光參考條件
- 濰柴發動機WD615系列分解圖冊
- 年中轉100萬噸水泥中轉站項目可行性研究報告模板
- 宣恩水利水產局
評論
0/150
提交評論