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

下載本文檔

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

文檔簡(jiǎn)介

1、.,1, 指令的基本概念和指令所包含的 基本內(nèi)容。 8086指令的格式及編碼方式。 8086指令的尋址方式及尋址過(guò)程。 8086指令系統(tǒng)的分類(lèi)、功能及操 作過(guò)程,每條指令的格式及用法。,.,2,.,3,.,4,4.1 概 述,一、指令 (Instruction):,指令通常以二進(jìn)制代碼的形式提供給計(jì)算機(jī),這種指令稱(chēng)為機(jī)器指令。,指示計(jì)算機(jī)執(zhí)行什么操作的命令。,.,5,二、指令系統(tǒng) (Instruction System):,三、程序 (Program):,完成某個(gè)特定任務(wù)而編制的一系列指令的有序集合。,程序的執(zhí)行一般是按指令的先后次序一條一條執(zhí)行,但遇到轉(zhuǎn)移類(lèi)指令時(shí)則可能改變指令的執(zhí)行次序。,

2、計(jì)算機(jī)所能執(zhí)行的全部指令。,.,6,四、指令包含的基本內(nèi)容,1. 做什么操作,由指令的操作碼字段規(guī)定。,2. 操作數(shù)的來(lái)源,操作數(shù)來(lái)自于什么地方。由指令的操作數(shù)字段規(guī)定。,.,7,操作數(shù)的來(lái)源可以是:,.,8,3. 操作結(jié)果的去向,操作的結(jié)果將存放在何處。,4. 下一條指令的位置,指示下一條指令是順序執(zhí)行還是轉(zhuǎn)移執(zhí)行。,.,9,五、指令的種類(lèi),.,10,六、指令的表示方法,1. 二進(jìn)制代碼表示機(jī)器語(yǔ)言指令,2. 助記符表示匯編語(yǔ)言指令,例:10001000 11011000,例:MOV BL,AL,MOV表示“傳送”助記符,BL(寄存器)表示結(jié)果存放的位置,AL(寄存器)表示數(shù)據(jù)的來(lái)源。,.,

3、11,助記符表示的指令便于書(shū)寫(xiě)、理解和記憶,但最終必須將助記符指令“翻譯”成機(jī)器指令才能被識(shí)別和執(zhí)行。這個(gè)過(guò)程叫“匯編”。,.,12,4.2 8086 CPU的尋址方式,地址:數(shù)據(jù)和指令存放的位置。,數(shù)據(jù)存放的位置可以是寄存器、存儲(chǔ)器或I/O端口,指令存放的位置只能是存儲(chǔ)器中的代碼段。,尋址方式:尋找指令地址和操作數(shù)地址的方式。,尋址過(guò)程:形成指令地址和操作數(shù)地址的過(guò)程。,.,13,結(jié)果,.,14,2. 立即數(shù)尋址,操作數(shù)作為立即數(shù)就在指令中給出。,例:MOV AX,1234H,操作:把立即數(shù)1234H送寄存器AX中。,機(jī)器碼:B8 34 12 (低字節(jié)在地址小的單元),.,15,AH,AL,

4、AX,.,B8,34,12,.,代碼段 (存儲(chǔ)器中),操作碼(B8),操作數(shù)(1234H)立即數(shù),一條指令,指令執(zhí)行后,AX=1234H (原有的內(nèi)容被新的內(nèi)容替換)。,MOV AX,1234H,.,16,3. 寄存器尋址,操作數(shù)在某個(gè)寄存器中。,例:INC BL,操作:使BL中內(nèi)容加1后送回,若BL=00H,則執(zhí)行后BL=01H,BL=FFH,則執(zhí)行后BL=00H (自動(dòng)溢出),01,.,17,4. 存儲(chǔ)器尋址,操作數(shù)在存儲(chǔ)器中的一個(gè)或幾個(gè)單元中。,在這種尋址方式下,要找到該操作數(shù),關(guān)鍵是必須找到該操作數(shù)所在單元的地址。,由于8086采用存儲(chǔ)器段組織結(jié)構(gòu),內(nèi)存單元的地址由段起始地址 (基地址

5、) 和該單元與段起始地址之間的距離 (以字節(jié)數(shù)計(jì)) 兩部分共同決定。,.,18,段起始地址(基地址):某個(gè)段寄存器的內(nèi)容(又稱(chēng)段基值)乘以16得到。,段內(nèi)偏移量:該單元與段起始地址之間的距離(字節(jié)數(shù)) 。又稱(chēng)有效地址EA。,待尋址的內(nèi)存單元,(CS, DS, ES, SS)16 段基地址,內(nèi)存單元物理地址,.,19,8086規(guī)定,在執(zhí)行某種操作時(shí),采用的段寄存器有一個(gè)預(yù)先的約定。故指令中一般只需給出有關(guān)EA的信息,則CPU將能夠根據(jù)該次操作自動(dòng)選用段寄存器,并與EA一起形成物理地址。 存儲(chǔ)器尋址的實(shí)質(zhì)就是如何形成有效地址EA。,.,20,(1) 直接尋址方式,指令中以偏移量方式直接給出操作數(shù)的

