微型機指令系統(tǒng)課件_第1頁
微型機指令系統(tǒng)課件_第2頁
微型機指令系統(tǒng)課件_第3頁
微型機指令系統(tǒng)課件_第4頁
微型機指令系統(tǒng)課件_第5頁
已閱讀5頁,還剩118頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、段基址(16位)0000偏移地址(16位)+物 理 地 址(20位)8086/8088的的存儲器管理段基址寄存器與偏移地址寄存器的隱含對應(yīng)關(guān)系1. 取指操作 CSIP2. 數(shù)據(jù)存取 DSBX、DI、SI、direct(存儲器直接地址)3. 串操作 DSSI ESDI4. 堆棧操作 SSSP5. BP的間接尋址 SSBP1第二章微型機指令系統(tǒng)第一節(jié) 尋址方式操作碼:規(guī)定指令進行什么操作。操作數(shù):規(guī)定指令操作的對象。尋址方式:尋找操作數(shù)所在地址的方式。(共七種)一、立即尋址MOV CL,05MOV AX,1000H立即數(shù) 操作碼操作數(shù)立即尋址中的操作數(shù)作為指令的一部分存放在代碼段中,在取指階段數(shù)據(jù)

2、隨指令一起被取到CPU,這種數(shù)據(jù)在指令格式中的直接表現(xiàn)為常數(shù)。立即尋址方式主要用于給寄存器或存儲器賦初值。2第二章微型機指令系統(tǒng)第一節(jié) 尋址方式一、立即尋址二、寄存器尋址MOV SS,AX(累加器的內(nèi)容傳送給堆棧段寄存器)MOV AX,BX(將基址寄存器的內(nèi)容傳送給累加器)指定某些CPU寄存器存放操作數(shù),由于操作數(shù)在CPU寄存器中,指令執(zhí)行過程中不必通過訪問內(nèi)存而取得操作數(shù),因此執(zhí)行速度很快3第二章微型機指令系統(tǒng)第一節(jié) 尋址方式一、立即尋址二、寄存器尋址三、直接尋址(存儲器尋址)MOV AX,1000H直接尋址隱含段為數(shù)據(jù)段DS,但允許段超越。 MOV AX,ES:1000H MOV AX,S

3、S:1000H MOV AX,CS:1000H12 34直接尋址指令在指令的操作碼后面直接給出操作數(shù)的偏移地址,它與操作碼一起存放在存儲器的代碼段,高地址對應(yīng)高8位,低地址對應(yīng)低8位,但是操作數(shù)本身一般存放在內(nèi)存的數(shù)據(jù)段。默認段地址為DS。段地址*10+偏移地址4第二章微型機指令系統(tǒng)第一節(jié) 尋址方式一、立即尋址二、寄存器尋址三、直接尋址(存儲器尋址)四、寄存器間接尋址(存儲器尋址)MOV AX,BX直接尋址指令在指令的操作碼后面沒有直接給出操作數(shù)的偏移地址,而是寄存器(DI、SI、BX、BP)存放操作數(shù)16位偏移地址。存儲器操作數(shù)的尋址方式中,數(shù)據(jù)都存放于存儲單元中,指令操作過程中需要BIU通

4、過一個總線周期的訪問,才能獲取操作數(shù)。5第二章微型機指令系統(tǒng)第一節(jié) 尋址方式一、立即尋址二、寄存器尋址三、直接尋址四、寄存器間接尋址五、變址尋址 變址寄存器(SI、DI)的內(nèi)容加上指令中給出的位移量,得到操作數(shù)的有效地址。MOV BX,SI+1003H 變址尋址指令的幾種不同形式 MOVAL , TABLESI MOV AL , SI+TABLE MOV AL , SI+TABLE6變址尋址舉例MOV AX,BX+SI 操作如圖所示 數(shù)據(jù)段3000H:0000H3000H:3000H34H12HAHAL20H00HBX+10H00HSI+ 3 0 0 0 0(段基址)+ 3 0 0 0(偏移地

5、址) 7第二章微型機指令系統(tǒng)第一節(jié) 尋址方式一、立即尋址二、寄存器尋址三、直接尋址四、寄存器間接尋址五、變址尋址六、基址尋址 基址尋址和變址尋址類似,不同之處在于指令使用基址寄存器(BX、BP)的內(nèi)容加上指令中給出的位移量,而不是變址寄存器(SI、DI)。8第二章微型機指令系統(tǒng)第一節(jié) 尋址方式一、立即尋址二、寄存器尋址三、直接尋址四、寄存器間接尋址五、變址尋址六、基址尋址七、基址-變址尋址 基址寄存器(BX、BP)的內(nèi)容、變址寄存器(SI、DI)的內(nèi)容和指令中給出的位移量三者相加,得到操作數(shù)的有效地址。MOV AX,COUNTBXSIMOV AX,BX+COUNTSI MOV AX,BX+SI

6、+COUNT MOV AX,BXCOUNTSI MOV AX,BX+SICOUNT MOV AX,COUNTSIBX9第二章微型機指令系統(tǒng)第一節(jié) 尋址方式一、立即尋址二、寄存器尋址三、直接尋址四、寄存器間接尋址五、變址尋址六、基址尋址七、基址-變址尋址MOV AX,CountBXSIBX: 1000HSI: 0B00H Count: 0500H基址-變址尋址方式是前面兩種尋址方式的結(jié)合指令中規(guī)定一個基址寄存器(BP、BX)和一個變址寄存器(SI、DI),同時給出一個8位或者16位的位移量,將三者的內(nèi)容相加就得到了操作數(shù)的偏移地址(有效地址、邏輯地址、EA)。10第二章微型機指令系統(tǒng)第一節(jié) 尋址

