第3章_6 8086指令系統(tǒng)(分支CPU指令)及習題_第1頁
第3章_6 8086指令系統(tǒng)(分支CPU指令)及習題_第2頁
第3章_6 8086指令系統(tǒng)(分支CPU指令)及習題_第3頁
第3章_6 8086指令系統(tǒng)(分支CPU指令)及習題_第4頁
第3章_6 8086指令系統(tǒng)(分支CPU指令)及習題_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、33 指令系統(tǒng)指令系統(tǒng) 按功能分為:按功能分為:數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令算術(shù)運算指令算術(shù)運算指令位處理指令(邏輯運算指令)位處理指令(邏輯運算指令)串操作指令串操作指令控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令處理機控制指令處理機控制指令 控制轉(zhuǎn)移類指令通過改變控制轉(zhuǎn)移類指令通過改變IPIP(和(和CSCS)值,實現(xiàn)程)值,實現(xiàn)程序執(zhí)行順序的改變序執(zhí)行順序的改變控制轉(zhuǎn)移類指令用于實現(xiàn)分支、循環(huán)、過程等程序結(jié)構(gòu),是控制轉(zhuǎn)移類指令用于實現(xiàn)分支、循環(huán)、過程等程序結(jié)構(gòu),是僅次于傳送指令的常用指令僅次于傳送指令的常用指令33 指令系統(tǒng)指令系統(tǒng) 相對尋址方式相對尋址方式指令代碼中提供目的地址指令代碼中提供目的地址相對相對于