6、有效地址。即,EA=指令中給出的偏移量,.,21,例:MOV AX,1234H,機(jī)器碼:A1 34 12,操作:把偏移量1234H作為EA,在數(shù)據(jù)段中找到相應(yīng)的字單元,再將字單元的內(nèi)容送AX。,.,22,本例執(zhí)行完后,AX=3050H,EA=1234H,設(shè)DS=3000H,DS16,=30000H,= 3000H16,MOV AX, 1234H,.,23,b. 段基值乘以16,相當(dāng)于段基值(二進(jìn)制表示)左移4位,或段基值(十六進(jìn)制表示)在末尾添一個(gè)0H。,注:,.,24,(2) 間接尋址方式,以間接的方式得到有效地址EA,有幾個(gè)專(zhuān)用的寄存器可用于間接尋址:BX,BP,SI,DI。,a. 基址尋

7、址方式,以BX作為基址尋址寄存器,操作數(shù)在數(shù)據(jù)段中。,以BP作為基址尋址寄存器,操作數(shù)在堆棧段中。,EA=BX或BP的內(nèi)容+8位或16位位移量,.,25,例:MOV AX,BX,機(jī)器碼:8B 04,操作:以BX的內(nèi)容作為有效地址EA,在數(shù)據(jù)段中找到對(duì)應(yīng)的字單元,再將該字單元的內(nèi)容送AX中。,EA=BX (位移量為0),.,26,設(shè)DS=2000H,BX=1000H,本例執(zhí)行后 AX=50A0H,DS=2000H,這種尋址方式的優(yōu)點(diǎn)就在于可以隨時(shí)修改BX寄存器的內(nèi)容,而指向不同的存儲(chǔ)單元。故BX又稱(chēng)為基址指針寄存器。,.,27,例:MOV AL,DATABP,這里DATA是以符號(hào)表示的位移量。,

8、EA=BP+位移量DATA,操作:以EA作為有效地址,在堆棧段中去 尋址字節(jié)單元,再將該字節(jié)單元內(nèi)容送AL。,.,28,b. 變址尋址方式,以SI,DI寄存器作為間接尋址寄存器,操作數(shù)在數(shù)據(jù)段中。,EA=SI或DI內(nèi)容+8位或16位位移量,例:ADD AX,SI,EA=SI,操作:以EA作為有效地址,在數(shù)據(jù)段中找到某個(gè)操作數(shù),再將該操作數(shù)與AX的內(nèi)容相加,結(jié)果存放在AX中。,.,29,c. 基址變址尋址方式,既有基址寄存器(BX或BP),又有變址寄存器參與(SI或DI)尋址,操作數(shù)在基址寄存器所規(guī)定的段中。,EA=BX或BP+SI或DI+8位或16位位移量,.,30,例:MOV AX,0260

9、H BX SI,EA=BX+SI+0260H,操作數(shù)在數(shù)據(jù)段中,MOV AX,INF BP+DI,EA=BP+DI+位移量INF,操作數(shù)在堆棧段中,* 以上兩種基址+變址的格式都是合法的。,.,31,(3) 串操作指令尋址,這類(lèi)指令規(guī)定:,源串操作數(shù)在數(shù)據(jù)段,且有效地址EA=SI,目的串操作數(shù)在附加段,且有效地址EA=DI,指令執(zhí)行后,自動(dòng)修改SI,DI的值,使之指向新的單元。,.,32,8086的段約定,8086在執(zhí)行某種操作時(shí),預(yù)先規(guī)定了采用的段寄存器和段,即有基本的段約定。如果要改變默認(rèn)的段約定,則需要在指令中明 確指出來(lái)。,.,33,8086/8088的段約定,.,34,5. I/O端

10、口尋址方式,(1) 直接端口尋址,操作數(shù)在某個(gè)8位或16位端口中。,.,35,b. 端口輸出,OUT port, AL,a. 端口輸入,IN AL,port,port=端口地址 (8位,0255),例:IN AL,80H,操作:從端口地址為80H的端口輸入一字節(jié)送AL。,.,36,(2) 間接端口尋址,可以把端口地址送入DX,然后進(jìn)行端口尋址:,輸入: IN AL,DX 輸出: OUT DX,AL,.,37,注: 若用AX代替AL,則表示16位數(shù)據(jù)的端口。, 端口地址大于255時(shí),必須將端口地址送入DX,即采用間接尋址端口方式。,.,38,6. 轉(zhuǎn)移類(lèi)指令的尋址方式,前面所述的各種尋址方式實(shí)際