7、方式第二節(jié) 8086/8088指令系統(tǒng)數(shù)據(jù)傳送指令算術(shù)運算指令邏輯運算和移位指令串操作指令控制轉(zhuǎn)移指令處理器控制指令8086總共有90多種基本指令,按照功能,可分為六大類:11第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令輸入、輸出指令目標地址傳送指令標志傳送指令傳送指令是將數(shù)據(jù)送寄存器或者存儲單元中;在寄存器之間、寄存器與存儲器之間進行數(shù)據(jù)傳送。按照其功能不同,可分為:12第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(一)通用傳送指令指令格式MOV D ,S寄存器 存儲器 段寄存器 (代碼段寄存 器cs除外)寄存器 存儲器 段寄存器 立即數(shù)注:不能用MOV指令直接完

8、成以下傳遞存儲單元之間的傳遞立即數(shù)至段寄存器的傳遞段寄存器之間的傳遞若想實現(xiàn)上述傳輸,必須使用兩條MOV指令來實現(xiàn):DEST:目標操作數(shù);SRC:源操作數(shù) D S1. MOV (Movement) 一般傳送指令將源操作數(shù)送入指定目的操作數(shù)13舉例存儲單元之間的傳送(MEM1 MEM2 ):MOV AX, MEM1 ; 先將MEM1傳送至通用寄存器MOV MEM2, AX; 先將通用寄存器傳送至MEM2段寄存器之間的傳遞(DS ES ):MOV AX, DS; 段寄存器傳送至通用寄存器MOV ES, AX; 從通用寄存器傳送到段寄存器同樣可以實現(xiàn)立即數(shù)至段寄存器的傳輸間接傳遞舉例:14第二節(jié) 8

9、086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(一)通用傳送指令1. MOV (Movement) 一般傳送指令2. PUSH 入棧指令指令格式PUSH s操作(SP)(SP)-2;(SP)+1:(SP) s例: PUSH AX 已知:AX=9ABCH; SS=3400H; SP=0562H;9AHBCH功能:將堆棧指針上移兩個字節(jié)后將源操作數(shù)壓入堆棧 SS*10+SP冒號前后表示兩個地址連續(xù)的儲存單元15第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(一)通用傳送指令1. MOV (Movement) 一般傳送指令2. PUSH 入棧指令3. POP 出棧指令(LIFO)指令格式POP d操作

10、d (SP)+1:(SP) (SP)(SP)+2;例: POP AX 已知: AX=9ABCH; SS=3400H; SP=0560H;ALAH9AHBCH將棧頂內(nèi)容彈到目的操作數(shù)中,然后堆棧的棧頂指針下移兩個字節(jié) 16第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(一)通用傳送指令1. MOV (Movement) 一般傳送指令2. PUSH 入棧指令3. POP 出棧指令XCHG(Exchange) 交換指令指令格式XCHG d,S;d s寄存器 寄存器寄存器 存儲器例:功能:將源操作數(shù)、目的操作數(shù)內(nèi)容互換MOV AX,BX操作如圖所示 BHBLBXAHALAX兩個操作數(shù)不能同為存儲器

11、操作數(shù)。段寄存器的內(nèi)容不能參加交換。注17第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(一)通用傳送指令5. XLAT(Translate) 字節(jié)查表指令指令格式XLAT s_table查表方式功能:ALDS:BX+AL。把BX的內(nèi)容作為數(shù)據(jù)段中數(shù)據(jù)表的首地址,AL內(nèi)容為查表的項數(shù),將其對應(yīng)的字節(jié)單元的值再送給AL 3000H:0000H3000H:2000H3000H:2005H數(shù)據(jù)段+2000BX表首址查表項+AL05HAL05H34H34H18第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(一)通用傳送指令1. MOV (Movement) 一般傳送指令2. PUSH 入棧指令

12、3. POP 出棧指令XCHG(Exchange) 交換指令5. XLAT(Translate) 字節(jié)查表指令19第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(一)通用傳送指令(二)輸入輸出指令1. IN I/O口輸入指令指令格式IN ACC , port; (ACC) (port)IN AL , data8 IN AX , data8 IN AL , DX IN AX , DX具體形式輸入指令I(lǐng)N用于從I/O端口接收數(shù)據(jù)輸入指令從I/O端口port中輸入一個字節(jié)到累加器。20第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(二)輸入輸出指令1. IN I/O口輸入指令指令格式OUT

13、port,ACC ; (port) (ACC)OUT data8 , AL OUT data8 , AX OUT DX , AL OUT DX , AX具體形式OUT或者IN指令,無論接收到的數(shù)據(jù)或者準備發(fā)送的數(shù)據(jù)都必須在累加器中AX(字)或AL(字節(jié))中,所以這兩條指令時累加器專用指令。2. OUT I/O口輸出指令輸出指令OUT用于從I/O端口輸出數(shù)據(jù)輸出指令從累加器輸出一個字節(jié)到I/O端口port。21第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(一)通用傳送指令(二)輸入輸出指令(三)目標地址傳送指令1. LEA 偏移地址傳送指令指令格式LEA reg16 , mem16 通用寄

