第四章指令系統(tǒng)_第1頁
第四章指令系統(tǒng)_第2頁
第四章指令系統(tǒng)_第3頁
第四章指令系統(tǒng)_第4頁
第四章指令系統(tǒng)_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第四章第四章 指令系統(tǒng)指令系統(tǒng) 第4章 指令系統(tǒng) 立即數(shù) - 內(nèi)存操作數(shù) MOV EAX, 20 ; 立即數(shù) - 通用寄存器 MOV EDI,ESI; 通用寄存器-通用寄存器 MOV EDI,EBX+4; 內(nèi)存操作數(shù) - 通用 寄存器 MOV EAX+4,EBX; 通用寄存器 - 內(nèi)存 操作數(shù) 2MOVZX指令 (Move with Zero-Extend) 格式:MOVZX DST,SRC 功能:將SRC傳送給DST 高位不足的部分用0填充 SRC不能是立即數(shù) 3MOVSX指令(Move with Sign-Extension) 格式:MOVSX DST,SRC 功能:將SRC傳送給DST,

2、高位不足的部分 用SRC的符號(hào)位(最高位)填充。 SRC不能是立即數(shù)。 數(shù)據(jù)交換指令 XCHG指令(Exchange) 格式:XCHG OPRD1,OPRD2 功能:將OPRD1和OPRD2中的內(nèi)容相互交換 兩個(gè)操作數(shù)中有一個(gè)是通用寄存器,另一個(gè)可以是寄 存器或內(nèi)存操作數(shù); 兩個(gè)操作數(shù)中不能有立即數(shù),也不能同時(shí)為內(nèi)存操作 數(shù)。 舉例: MOV AX, 0382H ; AH=03H, AL=82H XCHG AH, AL ; 交換后, AH=82H, AL=03H MOV EAX, 3 ; EAX=00000003H MOV dVar, 0 ; dVar=00000000H XCHG dVar,

3、 EAX ; 交換后, EAX=00000000H,dVar=00000003H 取地址指令 LEA指令(Load Effective Address) 格式:LEA DST,SRC 功能:把SRC的有效地址傳送給DST SRC必須是一個(gè)內(nèi)存操作數(shù); DST必須是一個(gè)寄存器 舉例將dVar的有效地址0040400AH送給EAX。 LEA EAX, DVAR 算術(shù)運(yùn)算 1 加法指令 2 減法指令 3 符號(hào)位擴(kuò)展指令 4 乘法指令 5 除法指令 1 加法指令 1. ADD指令 格式:ADD DST,SRC 功能:(DST)(SRC) DST 限制: SRC可以是立即數(shù)、內(nèi)存操作數(shù)或寄存器。 DST

4、可以是內(nèi)存操作數(shù)或寄存器,不能是立即數(shù)。 DST和SRC不能夠同時(shí)采用內(nèi)存操作數(shù)。 ADD指令通過標(biāo)志位來檢查是否有溢出 CF=1:兩個(gè)無符號(hào)數(shù)相加,最高位有進(jìn) 位,結(jié)果產(chǎn)生溢出 OF=1:兩個(gè)正數(shù)相加,結(jié)果卻得到一個(gè)負(fù)數(shù);或者兩個(gè)負(fù) 數(shù)相加,結(jié)果卻得到一個(gè)正數(shù)。 加法指令(續(xù)) 2.INC指令(Increment) 格式:INC DST 功能:DST DST + 1 INC指令可用于對(duì)計(jì)數(shù)器和地址指針進(jìn)行加1的操作 減法指令 1. SUB指令 格式:SUB DST,SRC 功能:DST DSTSRC SUB通過標(biāo)志位來檢查是否有溢出 CF=1:表示無符號(hào)數(shù)減法發(fā)生溢出,被減數(shù)小于減 數(shù)。 O

5、F=1:正數(shù)減去負(fù)數(shù),結(jié)果卻得到負(fù)數(shù);或者負(fù)數(shù) 減去正數(shù),結(jié)果卻得到正數(shù)。 減法指令(續(xù)) 2DEC指令(Decrement) 格式:DEC DST 功能:DST DST1 DEC指令可用于對(duì)計(jì)數(shù)器和地址指針進(jìn) 行減1的操作 減法指令(續(xù)) 4NEG指令(negation) 格式:NEG DST 功能:DST 0DST 將操作數(shù)按位求反后加1 減法指令(續(xù)) CMP指令 (Compare) 格式:CMP SRC1,SRC2 功能:比較兩個(gè)操作數(shù)的大小,設(shè)置相應(yīng)的標(biāo)志位 CF,OF,SF,ZF,AF,PF等 CMP指令中,SRC1不能是立即數(shù) CMP指令后面,常常跟著條件跳轉(zhuǎn)指令 符號(hào)位擴(kuò)展指令