11、上是數(shù)據(jù)尋址方式,關(guān)鍵是如何找到操作數(shù)。,轉(zhuǎn)移類(lèi)指令尋址方式屬于程序存儲(chǔ)器尋址,關(guān)鍵是要找到下一條待執(zhí)行指令的地址。,.,39,尋址方式小結(jié):,固定尋址:操作數(shù)固定在某個(gè)寄存器中,寄存器尋址:操作數(shù)在某個(gè)寄存器中,立即數(shù)尋址:操作數(shù)就是操作碼后跟的立即數(shù),.,40,(1) 轉(zhuǎn)移范圍,段內(nèi)轉(zhuǎn)移:轉(zhuǎn)移范圍在同一個(gè)段以?xún)?nèi),段間轉(zhuǎn)移:從一個(gè)代碼段轉(zhuǎn)移至另一個(gè)代碼段,(2) 轉(zhuǎn)移條件,無(wú)條件轉(zhuǎn)移,有條件轉(zhuǎn)移 (轉(zhuǎn)移范圍僅為128+127),(3) 轉(zhuǎn)移方式,直接轉(zhuǎn)移 (轉(zhuǎn)移目標(biāo)直接在指令中給出),間接轉(zhuǎn)移 (轉(zhuǎn)移目標(biāo)預(yù)先放入某個(gè)寄存器或存儲(chǔ)器中),.,41,存儲(chǔ)器尋址,直接尋址,間接尋址,串操作尋址,基

12、址尋址,變址尋址,基址+變址尋址,I/O端口尋址,直接端口尋址,間接端口尋址,轉(zhuǎn)移類(lèi)指令尋址,.,42,基址變址尋址,基址變址尋址(Based Index Addressing)中的操作數(shù)的有效地址是一個(gè)基址寄存器(如BX、BP)和一個(gè)變址寄存器(如SI、DI)的內(nèi)容之和,兩個(gè)寄存器均由指令指出。操作數(shù)的段地址分配和前面所述相同,即使用默認(rèn)段基址或使用段超越前綴來(lái)指定段基址。,.,43,相對(duì)基址變址尋址,.,44,課堂練習(xí)與思考:,1.請(qǐng)指出下列每條指令源操作數(shù)的尋址方式。,(1) MOV AX, BX (2) MOV CH, 3AH (3) MOV BX, 2000H (4) MOV DX,

13、 BX (5) MOV CX, BP+2 (6) MOV AX, 3BX DI (7) MOV AL, ES:SI (8) MOV BX, DS:BP,;寄存器尋址,操作數(shù)在BX中 ;立即數(shù)尋址,操作數(shù)為3AH ;直接尋址,EA=2000H,數(shù)在數(shù)據(jù)段 ;間接尋址,EA=BX,數(shù)在數(shù)據(jù)段 ;基址尋址,EA=BP+2,數(shù)在堆棧段 ;相對(duì)基址變址尋址,EA=BX+DI+3,數(shù)在數(shù)據(jù)段 ;含段超越的變址尋址,EA=SI,數(shù)在附加段 ;含段超越的基址尋址,EA=BP,數(shù)在數(shù)據(jù)段,.,45,課堂練習(xí)與思考:,2. MOV AX,BX+SI+0080H,即將BX與SI中的內(nèi)容與0080H相加作有效地址。

14、3.設(shè)BX=0123H DI=1000H DS=3200H,默認(rèn)DS作為操作數(shù)對(duì)應(yīng)的段寄存器(假定沒(méi)使用段前綴),試指出下列指令的尋址方式,并寫(xiě)出其操作數(shù)的有效地址和物理地址。 (1)MOV AX,1A38H (2)MOV AX,BX (3)MOV AX,BX+1A38H (4)MOV AX,BX+DI (5)MOV AX,BX+DI+1A38H,.,46,課堂練習(xí)與思考:,解: (1)直接尋址 有效地址=1A38H, 物理地址=32000H+1A38H=33A38H (2)寄存器間接尋址 有效地址=0123H, 物理地址=32000H+0123H=32123H (3)寄存器相對(duì)基址尋址 有效

15、地址=0123H+1A38H=1B5BH, 物理地址=32000H+1B5B=33B5BH (4) 基址變址尋址 有效地址=0123H+1000H=1123H, 物理地址=32000H+1123H=33123H (5)相對(duì)基址變址尋址 有效地址=0123H+1000H+1A38H=2B5BH, 物理地址=32000H+2B5BH=34B5BH,.,47,4.3 8086指令系統(tǒng),8086指令按功能分為六大類(lèi)。,.,48,mem 存儲(chǔ)器操作數(shù) port 輸入輸出端口,可用 數(shù)字或表達(dá)式表示 opr 表示操作數(shù) 存儲(chǔ)單元的內(nèi)容 ac 累加器操作數(shù)(AX或AL) reg 寄存器 src 源操作數(shù) s