14、存器 AX、BX、CX、DX、BP 、SP、 DI、 SI例:LEA AX , BPDI LEA BX , BUFFER LEA DX , BETABXSI LEA CX , SI+100AHMOV BX , OFFSET BUFFER功能:將源操作數(shù)的有效地址送指定寄存器 22第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(三)目標地址傳送指令1. LEA 偏移地址傳送指令LEA、MOV的區(qū)別LEA CX , SI+100AHMOV CX , SI+100AH已知:DS: 2000H,SI: 0030HCX1234CX10 3AMOV指令時將內(nèi)容傳送到CX,而LEA將偏移地址傳送到CX。

15、23第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(三)目標地址傳送指令1. LEA 偏移地址傳送指令2. LDS DS段指針裝入指令LDS:LDS REG,MEM 功能:將MEM所對應(yīng)的雙字存儲單元數(shù)據(jù)的高字送入DS,低字送入指令指定的寄存器 。MEM為雙字數(shù)據(jù)。LDS BX,DI指令執(zhí)行如圖所示 :數(shù)據(jù)段4000H:0000H0100HDIXXXXHBXXXXXHDS4000H:0100H55H66H33H44H雙字6655HBX4433HDS3.LES的原理與LDS相似24第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(一)通用傳送指令(二)輸入輸出指令(三)目標地址傳送指令(四

16、)標志傳送指令1. LAHF 將標志位裝入AH指令指令格式 LAHF 功能:將標志寄存器的低8位送入AH寄存器。CFPFAFZFSFTFIFDFOF15118740AH25第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(四)標志傳送指令2. SAHF 將AH存入標志位指令指令格式 SAHF 功能:將AH寄存器送入標志寄存器的低8位。CFPFAFZFSFTFIFDFOF15118740AH1. LAHF 將標志位裝入AH指令26第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(四)標志傳送指令2. SAHF1. LAHF3. PUSHF 標志位入棧指令指令格式 PUSHF 操作(SP)(S

17、P)-2;(SP)+1:(SP) flags4. POPF 標志位出棧指令指令格式 POPF 操作flags (SP)+1:(SP) (SP)(SP)+2;將標志寄存器內(nèi)容壓入棧頂將棧頂內(nèi)容送標志寄存器27第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令(一)通用傳送指令1. MOV (Movement) 一般傳送指令2. PUSH 入棧指令3. POP 出棧指令XCHG(Exchange) 交換指令5. XLAT(Translate) 字節(jié)查表指令(二)輸入輸出指令1. IN I/O口輸入指令2. OUT I/O口輸出指令(三)目標地址傳送指令1. LEA 2. LDS 3. LES (四

18、)標志傳送指令1. LAHF 2. SAHF 3. PUSHF 4. POPF 28第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令二、算術(shù)運算指令加法運算指令減法運算指令乘法運算指令除法運算指令轉(zhuǎn)換指令(一)加法運算指令A(yù)DD、ADC、INC、AAA、DAA1. ADD 不帶進位加法指令指令格式ADD d , s; d d+s寄存器 存儲器寄存器 存儲器 立即數(shù)29第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(一)加法運算指令1. ADD 不帶進位加法指令例:ADD CL , 10 ADD DX , DI ADD AX , MEM ADD DATABX , AL ADD ALPHAD

19、I , 30HMOV AL , 7EH MOV BL , 5BH ADD AL , BLAL= ?CFPFAFZFSFTFIFDFOF15118740注:結(jié)果影響狀態(tài)標志位CF = 0 PF = AF = ZF = SF = OF =D9H01011溢出標志位符號標志位:最高位為1零標志位:結(jié)果為0時,為1輔助進位:低8位向高8位進位奇偶標志位:1的個數(shù)偶數(shù),1進位標志位:最高位進位或借位30第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(一)加法運算指令1. ADD 不帶進位加法指令2. ADC 帶進位加法指令指令格式ADC d , s; d d+s+CF寄存器 存儲器寄存器 存儲器 立

20、即數(shù)實現(xiàn)目的操作數(shù)加源操作數(shù),再加上進位標志位CF的內(nèi)容,結(jié)果存放于目的操作數(shù)中 31第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(一)加法運算指令2. ADC 帶進位加法指令CFPFAFZFSFTFIFDFOF15118740注:結(jié)果影響狀態(tài)標志位已知:CS=1000H , DS=2000H , SS =3000H , ES=4000H。 BX=1200H , 狀態(tài)標志位均為1 執(zhí)行程序 ADCBX+106BH,5678H 求 :存儲器物理地址 運算后結(jié)果 標志位內(nèi)容2226BH2226BH89BDH(3344+5678+1)CF = ? PF = ? AF = ? ZF = ? SF

21、 = ? OF = ?000011BX對應(yīng)DS段寄存器32第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(一)加法運算指令1. ADD3. INC 加1指令2. ADC指令格式INC d ; d d+1注:結(jié)果影響除CF外狀態(tài)標志位寄存器 存儲器該指令實現(xiàn)了操作數(shù)在自身基礎(chǔ)上加1 33第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(一)加法運算指令1. ADD3. INC 加1指令2. ADC4. AAA 加法的ASCII碼、非壓縮BCD碼調(diào)整指令指令格式 AAA 操作:如果AL的低4位大于9或(AF)=1,則:(AL)=(AL)+6(AH)=(AH)+1(AF)=(CF)=1 且AL