2、當前于當前IP的位移量,轉(zhuǎn)的位移量,轉(zhuǎn)移到的目的地址(轉(zhuǎn)移后的移到的目的地址(轉(zhuǎn)移后的IP值)就是當前值)就是當前IP值加上位值加上位移量移量 直接尋址方式直接尋址方式指令代碼中提供目的邏輯地址,轉(zhuǎn)移后的指令代碼中提供目的邏輯地址,轉(zhuǎn)移后的CS和和IP值值直直接接來自指令操作碼后的目的地址操作數(shù)來自指令操作碼后的目的地址操作數(shù) 間接尋址方式間接尋址方式指令代碼中指示寄存器或存儲單元,目的地址從寄存指令代碼中指示寄存器或存儲單元,目的地址從寄存器或存儲單元中器或存儲單元中間接間接獲得獲得代碼段代碼段 段內(nèi)轉(zhuǎn)移段內(nèi)轉(zhuǎn)移近轉(zhuǎn)移(近轉(zhuǎn)移(near)在當前代碼段在當前代碼段64KB范圍內(nèi)轉(zhuǎn)移(范圍內(nèi)轉(zhuǎn)移

3、( 32KB范范圍)不需要更改圍)不需要更改CS段地址,只要改變段地址,只要改變IP偏移地址偏移地址 段內(nèi)轉(zhuǎn)移段內(nèi)轉(zhuǎn)移短轉(zhuǎn)移(短轉(zhuǎn)移(short)轉(zhuǎn)移范圍可以用一個字節(jié)表達,在段內(nèi)轉(zhuǎn)移范圍可以用一個字節(jié)表達,在段內(nèi)128127范圍的轉(zhuǎn)移范圍的轉(zhuǎn)移代碼段代碼段代碼段代碼段 實際編程時,匯編程序會根據(jù)目標地址的屬實際編程時,匯編程序會根據(jù)目標地址的屬性,性,自動處理自動處理成短轉(zhuǎn)移、近轉(zhuǎn)移或遠轉(zhuǎn)移成短轉(zhuǎn)移、近轉(zhuǎn)移或遠轉(zhuǎn)移 程序員可用操作符程序員可用操作符short、near ptr 或或far ptr 強制成為需要的轉(zhuǎn)移類型強制成為需要的轉(zhuǎn)移類型 段間轉(zhuǎn)移段間轉(zhuǎn)移遠轉(zhuǎn)移(遠轉(zhuǎn)移(far)從當前代碼

4、段跳轉(zhuǎn)到另一個代碼段,可從當前代碼段跳轉(zhuǎn)到另一個代碼段,可以在以在1MB范圍范圍需要更改需要更改CS段地址和段地址和IP偏移地址,目標偏移地址,目標地址必須用一個地址必須用一個32位數(shù)表達,叫做位數(shù)表達,叫做32位遠位遠指針,它就是邏輯地址指針,它就是邏輯地址五、程序轉(zhuǎn)移五、程序轉(zhuǎn)移指令指令無條件轉(zhuǎn)移和條件轉(zhuǎn)移無條件轉(zhuǎn)移和條件轉(zhuǎn)移無條件轉(zhuǎn)移無條件轉(zhuǎn)移:轉(zhuǎn)移發(fā)生不需要狀態(tài)信息,執(zhí)行JMP指令發(fā)生的轉(zhuǎn)移。Part1JMP AAPart2AA XXXXPart3無條件轉(zhuǎn)移指令轉(zhuǎn)移跳過的地址下一條執(zhí)行指令條件轉(zhuǎn)移條件轉(zhuǎn)移:當條件滿足是發(fā)生轉(zhuǎn)移,否則順序執(zhí)行下一條指令。Part1JCC AAXXXXPa

5、rt2AA XXXPart3條件轉(zhuǎn)移指令轉(zhuǎn)移跳過的地址下一條執(zhí)行指令條件成立?NoYes轉(zhuǎn)移轉(zhuǎn)移指令及尋址方式指令及尋址方式五、程序轉(zhuǎn)移五、程序轉(zhuǎn)移指令指令無條件轉(zhuǎn)移無條件轉(zhuǎn)移1、JMP 指令指令格式:格式:JMP dest功能:無條件功能:無條件轉(zhuǎn)移到操作數(shù)轉(zhuǎn)移到操作數(shù)( (destdest) )所指示的地址,不影響標志。所指示的地址,不影響標志。 段內(nèi)轉(zhuǎn)移段內(nèi)轉(zhuǎn)移:直接轉(zhuǎn)移直接轉(zhuǎn)移 : JMP START(IP)START16位立即數(shù)NERA 標號例如例如:JMP 1234H指令跳轉(zhuǎn)到指令跳轉(zhuǎn)到 CS:1234H執(zhí)行。執(zhí)行。Part1JMP1234HPart21234H XXXPart3C

6、S:0100H跳過1134HCS:1234H轉(zhuǎn)移轉(zhuǎn)移指令及尋址方式指令及尋址方式五、程序轉(zhuǎn)移五、程序轉(zhuǎn)移指令指令無條件轉(zhuǎn)移無條件轉(zhuǎn)移段內(nèi)轉(zhuǎn)移段內(nèi)轉(zhuǎn)移:直接短轉(zhuǎn)移直接短轉(zhuǎn)移 :JMP SHORT STARTSHORT START為為 8位位移量位位移量(128127)執(zhí)行操作:執(zhí)行操作:(IP)(IP)+2位移量位移量例如例如:JMP SHORT START (=12H)指令跳轉(zhuǎn)到指令跳轉(zhuǎn)到 CS:(IP+2+12H)執(zhí)行。執(zhí)行。Part1JMP 12HPart2XXXXXPart3CS:1220H12H+2H=14HCS:1234HJMP 12HPart1Part2Part3XXXXXCS:1

7、234H2H12H=10HCS:1224H例如例如: JMP SHORT START (= -12H)指令跳轉(zhuǎn)到指令跳轉(zhuǎn)到 CS:(IP+2 12H)執(zhí)行執(zhí)行五、程序轉(zhuǎn)移五、程序轉(zhuǎn)移指令指令無條件轉(zhuǎn)移無條件轉(zhuǎn)移執(zhí)行操作:執(zhí)行操作:(IP)DEST段內(nèi)轉(zhuǎn)移段內(nèi)轉(zhuǎn)移:間接轉(zhuǎn)移間接轉(zhuǎn)移 :JMP DESTDEST為為 16寄存器或內(nèi)存操作數(shù)寄存器或內(nèi)存操作數(shù)例如例如: (SI)=0100HJMP SI指令跳轉(zhuǎn)到指令跳轉(zhuǎn)到 CS:0100H執(zhí)行。執(zhí)行。例如例如,(BX)=100H,DS:0100H=1234HJMP BX指令跳轉(zhuǎn)到指令跳轉(zhuǎn)到 CS:1234H執(zhí)行。執(zhí)行。Part1JMP BXPart2

8、1234H XXXPart3CS:0100H跳過1134HCS:1234H12H34HDS:0100HIP=1234H例如例如:JMP 1234:5678H指令跳轉(zhuǎn)到指令跳轉(zhuǎn)到 1234:5678H執(zhí)行執(zhí)行五、程序轉(zhuǎn)移五、程序轉(zhuǎn)移指令指令無條件轉(zhuǎn)移無條件轉(zhuǎn)移段間轉(zhuǎn)移段間轉(zhuǎn)移:32位立即數(shù)直接轉(zhuǎn)移直接轉(zhuǎn)移 : JMP DEST(IP)低低1616位位(CS)高高16位位FAR 標號32內(nèi)存操作數(shù)例如:例如:DI=200H雙字(雙字(DS:0200H)=12345678HJMPDWORD PTR DI指令執(zhí)行指令執(zhí)行:低位字:低位字:(IP)=5678H高位字高位字:(CS)=1234HPart1

9、JMP DWORD PTR DIPart2 XXXPart3CS:0100H1234H:5678H34H56HDS:0200HIP=5678H78H12HCS=1234H五、程序轉(zhuǎn)移五、程序轉(zhuǎn)移指令指令條件轉(zhuǎn)移條件轉(zhuǎn)移簡單轉(zhuǎn)移:簡單轉(zhuǎn)移:條件是由標志寄存器中的標志的狀態(tài)決定的轉(zhuǎn)移。條件是由標志寄存器中的標志的狀態(tài)決定的轉(zhuǎn)移。復雜轉(zhuǎn)移:復雜轉(zhuǎn)移:條件是由有有符號數(shù)和無符號數(shù)的大小決定的轉(zhuǎn)移。條件是由有有符號數(shù)和無符號數(shù)的大小決定的轉(zhuǎn)移。簡單轉(zhuǎn)移:簡單轉(zhuǎn)移:FRJC 標號標號 CF=1有進位則轉(zhuǎn)移到標號所在地址有進位則轉(zhuǎn)移到標號所在地址JNC 標號標號 CF=0無進位則轉(zhuǎn)移到標號所在地址無進位則轉(zhuǎn)

10、移到標號所在地址CFJZ 標號標號 ZF=1結(jié)果為零則轉(zhuǎn)移到標號所在地址結(jié)果為零則轉(zhuǎn)移到標號所在地址 JNZ 標號標號 Z ZF=0結(jié)果為非零則轉(zhuǎn)移到標號所在地址結(jié)果為非零則轉(zhuǎn)移到標號所在地址 ZFJS 標號標號 SF=1結(jié)果為負則轉(zhuǎn)移到標號所在地址結(jié)果為負則轉(zhuǎn)移到標號所在地址 JNS 標號標號 S SF=0 結(jié)果非負則轉(zhuǎn)移到標號所在地址結(jié)果非負則轉(zhuǎn)移到標號所在地址 SFJP 標號標號 PF=1結(jié)果結(jié)果1 1的個數(shù)為偶數(shù)個則轉(zhuǎn)移的個數(shù)為偶數(shù)個則轉(zhuǎn)移 JNP 標號標號 P PF=0 結(jié)果結(jié)果1 1的個數(shù)為奇數(shù)個則轉(zhuǎn)移的個數(shù)為奇數(shù)個則轉(zhuǎn)移 PFJO 標號標號 OF=1結(jié)果溢出則轉(zhuǎn)移到標號所在地址結(jié)

11、果溢出則轉(zhuǎn)移到標號所在地址 JNO 標號標號 O OF=0結(jié)果未溢出則轉(zhuǎn)移到標號所在地址結(jié)果未溢出則轉(zhuǎn)移到標號所在地址 OF五、程序轉(zhuǎn)移五、程序轉(zhuǎn)移指令指令條件轉(zhuǎn)移條件轉(zhuǎn)移復雜轉(zhuǎn)移:復雜轉(zhuǎn)移:由多個標志的狀態(tài)決定的轉(zhuǎn)移由多個標志的狀態(tài)決定的轉(zhuǎn)移, ,分為分為有符號數(shù)和無符號數(shù)有符號數(shù)和無符號數(shù)轉(zhuǎn)移轉(zhuǎn)移無符號數(shù)轉(zhuǎn)移指令無符號數(shù)轉(zhuǎn)移指令 比較兩個無符號數(shù),并根據(jù)比較結(jié)果轉(zhuǎn)移比較兩個無符號數(shù),并根據(jù)比較結(jié)果轉(zhuǎn)移JA標號標號;兩數(shù)比較,高于則轉(zhuǎn)移;兩數(shù)比較,高于則轉(zhuǎn)移(JNBE)JNA標號標號;兩數(shù)比較,不高于則轉(zhuǎn)移(;兩數(shù)比較,不高于則轉(zhuǎn)移(JBE)JB標號標號;兩數(shù)比;兩數(shù)比較,較,低于則轉(zhuǎn)移低于

12、則轉(zhuǎn)移(JNAE)JNB標號標號;兩數(shù)比較,不低于則轉(zhuǎn)移(;兩數(shù)比較,不低于則轉(zhuǎn)移(JAE)有符號數(shù)轉(zhuǎn)移指令有符號數(shù)轉(zhuǎn)移指令 比較兩個帶符號數(shù),并根據(jù)比較結(jié)果轉(zhuǎn)移比較兩個帶符號數(shù),并根據(jù)比較結(jié)果轉(zhuǎn)移JG標號標號;兩數(shù)比較,大于則轉(zhuǎn)移;兩數(shù)比較,大于則轉(zhuǎn)移(JNLE)JNG標號標號;兩數(shù)比較,不大于則轉(zhuǎn)移(;兩數(shù)比較,不大于則轉(zhuǎn)移(JLE)JL標號標號;兩數(shù)比;兩數(shù)比較,較,小于則轉(zhuǎn)移小于則轉(zhuǎn)移(JNGE)JNL標號標號;兩數(shù)比較,不小于則轉(zhuǎn)移(;兩數(shù)比較,不小于則轉(zhuǎn)移(JGE)五、程序轉(zhuǎn)移五、程序轉(zhuǎn)移指令指令循環(huán)控制循環(huán)控制測試測試CX的值為的值為0則轉(zhuǎn)移則轉(zhuǎn)移JCXZ 標號標號; (CX)=

13、0則轉(zhuǎn)移則轉(zhuǎn)移循環(huán)控制指令循環(huán)控制指令CX計數(shù)循環(huán)次數(shù),每循環(huán)一次計數(shù)循環(huán)次數(shù),每循環(huán)一次CX CX-1LOOP標號標號CX0 轉(zhuǎn)移到標號繼續(xù)循環(huán),轉(zhuǎn)移到標號繼續(xù)循環(huán),CX=0順序執(zhí)行。順序執(zhí)行。無條件循環(huán)無條件循環(huán)條件循環(huán)條件循環(huán)LOOPZ標號標號CX0且且 ZF=1轉(zhuǎn)移到標號繼續(xù)循環(huán),轉(zhuǎn)移到標號繼續(xù)循環(huán),CX0或或 ZF=0順序執(zhí)行。順序執(zhí)行。LOOPNZ標號標號CX0 且且 ZF=0轉(zhuǎn)移到標號繼續(xù)循環(huán),轉(zhuǎn)移到標號繼續(xù)循環(huán),CX=0或或 ZF=1順序執(zhí)行。順序執(zhí)行。五、程序轉(zhuǎn)移五、程序轉(zhuǎn)移指令指令處理器控制處理器控制對處理機的工作狀態(tài)的控制指令,對處理機的工作狀態(tài)的控制指令,分為標志控制、

14、外設(shè)同步工作狀分為標志控制、外設(shè)同步工作狀態(tài)控制態(tài)控制 兩類指令。兩類指令。標志控制標志控制DF標志標志CLDDF=0STDDF=1CF標志標志CLCCF=0STCCF=1CMCCF=CFIF標志標志CLIIF=0STIIF=1同步控制同步控制WAIT 指令指令CPU處于空操作狀態(tài),每處于空操作狀態(tài),每5個個T T周期測試信號線周期測試信號線當為低電平時脫離當為低電平時脫離WAIT TESTLOCK 指令前綴,指令前綴, 在執(zhí)行有在執(zhí)行有LOCK指令時發(fā)出總線封鎖信號,指令時發(fā)出總線封鎖信號,LOCK禁止其它主控設(shè)備申請總線。禁止其它主控設(shè)備申請總線。例如例如LOCK MOV AX,BX五、程

15、序轉(zhuǎn)移五、程序轉(zhuǎn)移指令指令處理器控制處理器控制同步控制同步控制HLT 暫定指令暫定指令CPU處于空操作狀態(tài),以下三種情況可以使處于空操作狀態(tài),以下三種情況可以使CPU脫脫離暫定狀態(tài)。離暫定狀態(tài)。RESET NMI 當當IF=1時時INTR 該指令是為中斷等待而設(shè)。該指令是為中斷等待而設(shè)。 NOP 空操作指令,進行一個總線周期的空操作,相當于延時空操作指令,進行一個總線周期的空操作,相當于延時4T時時鐘周期。鐘周期。ESC OPCODE,SRC 交權(quán)指令交權(quán)指令, 把控制權(quán)交給協(xié)處理器。把控制權(quán)交給協(xié)處理器。OPCODEOPCODE6 6位立即數(shù),外部處理器操作指令。位立即數(shù),外部處理器操作指令

16、。SRCSRC外部處理器的內(nèi)存源操作數(shù),由外部處理器的內(nèi)存源操作數(shù),由80868086取出放在數(shù)據(jù)總線上取出放在數(shù)據(jù)總線上供外部理器操作。供外部理器操作。 習習 題題 課課 P143 6.根據(jù)以下要求寫出相應(yīng)根據(jù)以下要求寫出相應(yīng)80X86匯編語言指令匯編語言指令 把把BX寄存器和寄存器和DX寄存器的內(nèi)容相加,結(jié)果存入寄存器的內(nèi)容相加,結(jié)果存入DX寄存器中寄存器中. 用寄存器用寄存器BX和偏移量為和偏移量為0B42H的寄存器相對尋址方式把存諸的寄存器相對尋址方式把存諸器中的一個字和(器中的一個字和(CX)相加,并把結(jié)果送回存儲器中。)相加,并把結(jié)果送回存儲器中。 用寄存器用寄存器BP和和SI的基

17、址加變址尋址方式求得的存儲器字操作的基址加變址尋址方式求得的存儲器字操作數(shù)和數(shù)和AX累加器內(nèi)容相加,并結(jié)結(jié)果送入累加器內(nèi)容相加,并結(jié)結(jié)果送入AX寄存器中。寄存器中。 ADD DX,BX ADD BX+0B42H,CX ADD AX,BP+SI習習 題題 課課 P143 7.若若CPU中各寄存器及中各寄存器及RAM參數(shù)如題圖所示,試求獨立執(zhí)行如下接參數(shù)如題圖所示,試求獨立執(zhí)行如下接令后,令后,CPU相應(yīng)寄存器及相應(yīng)寄存器及RAM相應(yīng)內(nèi)存單元的內(nèi)容是多少?相應(yīng)內(nèi)存單元的內(nèi)容是多少?CS3000HFFFFHCXDS2050H0004HBXSS50A0H0000HSPES0FFFH17C6HDXIP0

18、000H8094HAXDI000AH1403HBPSI0008H1CFRAM執(zhí)行前執(zhí)行后20506H06H507H00H508H87H509H15H50AH37H50BHC5H50CH2FH(1) MOV DX,BX+2;DX=06H BX=04H (2) PUSH DX;SP=0FFFEH SP=17C6H 習習 題題 課課 P143 7.若若CPU中各寄存器及中各寄存器及RAM參數(shù)如題圖所示,試求獨立執(zhí)行如下接參數(shù)如題圖所示,試求獨立執(zhí)行如下接令后,令后,CPU相應(yīng)寄存器及相應(yīng)寄存器及RAM相應(yīng)內(nèi)存單元的內(nèi)容是多少?相應(yīng)內(nèi)存單元的內(nèi)容是多少?CS3000HFFFFHCXDS2050H000

19、4HBXSS50A0H0000HSPES0FFFH17C6HDXIP0000H8094HAXDI000AH1403HBPSI0008H1CFRAM執(zhí)行前執(zhí)行后20506H06H507H00H508H87H509H15H50AH37H50BHC5H50CH2FH(3) MOV CX,BX;CX=04H BX=04H (4) TEST AX,01;AX=8094H CF=0H 習習 題題 課課 P143 7.若若CPU中各寄存器及中各寄存器及RAM參數(shù)如題圖所示,試求獨立執(zhí)行如下接參數(shù)如題圖所示,試求獨立執(zhí)行如下接令后,令后,CPU相應(yīng)寄存器及相應(yīng)寄存器及RAM相應(yīng)內(nèi)存單元的內(nèi)容是多少?相應(yīng)內(nèi)存單元的內(nèi)容是多少?CS3000HFFFFHCXDS2050H0004HBXSS50A0H0000HSPES0FFFH17C6HDXIP0000H8094HAXDI000AH1403HBPSI0008H1CFRAM執(zhí)行前執(zhí)行后20506H06H507H00H508H87H509H15H50AH37H50BHC5H50CH2FH(5) MOV AL,SI;AL=87H (6) ADC AL,DI;AL=0CCH CF=0H DAA;AL=32H 習習 題題 課課 P143

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論