16、egreg 段寄存器 dist 目的操作數(shù) count 移位次數(shù),可以是 1或CL data 立即數(shù) S_ins 串操作指令 disp 8位或16位位移量,本節(jié)中要用到的一些符號(hào)所表示的含義:,.,49,一、數(shù)據(jù)傳送指令,數(shù)據(jù)傳送指令能夠完成下列操作數(shù)的傳送任務(wù)。,立即數(shù),存儲(chǔ)器,段寄存器CS,DS,ES,SS,通用寄存器組AX,BX,CX,DXBP,SP,SI,DI,(CS不能作目的),.,50,1. 通用數(shù)據(jù)傳送指令,(1) MOV d, s,功能:將源操作數(shù)s復(fù)制到目標(biāo)操作數(shù)d,源保持不變,目標(biāo)被源代替。,.,51,注: d, s不能同時(shí)為存儲(chǔ)器,錯(cuò)誤指令:MOV BX,SI , d不能

17、為立即數(shù),錯(cuò)誤指令:MOV 1234H,AX , d, s必須同時(shí)為字節(jié)型或字型,錯(cuò)誤指令:MOV AX,BL ,.,52,指令后的分號(hào)“;”以后為注釋部分,對(duì)指令的執(zhí)行沒(méi)有任何影響,主要是便于閱讀或解釋指令的功能。,.,53,例:MOV AX,0 ; AX0,AX清0,執(zhí)行后,AX=0,MOV SI,BP ; SIBP,BP內(nèi)容送SI,執(zhí)行后,SI=BP,BP不變,.,54,MOV AL,BUFFERS ;BUFFERS內(nèi)存單元內(nèi)容送入AL,這里,BUFFERS代表符號(hào)地址,從該地址單元中取出內(nèi)容送AL寄存器。,相當(dāng)于直接尋址方式。,.,55,MOV AX,DATA SI+BX,EA=SI+

18、BX+DATA,在數(shù)據(jù)段中尋找字單元,取出該字單元的內(nèi)容送入AX。,.,56,設(shè)DS=3000H,SI=200H,BX=1000H,DATA的偏移量為100H,則,EA=SI+BX+DATA=200H+1000H+100H=1300H,物理地址=DS16+EA=30000H+1300H=31300H,即從31300H和31301H兩單元中取出內(nèi)容送AX。,.,57,MOV AX,DATA SI+BX,.,58,(2) PUSH s;SP2 SP, 源操作數(shù)壓入堆棧保存,POP d;SP所指堆棧的內(nèi)容送目 標(biāo), SP+2 SP,.,59,例:PUSH BX;把BX內(nèi)容壓入堆棧,設(shè) SS=2000

19、H,SP=0040H,BX=2340H,則執(zhí)行后,2340H被保存到堆棧,同時(shí)SP=003EH,BX內(nèi)容不變,.,60,注:s和d只能為16位寄存器或存儲(chǔ)器,.,61,(3) XCHG d, s ;交換源和目標(biāo)操作數(shù),注:d=通用寄存器,s=通用寄存器或存儲(chǔ)器,例:XCHG AX,SI+400H,.,62,(4) XLAT ;查表轉(zhuǎn)換,注:a. 表首相對(duì)于段起始地址的偏移量預(yù)先送入BX中;,b. 待查找的表內(nèi)某單元相對(duì)于表首的偏移量送入AL中;,c. 以EA=BX+AL在表中(數(shù)據(jù)段)查找,將查得的數(shù)據(jù)再送回AL中。,.,63,例:設(shè)表首的偏移地址為2000H,要查找表內(nèi)第4號(hào)單元 (從0號(hào)算

20、起)的內(nèi)容并送回AL,則程序段如下:,MOV BX,2000HMOV AL,04HXLAT,設(shè)表中內(nèi)容如下頁(yè)圖所示, 則執(zhí)行后,AL=09H,.,64,09,.,65,2. 目標(biāo)地址傳送指令,對(duì)于任一個(gè)存儲(chǔ)器操作數(shù),由段地址和偏移地址確定了它們?cè)诖鎯?chǔ)器中的位置。目標(biāo)地址傳送指令就用于獲得存儲(chǔ)器操作數(shù)的段地址或偏移地址。,.,66,(1) LEA d, s,例:LEA BX,COUNTER; 取COUNTER地址偏移量BX,.,67,(2) LDS d, s,功能:裝入地址指針,段地址DS,偏移地址d,這條指令往往改變了段寄存器DS的內(nèi)容,使得DS指向了另外一個(gè)數(shù)據(jù)段。,.,68,例:LDS S