22、高4位清零。否則:(CF)=(AF)=0 AL高4位清零。注:結(jié)果只影響標志位CF、AF。34第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(一)加法運算指令4. AAA 加法的ASCII碼、非壓縮BCD碼調(diào)整指令(1)非壓縮BCD碼調(diào)整非壓縮BCD碼:一個字節(jié)存放一位十進制數(shù),即低四位0000-1001表示0-9,高四位總為0。MOV AL , 07H MOV BL , 08H MOV AH , 00H ADD AL , BL AAA;AL、BL各存放1個非壓縮BCD碼;(AL)=05H,(AH)=01H, (CF)=(AF)=1;(AL)=0FH, (CF)=(AF)=0CF進位標志位

23、(最高位發(fā)生進位),AF輔助進位位(低八位向高八位進位)。個位存放在AL,十位存放在AH.該匯編指令后面不寫操作數(shù),但實際上隱含累加器操作數(shù)AL和AH.35第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(一)加法運算指令4. AAA 加法的ASCII碼、非壓縮BCD碼調(diào)整(1)非壓縮BCD碼調(diào)整(2)ASCII碼調(diào)整012345678930H31H32H33H34H35H36H37H38H39H計算 4609+3875=?Datasegmentstring1 db 9064 string2 db 5783 sum dd 1 dup(?)Dataends36第二節(jié) 8086/8088指令系統(tǒng)

24、二、算術(shù)運算指令(一)加法運算指令1. ADD3. INC2. ADC4. AAA5. DAA 十進制、壓縮BCD碼調(diào)整指令指令格式 DAA 如果AL寄存器中低4位=10或(AF)=1,則(AL)=(AL)+6 且(AF)=1; 如果(AL)=0A0H 或(CF)=1,(高4位=10 ) 則(AL)=(AL)+60H 且(CF)=1。操作:注:結(jié)果影響狀態(tài)標志位AF、CF、SF、ZF、 PF、OF該指令同樣不帶操作數(shù),實際上隱含寄存器操作數(shù)AL.壓縮BCD碼指一個字節(jié)可以存放兩位BCD碼,高4位和低4位各存放一位,這樣兩個BCD碼相加后可能得到不正確的BCD碼。輔助進位位:第4位對高4位進位標

25、志位:最高位37壓縮BCD碼:一個字節(jié)存放兩位BCD碼,即低四位存放1位 BCD碼,高四位存放1位。第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(一)加法運算指令5. DAA十進制、壓縮BCD碼調(diào)整指令MOV AL , 07H MOV BL , 08H MOV AH , 00H ADD AL , BL DAA;AL、BL各存放1個BCD碼;(AL)=15H,(AH)=00H, (AF)=1, (CF)=0;(AL)=0FH, (CF)=(AF)=01. ADD3. INC2. ADC4. AAA38第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(一)加法運算指令(二)減法運算指令SU

26、B、SBB、DEC、NEG、CMP、AAS、DAS1. SUB 不帶借位減法指令指令格式SUB d , s; d d-s寄存器 存儲器寄存器 存儲器 立即數(shù)例:SUB AL , 37H SUB BX , DX SUB CX , VAR1 SUB ARRAYSI , AX SUB BETABXDI , 51239第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(二)減法運算指令1. SUB 不帶借位減法指令2. SBB 帶借位減法指令指令格式SBB d , s; d d-s-CF寄存器 存儲器寄存器 存儲器 立即數(shù)例:SBB BX , 1000 SBB CX , DX SBB AL , DAT

27、ASI SBB DISPBP , BL SBB SI+6 , 9640第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(二)減法運算指令2. SBB 帶借位減法指令CFPFAFZFSFTFIFDFOF15118740注:結(jié)果影響狀態(tài)標志位已知:CS=1000H , DS=2000H , SS =3000H , ES=4000H。 BP=4567H , BX=0FEDCH , 狀態(tài)標志位均為1 執(zhí)行程序 SBB BP+2011H , BX 求 :存儲器物理地址 運算后結(jié)果 標志位內(nèi)容36578H36578H3467HCF = ? PF = ? AF = ? ZF = ? SF = ? OF =

28、 ?111000BP對應(yīng)SS段寄存器結(jié)果中1的個數(shù)為偶數(shù)413. DEC 減1指令指令格式DEC d ; d d-1注:結(jié)果影響除CF外狀態(tài)標志位例:DEC BL DEC CX DEC BYTE PTRBX DEC WORD PTRBPDI寄存器 存儲器第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(二)減法運算指令1. SUB2. SBB423. DEC 減1指令第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(二)減法運算指令1. SUB2. SBB4. NEG 求補指令指令格式NEG d ; d 0-d寄存器 存儲器例:NEG BL NEG AX NEG BYTE PTRBPSI

29、NEG WORD PTRDI+20433. DEC 減1指令第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(二)減法運算指令1. SUB2. SBB4. NEG 求補指令注:結(jié)果影響所有狀態(tài)標志位作用:求負數(shù)絕對值NEG AL ;AL=FFH(為-1的補碼)AL=0-FFH=01H443. DEC 減1指令第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(二)減法運算指令1. SUB2. SBB4. NEG 求補指令5. CMP 比較指令指令格式CMP d , s; d-s寄存器 存儲器寄存器 存儲器 立即數(shù)注:只做減法,不存結(jié)果,影響狀態(tài)標志位,與減法指令SUB不同。例:CMP AL