6、 1CBW指令(Conbert Byte to Word) 格式:CBW 功能:將AL中的符號(hào)位擴(kuò)展至AH AL中符號(hào)位為1時(shí),AH為0FFH; AL中符號(hào)位為0時(shí),AH為00H。 符號(hào)位擴(kuò)展指令(續(xù)) 2CWDE指令(Convert Word to DoubleWord) 格式:CWDE 功能:將16位有符號(hào)數(shù)AX擴(kuò)展為32位有符號(hào)數(shù)EAX AX中符號(hào)位為1時(shí),EAX的高16位為0FFFFH; AX中符號(hào)位為0時(shí),EAX的高16位為0000H。 乘法指令 1MUL指令 (Multiply) 格式:MUL SRC 功能:進(jìn)行無符號(hào)數(shù)的乘法操作 SRC為8位時(shí):AXALSRC。 SRC為16位時(shí)

7、:DX:AXAXSRC。DX存放結(jié)果的高16位。 SRC為32位時(shí):EDX:EAXEAXSRC。EDX存放結(jié)果的高32 位。 乘法指令(續(xù)) 2IMUL指令(Integer Multiply) 格式1:IMUL SRC 格式2:IMUL DST, SRC 格式3:IMUL DST, SRC1, SRC2 功能:進(jìn)行有符號(hào)數(shù)的乘法操作 乘法指令(續(xù)) 格式1:IMUL SRC SRC作為一個(gè)乘數(shù),另一個(gè)乘數(shù)在AL/AX/EAX中 SRC為8位時(shí):AXALSRC。 SRC為16位時(shí):DX:AXAXSRC。DX存放結(jié)果的高16位。 SRC為32位時(shí):EDX:EAXEAXSRC。EDX存放結(jié)果的高32

8、位。 格式2:IMUL DST, SRC SRC可以是8位/16位/32位的寄存器/內(nèi)存操作數(shù)/立即數(shù); DST是16位/32位的寄存器; 操作結(jié)果為:DSTDSTSRC。 格式3:IMUL DST, SRC1, SRC2 SRC1可以是16位/32位的寄存器/內(nèi)存操作數(shù); SRC2是8位/16位/32位的立即數(shù); 操作結(jié)果為:DSTSRC1SRC2 。 除法指令 1DIV指令 格式:DIV SRC 功能:進(jìn)行無符號(hào)數(shù)的除法操作 SRC作為一個(gè)除數(shù),不能為立即數(shù) 被除數(shù)在AX,DX:AX,EDX:EAX中 除法操作的位數(shù)取決于SRC的位數(shù) SRC為8位時(shí):AXSRCAL余AH SRC為16位時(shí)

9、:DX:AXSRCAX余AX SRC為32位時(shí):EDX:EAXSRCEAX余EDX 除法指令(續(xù)) 2IDIV指令 格式:IDIV SRC 功能:進(jìn)行有符號(hào)數(shù)的除法操作 用法和DIV指令相同 位運(yùn)算指令 對(duì)操作數(shù)中的每一個(gè)二進(jìn)制位逐個(gè)操作 1 邏輯運(yùn)算指令 2 位操作指令 3 移位指令 邏輯運(yùn)算指令 邏輯運(yùn)算指令包括NOT、AND、OR、XOR、TEST五條 指令。 按位進(jìn)行操作 各位之間運(yùn)算結(jié)果互相獨(dú)立 1AND指令 格式:AND DST,SRC 功能:DST DST 0FH = 00001111B 將寄存器的 內(nèi)容清零 舉例: G=47H=01000111B,和 00100000B相“異或