21、I,BASE,設(shè)執(zhí)行前,DS=1000H,SI=0000H,BASE偏移地址為0004H,10004H10007H單元內(nèi)容依次為00H,30H,00H,20H,則,執(zhí)行后,DS=2000H,SI=3000H,.,69,00,30,00,20,0004H,SI=3000H,原DS所指向的數(shù)據(jù)段,新DS所指向的數(shù)據(jù)段,1000H1610000HDS,BASE,30,00,2000,SI,DS,2000H1620000HDS,.,70,(3) LES d, s,功能:裝入地址指針,段地址 ES,偏移地址d,.,71,3. 標(biāo)志位傳送指令,(1) LAHF,功能:將標(biāo)志寄存器低8位裝入AH寄存器,.,

22、72,(2) SAHF,功能:把AH的內(nèi)容送入標(biāo)志寄存器的低8位。,.,73,(2) SAHF,功能:把AH的內(nèi)容送入標(biāo)志寄存器的低8位。,.,74,(4) POPF,功能:將當(dāng)前SP所指內(nèi)容(2字節(jié))彈出至標(biāo)志寄存器,同時(shí)SP+2SP。,.,75,4. I/O數(shù)據(jù)傳送指令,功能:從指定端口輸入數(shù)據(jù)至累加器acc (AL或AX) ,port=0255,(1) IN acc, port,.,76,(2) IN acc, DX,功能:從DX指示的端口輸入數(shù)據(jù)至累加器acc , DX=065535,.,77,(3) OUT port, acc,功能:將累加器的數(shù)據(jù)輸出至指定端口。,.,78,(4)

23、OUT DX,acc,功能:將累加器的數(shù)據(jù)輸出到DX所指示的端口。,注: 16位端口地址必須送入DX中。, 若采用AX,則表示16位數(shù)據(jù)傳送(輸入/輸出),.,79,(4) 換碼指令XLAT,功能:該指令通過(guò)AL和BX寄存器進(jìn)行表格查找,將8位數(shù)裝入AL中。它完成的操作為:AL BX+AL,XLAT指令常用于查表操作,即BX寄存器含有表格的起始地址,而AL中的值是作進(jìn)入表格中的偏移量,查出表格中的內(nèi)容送入AL中。,.,80,二、算術(shù)運(yùn)算指令,算術(shù)運(yùn)算指令的操作數(shù)可以是無(wú)符號(hào)數(shù),也可以是有符號(hào)數(shù)。,算術(shù)運(yùn)算指令一般影響標(biāo)志位,而數(shù)據(jù)傳送指令一般不影響標(biāo)志位。,.,81,1. 加法指令,(1) A

24、DD d, s,功能:將s與d相加,結(jié)果在d中。根據(jù)操作結(jié)果設(shè)置標(biāo)志位。,.,82,例:ADD BX+106BH,1234H,設(shè)DS=2000H,BX=1200H,EA=1200H+106BH=226BH,物理地址:2000H16+226BH=2226BH,又設(shè)原來(lái)(2226BH)=90H,(2226CH)=30H,則指令執(zhí)行后:3090H+1234H=42C4H,即(2226BH)=C4H,(2226CH)=42H,.,83,又 42C4H=0100,0010,1100,0100B,.,84,(2) ADC d, s,功能:將s與d再與進(jìn)位CF相加,結(jié)果留在d中,ADC指令主要用于多字節(jié)相加

25、。,注:若是立即數(shù),且最高位為數(shù)碼AF,則必須在前面添加一個(gè)0,以避免混淆。,.,85,(3) INC d,功能:將d加1后送回d。,注:INC指令不影響進(jìn)位標(biāo)志CF。,該指令經(jīng)常用于修改地址指針寄存器 (BX, BP, SI, DI),使之指向下一個(gè)單元。,.,86,2. 減法指令,(1) SUB d, s,功能:dsd,同時(shí)影響標(biāo)志位。,(2) SBB d, s,功能:dsCFd,同時(shí)影響標(biāo)志位。,.,87,(3) DEC d,功能:d1d,該指令與INC相反操作,也不影響進(jìn)位標(biāo)志CF。,.,88,(4) NEG d,功能:對(duì)d進(jìn)行求補(bǔ)運(yùn)算后送回 (按位求反再加1)。,例:MOV AL,7