30、, 0AH CMP CX , DI CMP AX , AREA1CMP BX+5 , SI CMP GAMMA , 100453. DEC第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(二)減法運算指令1. SUB2. SBB5. CMP6. AAS 減法的ASCII碼、非壓縮BCD碼調(diào)整指令4. NEG指令格式 AAS 操作:如果AL的低4位大于9或(AF)=1,則:(AL)=(AL)-6(AH)=(AH) - 1(AF)=(CF)=1 且AL高4位清零。否則:(CF)=(AF)=0 AL高4位清零。注:結(jié)果只影響標志位CF、AF。46MOV AX , 0103H MOV BL , 04

31、H SUB AL , BL AAS3. DEC第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(二)減法運算指令1. SUB2. SBB5. CMP6. AAS 減法的ASCII碼、非壓縮BCD碼調(diào)整指令4. NEG例:13 - 4=9;(AX)=01FFH,(CF)=(AF)=1;(AX)=0009H,(CF)=(AF)=1(AL)=(AL)-6(AH)=(AH) - 1(AF)=(CF)=1 且AL高4位清零。473. DEC第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(二)減法運算指令1. SUB2. SBB5. CMP6. AAS 減法的ASCII碼、非壓縮BCD碼調(diào)整指令4.

32、 NEG7. DAS 減法的十進制、壓縮BCD碼調(diào)整指令指令格式 DAS 如果AL寄存器中低4位大于9或(AF)=1,則(AL)=(AL) - 6 且(AF)=1;(低4位減6) 如果(AL)=0A0H 或(CF)=1, 則(AL)=(AL) - 60H 且(CF)=1。 (高4位減6)操作:注:結(jié)果影響狀態(tài)標志位AF、CF、SF、ZF、 PF、OF。483. DEC第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(二)減法運算指令1. SUB2. SBB5. CMP6. AAS 減法的ASCII碼、非壓縮BCD碼調(diào)整指令4. NEG7. DAS 減法的十進制、壓縮BCD碼調(diào)整指令例:83

33、- 38=45MOV AL , 83H MOV BL , 38H SUB AL , BL DAS;(AL)=4BH, (AF)=1 (CF)=0;(AL)=45H, (AF)=1 (CF)=0低4位大于949第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(一)加法運算指令(二)減法運算指令A(yù)DD、ADC、INC、AAA、DAASUB、SBB、DEC、NEG、CMP、AAS、DAS5051第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(一)加法運算指令(二)減法運算指令(三)乘法運算指令MUL、IMUL、AAM1. MUL 無符號數(shù)乘法指令指令格式MUL s 操作字節(jié)乘法 (AX)(AL

34、)*s (兩個8位相乘,結(jié)果 可能是16位,儲存在AX中) 字乘法 (DX,AX)(AX)*s(兩個16位相乘,結(jié)果可能是32位,結(jié)果高16位存DX,低16位存AX中)注:運算結(jié)果高位(AH、DX)為0,則OF=CF=0, 否則OF=CF=1( OF,溢出,超出8或16的表示范圍) ,標志位SF、ZF、AF、PF不確定。52第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(三)乘法運算指令1. MUL 無符號數(shù)乘法指令指令格式MUL s 寄存器 存儲器例:MUL AL (AL*AL) MUL BX (AX*BX) MUL BYTE PTRDI+6(AL*存儲器8位) MUL WORD PTR

35、 ALPHA (AX*存儲器16位) MOV AL , 14H MOV CL , 05H MUL CL;14H*05H=20*5=100=64H ;(AX)=0064H,(CF)=(OF)=0 編程演示53第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(三)乘法運算指令1. MUL 無符號數(shù)乘法指令2. IMUL 有符號數(shù)乘法指令指令格式IMUL s 操作字節(jié)乘法 (AX)(AL)*s 字乘法 (DX,AX)(AX)*s注:運算結(jié)果高位(AH、DX)為有效數(shù)字而非符號擴展,則OF=CF=1,否則OF=CF=0。 標志位SF、ZF、AF、PF不確定。S組成寄存器 存儲器例:IMUL DL I

36、MUL CX IMUL BYTE PTR GAMMA IMUL WORD PTR SI+BP54第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(三)乘法運算指令1. MUL 無符號數(shù)乘法指令2. IMUL 有符號數(shù)乘法指令(編程演示)MOV AX , 04E8H MOV BX , 4E20H IMUL BX; 04E8H*4E20H =(+1256)*(+20000) =25120000 (32767,必須使用32位來寄存) =17F4D00H ;(DX)=017FH, (AX)=4D00H, (CF)=(OF)=1 55第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(三)乘法運算指令

37、1. MUL2. IMUL3. AAM 乘法的ASCII碼、非壓縮BCD碼調(diào)整指令指令格式 AAM 操作:(AH)(AL)/0AH ; 商送AH(AL)(AL)%0AH ; 余數(shù)送AL (%取余)注:AL(低位)影響標志位SF、ZF和PF,對AF、CF、OF不確定。MOV AL , 07H MOV BL , 09H MUL BL AAM;AL=07H(7)*09H(9)=63=3FH ;AH=06H,AL=03H; SF=0, ZF=0, PF=1 (編程演示)56第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(一)加法運算指令(二)減法運算指令(三)乘法運算指令(四)除法運算指令DIV、