10、”后,結(jié)果為 01100111B=67H=g。 01000111B = 47H 00100000B = 20H 01100111B = 67H XOR AX, AX 假設(shè)AX=0100 0111 0110 1011B 0100 0111 0110 1011 0100 0111 0110 1011 0000 0000 0000 0000 4TEST指令 格式:TEST SRC1,SRC2 功能:兩個(gè)操作數(shù)進(jìn)行邏輯“與”操作, 設(shè)置ZF,SF,PF標(biāo)志位。OF,CF設(shè)置為0。 常用于測(cè)試某一位或幾位是否為1。 舉例: 測(cè)試AL的第4位是否為1 TEST AL, 10H 結(jié)果: 若AL的第4位(D4

11、)為0,則ZF=1; 若第4位(D4)為1,則ZF=0。 5NOT指令 格式:NOT DST 功能:DST NOT DST 用于將一個(gè)數(shù)的全部位求反 舉例: 若BL=55H,執(zhí)行指令:NOT BL后,BL=0AAH, 即: 01010101B = 55H 10101010B = 0AAH 注意NOT和NEG的區(qū)別 3 移位指令 包括算術(shù)移位指令、邏輯移位指令和循環(huán)移位指令 進(jìn)行左移和右移操作 統(tǒng)一格式:指令助記符 DST,SRC 1算術(shù)左移和邏輯左移指令SAL(SHL) 格式:SAL DST,SRC 格式:SHL DST,SRC 功能:將DST向左移動(dòng)SRC指定的次數(shù) 最低位補(bǔ)入相應(yīng)的0 CF

12、的內(nèi)容為DST最后移出位的值 舉例: 設(shè)AL=73H,則執(zhí)行指 令:SHL AL, 1后, AL=0E6H,CF=0 如圖: 2邏輯右移指令SHR 格式:SHR DST,SRC 功能:將DST向右移動(dòng)SRC指定的次數(shù) 最高位補(bǔ)入相應(yīng)的0 CF的內(nèi)容為DST最后移出位的值 舉例: AL=73H,則執(zhí)行指令:SHR AL, 1 后,AL=039H,CF=1 如圖: 3算術(shù)右移指令SAR 格式:SAR DST,SRC 功能:將DST向右移動(dòng)SRC指定的次數(shù) 最高位保持不變 CF的內(nèi)容為DST最后移出位的值 舉例: 設(shè)AL=83H,則執(zhí)行指令:SAR AL, 1后, AL=0C1H,CF=1 如圖:

13、4循環(huán)左移指令ROL 格式:ROL DST,SRC 功能:將DST向左移動(dòng)SRC指定的次數(shù) 移出的最高位復(fù)制到CF和最低位中 舉例: 設(shè)AL=0F3H,則執(zhí)行指令ROL AL, 1后,AL=0E7H, CF=1。 如圖: 5循環(huán)右移指令ROR 格式:ROR DST,SRC 功能:將DST向右移動(dòng)SRC指定的次數(shù) 移出的最低位復(fù)制到CF和最高位中 舉例: 設(shè)AL=0F3H,則執(zhí)行指令:ROR AL, 1后, AL=0F9H,CF=1 如圖: 6帶進(jìn)位循環(huán)左移指令RCL 格式:RCL DST,SRC 功能:將DST向左移動(dòng)SRC指定的次數(shù) CF復(fù)制到最低位 移出的最高位復(fù)制到CF中 舉例: 設(shè)AL

14、=0F3H,CF=0,則執(zhí)行指令:RCL AL,1 后,AL=0E7H,CF=1 如圖: 7帶進(jìn)位循環(huán)右移指令RCR 格式:RCR DST,SRC 功能:將DST向右移動(dòng)SRC指定的次數(shù) CF復(fù)制到最高位后 移出的最低位復(fù)制到CF中 舉例: 設(shè)AL=0F3H,CF=0,執(zhí)行指令:RCR AL,1 后,AL=079H,CF=1 如圖: 10CLC指令 格式:CLC 功能:將EFLAGS中的CF標(biāo)志位清零 11STC指令 格式:STC 功能:將EFLAGS中的CF標(biāo)志位置1 匯編程序?qū)嵗容^日期 Year_1WORD 2003 Month_1WORD 8 Day_1WORD 28 Year_2WO

15、RD 2000 Month_2WORD 10 Day_2WORD 20 ResultWORD ? MOV AX, Year_1 CMP AX, Year_2 JL date1_less JG date1_greater MOV BX, Month_1 CMP BX, Month_2 JL date1_less JG date1_greater MOV CX, Day_1 CMP CX, Day_2 JL date1_less JG date1_greater MOV Result, 0 ; 日期1等于日期2 JMP finish date1_less: MOV Result, -1 ; 日期1