26、FH,NEG AL,結(jié)果:AL=7F按位求反+1=80H+1=81H,.,89,(5) 比較指令 CMP d, s,功能:作一次減法運(yùn)算ds,但不回送結(jié)果,只根據(jù)結(jié)果設(shè)置標(biāo)志位。,比較指令往往用于判斷兩數(shù)是否相等,或兩數(shù)大小關(guān)系。若相等,則零標(biāo)志ZF=1。,.,90,3. 乘法指令,乘法指令在指令中只出現(xiàn)一個(gè)操作數(shù)s (乘數(shù)),另一個(gè)操作數(shù)固定在累加器(AX或AL)中。,.,91,(1) MUL s,功能:無(wú)符號(hào)數(shù)乘法指令,a. 8位乘法,被乘數(shù)=AL,乘數(shù)=s,積(16位)=AH:AL中,即在AX中,AH為高8位,AL為低8位。,.,92,b. 16位乘法,被乘數(shù)=AX,乘數(shù)=s,積(32位

27、)=DX:AX,DX為高16位,AX為低16位。,.,93,例:MUL BX,若執(zhí)行前 AX=0012H,BX=0066H,則執(zhí)行后 DX=0000H,AX=072CH,.,94,(2) IMUL s,功能:有符號(hào)數(shù)乘法指令,8086規(guī)定,有符號(hào)數(shù)一般采用補(bǔ)碼表示。故有符號(hào)數(shù)作乘法運(yùn)算時(shí),必須先把它們轉(zhuǎn)變?yōu)樵a數(shù)相乘,積也為原碼數(shù),再將原碼數(shù)轉(zhuǎn)變?yōu)檠a(bǔ)碼數(shù)。這個(gè)工作由CPU自動(dòng)完成。,.,95,例:MOV AL,88H; 88H為 120的補(bǔ)碼,MOV BL,2,IMUL BL,結(jié)果:AX=FF10H ;FF10H為240的補(bǔ)碼,若直接用MUL BL指令,則AX=0110H,.,96,4. 除法

28、指令,(1) DIV s,功能:無(wú)符號(hào)數(shù)相除,a. 字節(jié)除,被除數(shù)=AX,除數(shù)=s (s0),結(jié)果:商=AL,余數(shù)=AH,.,97,b. 字除,被除數(shù)=DX:AX,除數(shù)= s (s0),結(jié)果:商=AX,余數(shù)=DX,.,98,注:如果除數(shù)太小,使得商超出了一個(gè)字節(jié)或字所能表示的范圍,則會(huì)產(chǎn)生“被0除”錯(cuò)誤。,例:MOV AX,800HMOV BL,2DIV BL,結(jié)果錯(cuò)誤,“被0除”,.,99,(2) IDIV s,功能:帶符號(hào)數(shù)除法,采用的固定寄存器與DIV相同。,.,100,(3) CBW和CWD,CBW:字節(jié)除法的符號(hào)擴(kuò)展指令,功能:若AL為正數(shù)(D7=0) 則 AH=00H,AL為負(fù)數(shù)(

29、D7=1) 則 AH=FFH,.,101,CWD:字除法的符號(hào)擴(kuò)展指令,功能:若AX為正數(shù)(D15=0) 則 DX=0000H,AX為負(fù)數(shù)(D15=1) 則 DX=FFFFH,CBW和CWD一般用于帶符號(hào)數(shù)除法指令之前。,.,102,5. 十進(jìn)制調(diào)整指令,運(yùn)算器按二進(jìn)制規(guī)律進(jìn)行運(yùn)算,如果參與運(yùn)算的是BCD碼數(shù),則需要對(duì)結(jié)果進(jìn)行調(diào)整。,.,103,(1) AAA,功能:對(duì)未組合型BCD碼加法的結(jié)果進(jìn)行校正(調(diào)整)。,校正(調(diào)整)方法:,若AL中低4位數(shù)值 9 或 AF = 1,則:,a. AL+6 AL,且 AL 高4位清0,b. AH+1 AH,否則不作調(diào)整。,.,104,(2) DAA,功能

30、:對(duì)組合型BCD碼加法的結(jié)果進(jìn)行校正(調(diào)整)。,DAA同時(shí)對(duì)AL中低4位和高4位進(jìn)行調(diào)整。,.,105,.,106,.,107,.,108,(3) AAS,功能:對(duì)未組合型BCD的減法結(jié)果進(jìn)行調(diào)整。,功能:對(duì)組合型BCD的減法結(jié)果進(jìn)行調(diào)整。,(4) DAS,.,109,最后結(jié)果 AL = 00110110B(代表36),CF=0,.,110,(5) AAM,功能:對(duì)未組合型BCD的乘法結(jié)果進(jìn)行調(diào)整。,.,111,.,112,AH,AL中表示未組合型BCD碼72。,.,113,(6) AAD,功能:對(duì)未組合型BCD碼(在AX中)進(jìn)行除法前的校正。,.,114,調(diào)整后, AH = 00000000

31、,AAD相當(dāng)于將兩個(gè)未組合型BCD碼數(shù)合并為一個(gè)二進(jìn)制數(shù)。,.,115,三、邏輯運(yùn)算和移位循環(huán)指令,邏輯指令在底層軟件中提供了對(duì)二進(jìn)制位的控制。可以對(duì)位進(jìn)行置位、清0或取反。常用于控制系統(tǒng)的I/O設(shè)備。,.,116,1. 邏輯運(yùn)算指令,(1) AND d, s,功能:s 和 d 按位相 “與”,結(jié)果在 d 中。,AND指令通常用于使某些位清0,而另一些位保持不變。,.,117,例:AND BX, 0F0FH,若BX=5555H,則執(zhí)行后 BX=0505H,.,118,(2) OR d, s,功能:s 和 d 按位相 “或”,結(jié)果送 d 。,OR 操作經(jīng)常用于將某些位置位,其它位不變。,.,11