38、IDIV、AAD1. DIV 無符號數(shù)除法指令指令格式DIV s 操作字節(jié)除法(s,8位) (AL)(AX)/s ;( AL商) (AH)(AX) %s ;(AH 余數(shù)) 字除法(s,16位) (AX)(DX:AX)/s; ( AX商) (DX)(DX:AX) %s ;( DX余數(shù))注:狀態(tài)標志位SF、ZF、AF、PF、CF和OF不確定。57第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(四)除法運算指令1. DIV 無符號數(shù)除法指令指令格式DIV s 寄存器 存儲器例:DIV BL DIV CX DIV BYTE PTR DATA DIV WORD PTR DI+BXMOV AX ,0F

39、05H MOV DX ,068AH MOV CX ,08E9H DIV CX;068A0F05H/08E9H=BBE1H073CH ;(AX)=BBE1H,(DX)=073CH(DX:AX) 32位數(shù)除以(CX)16位數(shù)58第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(四)除法運算指令1. DIV 無符號數(shù)除法指令2. IDIV 有符號數(shù)除法指令指令格式IDIV s 操作字節(jié)除法 (AL)(AX)/s ; (AH)(AX) %s 字除法 (AX)(DX:AX)/s; (DX)(DX:AX) %s注:余數(shù)符號與被除數(shù)符號相同, 狀態(tài)標志位SF、ZF、AF、PF、CF和OF不確定。S組成寄存

40、器 存儲器例:IDIV CL IDIV BX IDIV BYTE PTR SI IDIV WORD PTR TABLE59第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(四)除法運算指令1. DIV2. IDIV3. AAD 除法的ASCII碼、非壓縮BCD碼調(diào)整指令指令格式 AAD 操作:(AL)(AH)*0AH+(AL)(將AH的內(nèi)容后面加0)(AH)0注:影響標志位SF、ZF和PF,對AF、CF、OF不確定。MOV AX , 0703H MOV BL , 02H AAD DIV BL AAM;AL=07H(7)*0AH(10)+03H(3)=73=49H ;AL=24H(36), A

41、H=01H(1)指令順序 AAD-DIV-AAM;AH=AL/0AH=03H, AL=AL/0AH06H73/260第二節(jié) 8086/8088指令系統(tǒng)二、算術(shù)運算指令(一)加法運算指令(二)減法運算指令(三)乘法運算指令(四)除法運算指令(五)轉(zhuǎn)換指令符號位擴展1. CBW 字節(jié)字轉(zhuǎn)換指令(8位16位)指令格式 CBW 操作如果 (AL)0,則(AH)FFH;(前面加1) 否則 (AH)0 (前面加0)。;AL AX2. CWD 字雙字轉(zhuǎn)換指令( 16位32位)指令格式 CWD 操作如果 (AX)0,則(DX)FFFFH; 否則 (DX)0 。;AX DX:AX61第二節(jié) 8086/8088指

42、令系統(tǒng)二、算術(shù)運算指令(一)加法運算指令(二)減法運算指令(三)乘法運算指令(四)除法運算指令(五)轉(zhuǎn)換指令編寫程序段 (-2000)(- 421)MOVAX,-2000 MOV BX,-421 IDIV BXMOVAX,-2000 CWD (將AX擴展到32位) MOV BX,-421 (-28) IDIV BX; (AX)=4=0004H(商); (DX)=-316=FBC1H(余數(shù))62第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令三、邏輯運算與移位指令二、算術(shù)運算指令(一)邏輯運算指令A(yù)ND、OR、NOT、XOR、TEST1. AND 邏輯“與”指令指令格式AND d , s; d

43、 d&s寄存器 存儲器寄存器 存儲器 立即數(shù)例:AND AL , 00001111B AND CX , DI AND SI , MEM_NAME AND ALPHADI, AX AND BXSI, 0FFFEHd*s,表示條件同時具備時,結(jié)果才會發(fā)生,串聯(lián)目標操作數(shù)和源操作數(shù)不能同時為存儲器。63第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(一)邏輯運算指令1. AND 邏輯“與”指令注:影響標志位SF、ZF和PF, 將CF、OF置0,使AF不確定。作用:(1)邏輯“與”運算(2)屏蔽某一位或若干位MOV AL , 6 AND AL , 0FH; AL00110110B; AL00

44、000110B將AL中的高四位屏蔽掉,將AL中的低四位保留。64第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(一)邏輯運算指令1. AND 邏輯“與”指令2. TEST 測試指令指令格式TEST d , s; d&s寄存器 存儲器寄存器 存儲器 立即數(shù)例:TEST BH , 7 TEST SI , BP TEST SI , CH TEST BXDI, 6ACEH目標操作數(shù)和源操作數(shù)不能同時為存儲器。操作實質(zhì)上與AND指令相同,但是不把運算結(jié)果送入到目標操作數(shù),與比較指令CMP類似。只是影響狀態(tài)標志位。65第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(一)邏輯運算指令1.

45、 AND 邏輯“與”指令2. TEST 測試指令I(lǐng)N AL , PORT TEST AL , 00000001B JNZ NEXT. . NEXT: .注:影響標志位SF、ZF和PF, 將CF、OF置0,使AF不確定。; 讀I/O口PORT; 測試AL最低位; 非0轉(zhuǎn)移(AL最低位為1)66第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(一)邏輯運算指令1. AND 邏輯“與”指令3. OR 邏輯“或”指令2. TEST 測試指令指令格式OR d , s; d ds寄存器 存儲器寄存器 存儲器 立即數(shù)例:OR BL , 0F6H OR AH , BL OR CL , BETABXSI