16、早于日期2 JMP finish date1_greater: MOV Result, 1 ; 日期1晚于日期2 JMP finish finish: 匯編程序?qū)嵗齠actorial數(shù)列 .code start: mov ecx, N;循環(huán)初值 mov eax, 1;fact初值 e10: imul eax, ecx ;fact=fact*ECX loop e10 ;循環(huán)N次 mov Fact, eax;保存結(jié)果 invoke printf, offset szFmt, N, Fact;打印結(jié)果 ret end start 匯編程序?qū)嵗齼蓚€(gè)數(shù)交換 push A push B pop A pop

17、 B mov bl,A mov bh,B xor bl,bh xor bh,bl xor bl,bh mov X,bl MovAL,A XCHG AL, B Mov A,AL 復(fù)雜指令系統(tǒng)計(jì)算機(jī)復(fù)雜指令系統(tǒng)計(jì)算機(jī) CISC (Complex Instruction Set Computer) 靠增強(qiáng)指令的功能,增加指令系統(tǒng)的復(fù)雜程度來提高計(jì)算機(jī) 系統(tǒng)的性能。 特點(diǎn): (1)指令系統(tǒng)復(fù)雜龐大,指令數(shù)目一般達(dá)200300條。 (2)指令格式多,指令字長(zhǎng)不固定,使用多種尋址方式。 (3) 可訪存指令不受限制。 (4) 大多數(shù)采用微程序控制器。 CISC中,通過增強(qiáng)指令系統(tǒng)的功能,簡(jiǎn)化了軟件,增加了硬

18、 件的復(fù)雜程度。然而指令復(fù)雜了,指令的執(zhí)行時(shí)間必然加長(zhǎng), 從而使整個(gè)系統(tǒng)的執(zhí)行時(shí)間反而增加 20%和80%規(guī)律:CISC中大約有20%的指令使用頻率高,占據(jù) 了80%的處理機(jī)時(shí)間,而有80%的不常用指令只占用處理機(jī)的 20%時(shí)間。 4.5.3 4.5.3 精簡(jiǎn)指令系統(tǒng)精簡(jiǎn)指令系統(tǒng) 精簡(jiǎn)指令集計(jì)算機(jī)RISC(Reduced Instruction Set Computer)靠 精簡(jiǎn)指令系統(tǒng),簡(jiǎn)化指令功能及優(yōu)化的編譯程序來提高計(jì)算機(jī) 系統(tǒng)的性能。 特點(diǎn): 選取使用頻率最高的一些簡(jiǎn)單指令,指令條數(shù)少; 指令長(zhǎng)度固定,指令格式種類少; 只有取數(shù)存數(shù)指令訪問存儲(chǔ)器,其余指令的操作都在寄 存器之間進(jìn)行。

19、RISC采用流水線技術(shù);簡(jiǎn)單而統(tǒng)一格式的指令譯碼;大部分指 令可以單周期執(zhí)行;簡(jiǎn)單的尋址方式 。 & 本章小結(jié) 一臺(tái)計(jì)算機(jī)中所有機(jī)器指令的集合稱為該計(jì)算機(jī)的指令系統(tǒng)。 指令系統(tǒng)是表征一臺(tái)計(jì)算機(jī)性能的重要因素。 指令格式是指令字用二進(jìn)制代碼表示的結(jié)構(gòu)形式,通常由操作 碼字段和地址碼字段組成。操作碼字段表征指令的操作特性與 功能,而地址碼字段指示操作數(shù)的地址。 目前多采用二地址、單地址、零地址混合方式的指令格式。指 令字長(zhǎng)度分為:?jiǎn)巫珠L(zhǎng)、半字長(zhǎng)、雙字長(zhǎng)三種形式。高檔微型 機(jī)中目前多采用32位長(zhǎng)度的單字長(zhǎng)形式。 形成指令地址的方式,稱為指令尋址方式。有順序?qū)ぶ泛吞S 尋址兩種,由指令計(jì)數(shù)器PC來跟蹤。 & 本章小結(jié) 形成操作數(shù)地址的方式,稱為數(shù)據(jù)尋址方式。包括隱含尋址、 立即尋

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論