32、9,(3) XOR d, s,功能:s 和 d 按位相 “異或”,結(jié)果送 d 。,XOR 操作經(jīng)常用于將某些位取反,其它位不變。,.,120,(4) NOT d,功能:將 d 按位求反后送回。,.,121,(5) TEST d, s,功能:s 和 d 按位相 “與”,但不送結(jié)果,只根據(jù)結(jié)果設(shè)置標(biāo)志位。,TEST 指令通常用于測(cè)試某些位是為0還是為1。,.,122,2. 移位指令和循環(huán)移位指令,(1) 算術(shù)移位,a. 算術(shù)左移,.,123,左移 1 次: SAL d, 1,左移多次: SAL d, CL (CL中為移位次數(shù)),例:MOV BL, 10001001B,SAL BL, 1,結(jié)果: C

33、F = 1,BL = 00010010B,注:移位多次時(shí),移位次數(shù)必須預(yù)先置入CL中。,.,124,右移 1 次: SAR d, 1,右移多次: SAR d, CL,b. 算術(shù)右移,.,125,(2) 邏輯移位,a. 邏輯左移 SHL與SAL等價(jià)。,.,126,(3) 循環(huán)左移,不帶進(jìn)位循環(huán)左移 ROL d, 1ROL d, CL,.,127,b. 帶進(jìn)位循環(huán)左移 RCL d, 1RCL d, CL,.,128,(4) 循環(huán)右移,a. 不帶進(jìn)位循環(huán)右移 ROR d, 1ROR d, CL,.,129,b. 帶進(jìn)位循環(huán)右移 RCR d, 1RCR d, CL,.,130,例:設(shè)32位數(shù)在DX:A

34、X中,實(shí)現(xiàn)32位數(shù)整個(gè)左移1次。,SALAX,1,RCLDX,1,.,131,四、串操作指令,1. 串的概念,串是連續(xù)存放在內(nèi)存中的字節(jié)塊或字塊。每個(gè)串有一個(gè)起始地址和長(zhǎng)度。,.,132,2. 方向標(biāo)志,方向標(biāo)志DF選擇串操作期間寄存器 DI ,SI 的自增(DF=0)或自減(DF=1)操作。,.,133,3. 串所在的段,規(guī)定:(1) 源串在數(shù)據(jù)段,用SI作地址指針,(2) 目的串在附加段,用DI作地址指針,如果源串與目的串實(shí)質(zhì)上在一個(gè)段中,則要令ES = DS。,.,134,4. 串操作指令,(1) MOVS d,s,或?qū)懗?MOVSB (字節(jié)串傳送) MOVSW (字串傳送),.,135

35、,重復(fù)前綴 (REP)可以加到串?dāng)?shù)據(jù)傳送指令上。REP前綴使得每次執(zhí)行串指令后CX減1。CX減1以后,重復(fù)執(zhí)行串指令,直到CX值為0時(shí),指令才終止。,.,136, REP 無(wú)條件重復(fù)直至CX1CX = 0, REPE/REPZ 當(dāng)ZF = 1且CX1CX0 則重復(fù), REPNE/REPNZ 當(dāng)ZF = 0且CX1CX0 則重復(fù),.,137,(2) 串比較 CMPS d, s,CMPSB (字節(jié)串比較),CMPSW (字串比較),功能:作一次減法:DS:SI ES:DI 但不送結(jié)果,同時(shí)自動(dòng)修改SI,DI 串比較指令常常與有條件重復(fù)前綴配合。,.,138,(3) 串搜索 SCAS d,SCASB

36、 (字節(jié)串搜索),SCASW (字串搜索),功能:做一次減法 AL ES:DI (字節(jié)) AX ES:DI (字) 同時(shí)自動(dòng)修改DI,但不回送結(jié)果,只 根據(jù)結(jié)果置有關(guān)標(biāo)志位 串搜索指令也常與有條件重復(fù)前綴相配合。,.,139,(4) 裝載串 LODS s,LODSB (字節(jié)串),LODSW (字串),功能:DS:SI AL或AX 同時(shí)自動(dòng)修改SI,.,140,(5) 存儲(chǔ)串 STOS d,STOSB (字節(jié)串),STOSW (字串),功能:AL或AX ES:DI 同時(shí)自動(dòng)修改DI,.,141,例1. 設(shè)源串在1000H:2000H開(kāi)始的100個(gè)字節(jié)單元中,要求將源串送到3000H:1020H開(kāi)