46、 OR GAMMASI, DX OR MEM_BYTE , 80Hd*s,表示條件具備一個時,結(jié)果才會發(fā)生,并聯(lián)目標操作數(shù)和源操作數(shù)不能同時為存儲器。67第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(一)邏輯運算指令1. AND 邏輯“與”指令3. OR 邏輯“或”指令2. TEST 測試指令注:影響標志位SF、ZF和PF, 將CF、OF置0,使AF不確定。作用:(1)邏輯“或”運算(2)將某一位或若干位置1MOV AL , 06H OR AL , 30H; AL00000110B; AL00110110B(30H=00110000)(3)測試某數(shù)的標志位SF、ZF和PF68第二節(jié)

47、 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(一)邏輯運算指令1. AND 邏輯“與”指令3. OR 邏輯“或”指令2. TEST 測試指令大寫字母小寫字母A=41H=01000001BB=42H=01000010BZ=5AH=01011010Ba=61H=01100001Bb=61H=01100010Bz=7AH=01111010B大小寫字母的轉(zhuǎn)換大寫字母小寫字母小寫字母大寫字母AND AL,110111111OR AL,00100000069第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(一)邏輯運算指令1. AND4. XOR 邏輯“異或”指令2. TEST3. OR指令

48、格式XOR d , s; d ds寄存器 存儲器寄存器 存儲器 立即數(shù)例:XOR DI , 23F6H XOR SI , DX XOR CL , BUFFER XOR MEMBX, AX XOR TABLEBPSI , 3DHds+ds, d和s相同取0,不同取1.70第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(一)邏輯運算指令1. AND4. XOR 邏輯“異或”指令2. TEST3. OR注:影響標志位SF、ZF和PF, 將CF、OF置0,使AF不確定。作用:(1)邏輯“異或”運算;(2)將寄存器內(nèi)容清零;XOR AX,AX; AX清零,CF清零XOR CX,CX; CX清零

49、,CF清零可將“求反”的位和1進行異或,而將保持不變的位和0進行異或。71第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(一)邏輯運算指令1. AND5. NOT 邏輯“取反”指令2. TEST3. OR指令格式NOT d寄存器 存儲器例:NOT AH NOT CX NOT BYTE PTR BP NOT WORD PTR COUNT4. XOR; d d注:運算結(jié)果不影響標志位。字節(jié)求反 (d)=FFH-(d)字 求反 (d)=FFFFH-(d)72第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令三、邏輯運算與移位指令二、算術(shù)運算指令(一)邏輯運算指令(二)移位指令1. SHL

50、邏輯左移指令指令格式SHL d , 1SHL d,CLd7 d0CF操作0例:SHL AH , 1 SHL SI , CL SHL WORD PTR BP+5 , 1 SHL BYTE PTR DATA , CL左移1位左移n位, (CL)=n操作數(shù)的最高位進入標志CF,最低位補0.73第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(二)移位指令1. SHL 邏輯左移指令注:影響標志位CF、OF ,對其他位無影響。 當移位次數(shù)為1,移位后目標操作數(shù)最高位與CF不同,OF為1;否則為0。 當移位次數(shù)為CL,OF為不確定。OF表示符號位是否改變。作用:(1)邏輯左移(2)左移一次無符號數(shù)

51、乘2MOV AL , 6 SHL AL , 1; AL00000110B; AL00001100B=12(左移一次相當于乘2)MOV AL , 6 MOV CL , 3 SHL AL , CL; AL00110000B=48演示74第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(二)移位指令1. SHL 邏輯左移指令2. SHR 邏輯右移指令指令格式SHR d , 1SHR d,CL操作d7 d0CF0例:SHR BL , 1 SHR AX , CL SHR BYTE PTR DI+BP , 1 SHR WORD PTR BLOCK , CL操作數(shù)的最低位放到CF,最高位補075第二

52、節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(二)移位指令1. SHL 邏輯左移指令2. SHR 邏輯右移指令注:影響標志位CF、OF ,對其他位無影響。 當移位次數(shù)為1,移位后目標操作數(shù)最高位與次高位不同(次高位為1),OF為1;否則為0。 當移位次數(shù)為CL,OF為不確定。OF表示符號位是否改變。作用:(1)邏輯右移(2)右移一次無符號數(shù)除以2MOV AX , 0100H MOV CL , 2 SHR AX , CL; AX0000000001000000B=40H=64; AX0000000100000000B=256演示76第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令

53、(二)移位指令1. SHL 邏輯左移指令2. SHR 邏輯右移指令3. SAL 算術(shù)左移指令指令格式SAL d , 1SAL d,CL操作d7 d0CF0例:SAL AH , 1 SAL SI , CL SAL WORD PTR BP+5 , 1 SAL BYTE PTR DATA , CL邏輯左移和算術(shù)左移操作完全一致。77第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(二)移位指令1. SHL 邏輯左移指令2. SHR 邏輯右移指令3. SAL 算術(shù)左移指令4. SAR 算術(shù)右移指令指令格式SAR d , 1SAR d,CL操作d7 d0CF與邏輯右移的區(qū)別是最高位保持不變,也就

54、是符號位保持不變算術(shù)右移一位相當于有符號數(shù)除以278第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令三、邏輯運算與移位指令二、算術(shù)運算指令(一)邏輯運算指令(三)循環(huán)移位指令(二)移位指令1. ROL 循環(huán)左移指令指令格式ROL d , 1ROL d,CLd7 d0CF操作例:ROL BH , 1 ROL DX , CL ROL WORD PTR DI , 1 ROL BYTE PTR ALPHA , CL最高位移到CF,同時最高位移到最低位形成循環(huán)。79第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(二)移位指令1. SHL 邏輯左移指令2. SHR 邏輯右移指令3. SAL 算

55、術(shù)左移指令4. SAR 算術(shù)右移指令(三)循環(huán)移位指令1. ROL 循環(huán)左移指令注:影響標志位CF、OF ,對其他位無影響。 當移位次數(shù)為1,移位后目標操作數(shù)最高位與CF不同,OF為1;否則為0。 當移位次數(shù)為CL,OF為不確定。OF表示符號位是否改變。80第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(二)移位指令1. SHL 邏輯左移指令2. SHR 邏輯右移指令3. SAL 算術(shù)左移指令4. SAR 算術(shù)右移指令(三)循環(huán)移位指令1. ROL 循環(huán)左移指令2. ROR 循環(huán)右移指令指令格式ROR d , 1ROR d,CL操作d7 d0CF最低位移到CF,同時最低位移到最高位形

56、成循環(huán)。81第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(二)移位指令1. SHL 邏輯左移指令2. SHR 邏輯右移指令3. SAL 算術(shù)左移指令4. SAR 算術(shù)右移指令(三)循環(huán)移位指令1. ROL 循環(huán)左移指令2. ROR 循環(huán)右移指令注:影響標志位CF、OF ,對其他位無影響。 當移位次數(shù)為1,移位后目標操作數(shù)最高位與次高位不同,OF為1;否則為0。 當移位次數(shù)為CL,OF為不確定。OF表示符號位是否改變。82第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(二)移位指令1. SHL 邏輯左移指令2. SHR 邏輯右移指令3. SAL 算術(shù)左移指令4. SAR 算

57、術(shù)右移指令(三)循環(huán)移位指令1. ROL 循環(huán)左移指令3. RCL 帶進位循環(huán)左移指令2. ROR 循環(huán)右移指令指令格式RCL d , 1RCL d,CLd7 d0CF操作目標操作數(shù)同進位標志一起向左循環(huán)。83第二節(jié) 8086/8088指令系統(tǒng)三、邏輯運算與移位指令(二)移位指令1. SHL 邏輯左移指令2. SHR 邏輯右移指令3. SAL 算術(shù)左移指令4. SAR 算術(shù)右移指令(三)循環(huán)移位指令1. ROL 循環(huán)左移指令3. RCL 帶進位循環(huán)左移指令2. ROR 循環(huán)右移指令4. RCR 帶進位循環(huán)右移指令指令格式RCR d , 1RCR d,CL操作d7 d0CF目標操作數(shù)同進位標志一

58、起向右循環(huán)。84第二節(jié) 8086/8088指令系統(tǒng)一、數(shù)據(jù)傳送指令三、邏輯運算與移位指令二、算術(shù)運算指令四、串操作指令MOVS、CMPS、SCAS、LODS(串裝入)、STOS (串送存)共同特點:1. 源操作數(shù)(源串):偏移地址SI、隱含段DS、允許段超越;目標操作數(shù)(目標串):偏移地址DI、隱含段ES、不允許段超越。2. 每一次操作自動修改地址指針。(DF標志寄存器的方向標志位)(DF)=0,字節(jié)操作指針加1,字操作指針加2; (DF)=1,字節(jié)操作指針減1,字操作指針減2。3. 如指令后加“B”(字節(jié)操作)或“W” (字操作) ,則指令 后不加操作數(shù)。例:MOVSB、CMPSW(復(fù)位)C

59、LD (DF)=0;(置位)STD (DF)=185第二節(jié) 8086/8088指令系統(tǒng)四、串操作指令MOVS、CMPS、SCAS、LODS、STOS共同特點:重復(fù)前綴:REP、REPE(REPZ)、REPNE(REPNZ)1. REP ( Repeat )(重復(fù)循環(huán)的次數(shù)由CX寄存器決定)(1) 與REP相配合的指令有:MOVS、STOS(2) REP的操作:1) 若(CX)=0,則退出REP,否則往下執(zhí)行。 2)執(zhí)行一次串指令; 3)(CX)(CX)-1 4)重復(fù)1)3)86第二節(jié) 8086/8088指令系統(tǒng)四、串操作指令MOVS、CMPS、SCAS、LODS、STOS共同特點:重復(fù)前綴:R

60、EP、REPE/REPZ、REPNE/REPNZ1. REP ( Repeat )2. REPE/REPZ ( Repeat while equal/zero)(1) 相配合的指令有:CMPS、SCAS(2) 操作:1) 若(CX)=0或(ZF)=0,則退出循環(huán),否則往下執(zhí)行。 2)執(zhí)行一次串指令; 3)(CX)(CX)-1 4)重復(fù)1)3)87第二節(jié) 8086/8088指令系統(tǒng)四、串操作指令MOVS、CMPS、SCAS、LODS、STOS共同特點:重復(fù)前綴:REP、REPE/REPZ、REPNE/REPNZ1. REP ( Repeat )2. REPE/REPZ ( Repeat whil

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論