37、始的目的串中。,MOV AX,1000H MOV DS,AX;置源數(shù)據(jù)段寄存器 MOV SI,2000H;置源串指針初值 MOV AX,3000H MOVES,AX;置目的附加段寄存器 MOVDI,1020H;置目的串指針初值 CLD;DF = 0,使SI,DI自增 MOVCX,64H;置重復(fù)次數(shù)100D REP MOVSB;重復(fù)串傳送,直到CX = 0,初始化,.,142,例2. 比較兩個(gè)串,發(fā)現(xiàn)有不同的字符時(shí)則停止比較。,CLD MOV CX,100 MOV SI,2500H MOVDI,1400H REPE CMPSB;串比較,直到ZF = 0或CX=0才停止。,結(jié)果:若ZF=0,則兩個(gè)

38、串不相等; 若ZF=1,則兩個(gè)串相等。,.,143,五、程序控制指令,程序控制指令用來(lái)控制程序的走向,其實(shí)質(zhì)是設(shè)法改變當(dāng)前的CS和IP值,以使CPU轉(zhuǎn)移到一個(gè)新的地址處執(zhí)行程序。,.,144,A:Above 高于, B:Below 低于, C:Carry 進(jìn)位, E:Equal 等于, G:Greater 大于, L:Less 小于, N:Not 無(wú), O:Over 溢出 , S:Sign 符號(hào), PE:Parity Even 奇偶性偶, PO:Parity Odd 奇偶性奇,8086提供了四種控制轉(zhuǎn)移指令:無(wú)條件轉(zhuǎn)移指令,條件轉(zhuǎn)移指令,循環(huán)控制指令和中斷指令。除中斷指令外,其它轉(zhuǎn)移類(lèi)指令都不

39、影響狀態(tài)標(biāo)志。 注意指令中條件縮寫(xiě)字母的含意分別是:,.,145,1. 無(wú)條件轉(zhuǎn)移指令,(1) JMP 目標(biāo) a. 段內(nèi)直接轉(zhuǎn)移 格式 JMP 目標(biāo)標(biāo)號(hào) 特點(diǎn):僅僅改變IP值,而CS值不變。,例:JMP ADDI 這里ADDI為轉(zhuǎn)移目標(biāo)的標(biāo)號(hào)。,.,146,指令中的位移量=標(biāo)號(hào)偏移地址-當(dāng)前IP值,操作碼,轉(zhuǎn)移指令JMP有三種編碼格式,.,147,例:設(shè)標(biāo)號(hào)偏移地址=1000H,執(zhí)行完JMP指令后的當(dāng)前IP值為0009H,則,位移量=1000H0009H = 0FF7H,編碼格式 E9 F7 0F (代表JMP 1000H),.,148,b. 段內(nèi)間接轉(zhuǎn)移,格式: JMP BX,以BX的內(nèi)容作

40、為轉(zhuǎn)移目標(biāo)的偏移地址。,CS值不變,IP值改變。,.,149,c. 段間直接轉(zhuǎn)移,格式:JMP FAR_ADDR,功能:轉(zhuǎn)移到另一個(gè)代碼段的目標(biāo)FAR_ADDR處執(zhí)行。即以另一個(gè)段的基地址CS,標(biāo)號(hào)的偏移地址IP。,.,150,當(dāng)前CS=2100H,JMP 0C 02 00 65,轉(zhuǎn)移目標(biāo)的偏移地址,轉(zhuǎn)移目標(biāo)的段地址,16 21000H,代碼段1,16 65000H,新CS=6500H,代碼段2,轉(zhuǎn)移至此,當(dāng)前IP =1500H,新IP = 020CH,.,151,d. 段間間接轉(zhuǎn)移,格式:JMP BX+位移量,功能:以有效地址EA = BX +位移量作為開(kāi)始地址,從前2個(gè)單元中取出內(nèi)容IP,

41、后2個(gè)單元中取出內(nèi)容CS,以轉(zhuǎn)移到新的地址執(zhí)行程序。,.,152,例:JMP BX+ADDR3 設(shè)DS=2000H,BX=1400H,ADDR3=020AH,則執(zhí)行過(guò)程如下:,2000H,3000,4000,IP,CS,00 30 00 40,EA=1400H+020AH,執(zhí)行跳轉(zhuǎn)指令后,轉(zhuǎn)移至4000H:3000H處執(zhí)行程序。,數(shù)據(jù)段,.,153,(2) CALL 目標(biāo) (過(guò)程名),CALL指令完成調(diào)用子程序的功能。,CALL指令完成的操作:, 將程序的返回地址(CALL的下一條指令地址)壓入堆棧中保存。, 將目標(biāo)的偏移地址IP。若為遠(yuǎn)調(diào)用則再將目標(biāo)的段地址CS。, 轉(zhuǎn)移至新的目標(biāo) (子程序),.,154,如果是近調(diào)用,則堆棧中只保存返回地址的偏移地址;若是遠(yuǎn)調(diào)用,則還必須保存返回地址的段地址。,.,155,在子程

溫馨提示

  • 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. 人人文庫(kù)網(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)論