![微機(jī)原理與接口技術(shù)3章_第1頁](http://file3.renrendoc.com/fileroot3/2021-12/2/fecb5691-0a23-41cc-9594-5fa151a76550/fecb5691-0a23-41cc-9594-5fa151a765501.gif)
![微機(jī)原理與接口技術(shù)3章_第2頁](http://file3.renrendoc.com/fileroot3/2021-12/2/fecb5691-0a23-41cc-9594-5fa151a76550/fecb5691-0a23-41cc-9594-5fa151a765502.gif)
![微機(jī)原理與接口技術(shù)3章_第3頁](http://file3.renrendoc.com/fileroot3/2021-12/2/fecb5691-0a23-41cc-9594-5fa151a76550/fecb5691-0a23-41cc-9594-5fa151a765503.gif)
![微機(jī)原理與接口技術(shù)3章_第4頁](http://file3.renrendoc.com/fileroot3/2021-12/2/fecb5691-0a23-41cc-9594-5fa151a76550/fecb5691-0a23-41cc-9594-5fa151a765504.gif)
![微機(jī)原理與接口技術(shù)3章_第5頁](http://file3.renrendoc.com/fileroot3/2021-12/2/fecb5691-0a23-41cc-9594-5fa151a76550/fecb5691-0a23-41cc-9594-5fa151a765505.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)第三章 8088/8086的指令系統(tǒng) 第三章 8088/8086的指令系統(tǒng)主要內(nèi)容 各種尋址方式 8088/8086的指令系統(tǒng) 指令系統(tǒng):一臺(tái)計(jì)算機(jī)所能識(shí)別和執(zhí)行的全部 指令的集合。 指令的組成: 操作碼說明計(jì)算機(jī)要執(zhí)行哪種操作,如傳送、運(yùn)算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分。 操作數(shù)是指令執(zhí)行的參與者,即各種操作的對(duì)象。 有些指令不需要操作數(shù),通常的指令都有一個(gè)或兩個(gè)操作數(shù),也有個(gè)別指令有3個(gè)甚至4個(gè)操作數(shù)。操作碼操作碼操作數(shù)操作數(shù) 指令的表示:二進(jìn)制代碼 0000001011001111B (機(jī)器指令)助記符 ADDCL,BH (匯編指令)
2、3.1 8088/8086的尋址方式 根據(jù)指令內(nèi)容確定操作數(shù)地址的過程,稱為尋址。 根據(jù)尋址計(jì)算所得到的操作數(shù)地址叫做操作數(shù)的有效地址(EA),也就是段內(nèi)偏移地址。有效地址還需要與相應(yīng)的段基地址組合才是20位的物理地址(PA) ,該工作由CPU完成。 操作數(shù)的來源:(1)直接包含在指令中; (2)在CPU的某寄存器中; (3)在內(nèi)存中。3.1 8088/8086的尋址方式尋址方式有:1、立即尋址 操作數(shù)直接放在指令中。不 需要訪問存儲(chǔ)器。 例: MOV AL,34H MOV AX,1234H 需要注意在16位操作時(shí),兩個(gè) 字節(jié)數(shù)據(jù)的高低位存儲(chǔ)位置。立即數(shù)只能是源操作數(shù)。AX12H34HAHAL
3、3.1 8088/8086的尋址方式2、寄存器尋址操作數(shù)就放在CPU的內(nèi)部寄存器中,AX、BX、CX、DX、DI、SI、SP和BP,不需要訪問存儲(chǔ)器。 例:INC CX MOV AX,BX 若執(zhí)行前 AX =30A6H, BX =69EDH, CX =40D9H 則執(zhí)行后 AX =69EDH, BX內(nèi)容不變 CX =40DAH3.1 8088/8086的尋址方式3、直接尋址 有效地址由指令直接給出,有效地址只包含位移量。 例: MOV AX,2000H 默認(rèn)的段寄存器是DS,也可以在指令中使用段 超越前綴來指定段寄存器。 例:MOV AL,ES:2000H 有效地址EA=2000H,在指令中直
4、接給出。 物理地址PA=(ES)10H + 2000H3.1 8088/8086的尋址方式4、寄存器間接尋址操作數(shù)的地址在對(duì)應(yīng)的寄存器中稱為寄存器間接尋址。EA取自基址寄存器BX,BP或變址寄存器SI,DI 中的一個(gè),操作數(shù)在有效地址對(duì)應(yīng)的存儲(chǔ)單元中。 以SI, DI, BX間接尋址: 默認(rèn)操作數(shù)在數(shù)據(jù)段DS中 以BP間接尋址: 默認(rèn)操作數(shù)在堆棧段SS中 例: MOV AX,BX 若(DS)=1492H,(BX)=2000H 則EA=(BX)=2000H 物理地址PA=14920H+2000H=16920H, 執(zhí)行(AX)=(16920H)3.1 8088/8086的尋址方式5、變址尋址在寄存
5、器間接尋址的基礎(chǔ)上再加一個(gè)16位的偏移量例:MOV AX,SI+COUNT若COUNT=3000H,(DS)=3000H(SI)=2000H,則物理地址=35000H,EA=3000H+2000H =5000HPA=30000H+5000H =35000H3.1 8088/8086的尋址方式、基址加變址尋址EA=基址寄存器(BX或BP)變址寄存器(SI或DI)16位偏移量若用BX: 默認(rèn)操作數(shù)在數(shù)據(jù)段DS中 若用BP: 默認(rèn)操作數(shù)在堆棧段SS中例: MOV AX, BX+DI+63.1 8088/8086的尋址方式尋址方式的書寫格式 1、在方括號(hào)內(nèi)部允許有一個(gè)或兩個(gè)寄存器的名字,如果一對(duì)方括號(hào)
6、內(nèi)部有基址寄存器和變址寄存器,使用“”作為連接。 2、在方括號(hào)內(nèi)部允許有位移量,使用或號(hào)作為連接符號(hào)。 3、在方括號(hào)外部允許有位移量,可以在左邊或右邊。 MOVAX,BX+SI+6 MOVAX,BX+SI6 MOVAX,6BX+SI MOVAX,BXSI6 MOVAX,BX+6SI3.2 8088/8086的指令系統(tǒng) Intel 8086/8088指令系統(tǒng)共有117條基本指令,可分成6個(gè)功能組: 數(shù)據(jù)傳送類指令 算術(shù)運(yùn)算類指令 邏輯運(yùn)算類指令 串操作類指令 控制轉(zhuǎn)移類指令 處理器控制類指令3.2.1數(shù)據(jù)傳送指令1數(shù)據(jù)傳送MOV指令一般格式:MOV OPRD1,OPRD2MOV 是操作碼,OPR
7、D1和OPRD2分別是目的操作數(shù)和源操作數(shù)。功能:完成數(shù)據(jù)傳送具體來說,一條MOV數(shù)據(jù)傳送指令能實(shí)現(xiàn): CPU內(nèi)部寄存器之間數(shù)據(jù)的任意傳送(除了代碼段寄存器CS和指令指針I(yè)P以外)。MOV AL,BL;字節(jié)傳送MOV CX,BX;字傳送MOV DS,BX3.2.1數(shù)據(jù)傳送指令 立即數(shù)傳送至CPU內(nèi)部的通用寄存器組(即AX、 BX、CX、DX、BP、SP、SI、DI),MOV CL,4MOV AX,03FFHMOV SI,057BH CPU內(nèi)部寄存器(除了CS和IP以外)與存儲(chǔ)器(所有尋址方式)之間的數(shù)據(jù)傳送。MOV AL,2000HMOV AX,SIMOV DI,CXMOV SI,BLOCKB
8、PMOV DS,DATASI+BXMOV DESTBP+DI,ES3.2.1數(shù)據(jù)傳送指令 能實(shí)現(xiàn)用立即數(shù)給存儲(chǔ)單元賦值MOV BYTE PTR 2000H,25HMOV WORD PTR SI,35H立即數(shù)立即數(shù)段寄存器段寄存器CS DS ES SSCS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存儲(chǔ)儲(chǔ)器器3.2.1數(shù)據(jù)傳送指令對(duì)于MOV 指令應(yīng)注意幾個(gè)問題: MOV傳送指令中,不允許對(duì)CS和IP進(jìn)行操作; 兩個(gè)操作數(shù)中,除立即尋址之外必須有一個(gè)為寄存器尋址方式,即兩個(gè)存儲(chǔ)器操作數(shù)之間不允許直接進(jìn)行信息傳送;如
9、我們需要把地址(即段內(nèi)的地址偏移量)為2000H的存儲(chǔ)單元的內(nèi)容,傳送至同一段內(nèi)的地址為3000H的存儲(chǔ)單元中去,MOV指令不能直接完成這樣的傳送,但我們可以CPU內(nèi)部寄存器為橋梁來完成這樣的傳送: MOV AL,2000H; MOV 3000H,AL3.2.1數(shù)據(jù)傳送指令 兩個(gè)段寄存器之間不能直接傳送信息,也不允許用立即尋址方式為段寄存器賦初值;(X) MOV DS, 100H; (X) MOV DS, ES; 目的操作數(shù),不能用立即尋址方式。 MOV指令不影響標(biāo)志位3.2.1數(shù)據(jù)傳送指令2堆棧指令 堆棧:就是一個(gè)按后進(jìn)先出(LIFO)的原則組 織的一般內(nèi)存區(qū)域即堆棧段。用SS指 示段地址。
10、堆棧指針SP總是指向棧 頂(最后壓入的數(shù)的地址)。SP的初 值規(guī)定了所用堆棧的大?。ǘ褩5纳?度),一個(gè) 棧的深度最大為64kB 。堆棧用途: 臨時(shí)存放數(shù)據(jù) 傳遞參數(shù) 保存和恢復(fù)寄存器LIFO3.2.1數(shù)據(jù)傳送指令 入棧指令PUSH一般格式:PUSH OPRD源操作數(shù)可以是CPU內(nèi)部的16位通用寄存器、段寄存器(CS除外)和內(nèi)存操作數(shù)(所有尋址方式)。入棧操作對(duì)象必須是16位數(shù)。功能:將數(shù)據(jù)壓入堆棧執(zhí)行步驟為:SP=SP-1; SP=操作數(shù)高8位;SP=SP-1; SP= 操作數(shù)低8位3.2.1數(shù)據(jù)傳送指令例:PUSH BX執(zhí)行過程為: SP=SP-1, SP=BH; SP=SP-1, SP=
11、BL 3.2.1數(shù)據(jù)傳送指令(2) 出棧指令POP一般格式:POP OPRD目的操作數(shù)可以是CPU內(nèi)部的16位通用寄存器、段寄存器(CS除外)和內(nèi)存操作數(shù)(所有尋址方式)。出棧操作對(duì)象必須是16位數(shù)。功能:將數(shù)據(jù)彈出堆棧執(zhí)行步驟為: 操作數(shù)低8位 = SP; SP=SP1; 操作數(shù)高8位 = SP;SP=SP+1;3.2.1數(shù)據(jù)傳送指令3交換指令 XCHG一般格式:XCHG OPRD1,OPRD2功能:完成數(shù)據(jù)交換。把一個(gè)字節(jié)或一個(gè)字的源操作數(shù)與目的操作數(shù)相交換。交換能在通用寄存器之間、通用寄存器與存儲(chǔ)器之間進(jìn)行。但段寄存器和立即數(shù)不能作為一個(gè)操作數(shù);不能在存儲(chǔ)器與存儲(chǔ)器之間對(duì)換數(shù)據(jù)。例:XC
12、HG AL,CL XCHG AX,DI XCHG BX,SI XCHG AX,2000H XCHG DATASI,DH3.2.1數(shù)據(jù)傳送指令4累加器專用傳送指令 輸入輸出指令I(lǐng)N , OUTIN指令一般格式:IN AL,n ; ALnIN AX,n ; AXn+1nIN AL,DX ; ALDX IN AX,DX ; AXDX+1DX功能:從I/O端口輸入數(shù)據(jù)至AL或AX. 輸入指令允許把一個(gè)字節(jié)或一個(gè)字由一個(gè)輸入端口傳送到AL或AX中。若端口地址超過255時(shí),則必須用DX保存端口地址,這樣用DX作端口尋址最多可尋找64K個(gè)端口。80868086/8088/8088通過通過輸入輸出指令與輸入輸
13、出指令與外設(shè)進(jìn)行數(shù)據(jù)交外設(shè)進(jìn)行數(shù)據(jù)交換;呈現(xiàn)給程序換;呈現(xiàn)給程序員的外設(shè)是端口員的外設(shè)是端口(PortPort)即)即I/OI/O地地址。址。80888088的對(duì)外數(shù)的對(duì)外數(shù)據(jù)線為據(jù)線為8 8位,只有位,只有字節(jié)傳送指令字節(jié)傳送指令1616位位輸入輸出輸入輸出指令指令中的端指令指令中的端口地址只能取偶口地址只能取偶數(shù)數(shù). .3.2.1數(shù)據(jù)傳送指令OUT指令一般格式:OUT n,AL ; ALn OUT n,AX ; AXn+1nOUT DX,AL ; ALDXOUT DX,AX ; AXDX+1DX功能:將AL或AX的內(nèi)容輸出至I/O端口。 該指令將AL或AX中的內(nèi)容傳送到一個(gè) 輸出端口。端口
14、尋址方式與IN指令相同。3.2.1數(shù)據(jù)傳送指令(2)查表轉(zhuǎn)換指令格式:XLAT 功能:完成一個(gè)字節(jié)的查表轉(zhuǎn)換:AL=(DS)16(BX)+(AL)要求:寄存器AL的內(nèi)容作為一個(gè)256字節(jié)的表的下標(biāo);表的基地址在BX中,轉(zhuǎn)換后的結(jié)果存放在AL中。 3.2.1數(shù)據(jù)傳送指令例:設(shè)(例:設(shè)(DSDS)=A000H,=A000H,(BXBX)=0010H, =0010H, 表表的起始地址為的起始地址為A0010HA0010H,表中放數(shù)字,表中放數(shù)字0-90-9的的ASCIIASCII碼碼 MOVMOVBXBX,0010H0010H MOV MOVALAL,06H06H XLAT XLAT 執(zhí)行該程序后,
15、(執(zhí)行該程序后,(ALAL)=36H=36H本指令可用在數(shù)制轉(zhuǎn)換、本指令可用在數(shù)制轉(zhuǎn)換、函數(shù)表查表、函數(shù)表查表、代碼轉(zhuǎn)換等場(chǎng)合。代碼轉(zhuǎn)換等場(chǎng)合。A000A000:0010001030H30H31H31HA000A000:0016001636H36H3.2.1數(shù)據(jù)傳送指令5地址傳送指令(有三條地址傳送指令) LEA (Load Effective Address)一般格式: LEA OPRD1,OPRD2功能:把源操作數(shù)OPRD2的地址偏移量傳送至目的 操作數(shù)OPRD1。要求:源操作數(shù)必須是一個(gè)內(nèi)存操作數(shù),目的操作數(shù)必須是一個(gè)16位的通用寄存器。這條指令通常用來建立串操作指令所須的寄存器指針。例
16、: LEA BX,2000H;把2000H單元的偏移地址送到BX ,即BX=2000H3.2.1數(shù)據(jù)傳送指令 LDS (Load pointer into DS)一般格式: LDS OPRD1,OPRD2功能:完成一個(gè)地址指針的傳送。地址指針包括段地址部分和偏移量部分。指令將段地址送入DS,偏移量部分送入一個(gè)16位的指針寄存器或變址寄存器。要求:源操作數(shù)是一個(gè)內(nèi)存操作數(shù),目的操作數(shù)是一個(gè)通用寄存器/變址寄存器。例:LDS SI,BX ;將把BX所指的32位地址指針的段地址部分送入DS,偏移量部分送入SI。 3.2.1數(shù)據(jù)傳送指令DS:2000 20 2001 69 2002 73 2003 2
17、0DS=0B10H, 執(zhí)行 LDS SI,BX SI = 6920HDS= 2073H3.2.1數(shù)據(jù)傳送指令 LES (Load pointer into ES) 一般格式:一般格式: LES OPRD1,OPRD2這條指令除將地址指針的段地址部分送入這條指令除將地址指針的段地址部分送入ES外,與外,與LDS類似。類似。例如:例如: LES DI,BX3.2.1數(shù)據(jù)傳送指令6標(biāo)志寄存器傳送(有四條標(biāo)志傳送指令) LAHF (LOAD AH WITH FLAG)將標(biāo)志寄存器中的S、Z、A、P和C(即低8位)傳送至AH寄存器的指定位,空位沒有定義。 SAHF (STOREAH WITH FLAG)
18、將寄存器AH的指定位,送至標(biāo)志寄存器的S、Z、A、P和C位。根據(jù)AH的內(nèi)容,影響上述標(biāo)志位,對(duì)O、D和I無影響。3.2.1數(shù)據(jù)傳送指令 PUSHF (PUSH FLAG)將標(biāo)志寄存器壓入堆棧頂部,同時(shí)修改堆棧指針,不影響標(biāo)志位。 POPF (POP FLAG)堆棧頂部的一個(gè)字,傳送到標(biāo)志寄存器,同時(shí)修改堆棧指針,影響標(biāo)志位 3.2.2算術(shù)運(yùn)算算術(shù)運(yùn)算指令 80868088提供加、減、乘、除四種基本算術(shù)操作。這些操作都可用于字節(jié)或字的運(yùn)算,也可以用于帶符號(hào)數(shù)與無符號(hào)數(shù)的運(yùn)算。帶符號(hào)數(shù)用補(bǔ)碼表示。同時(shí)80868088也提供了各種校正操作,故可以進(jìn)行十進(jìn)制算術(shù)運(yùn)算。 參與加、減運(yùn)算的操作數(shù)可如下圖所
19、示:3.2.2算術(shù)運(yùn)算算術(shù)運(yùn)算指令1加法指令 (Addition)一般形式:ADD OPRD1,OPRD2 ;不帶進(jìn)位的加法 功能:OPRD1OPRD1+OPRD2完成兩個(gè)操作數(shù)相加,結(jié)果送至目的操作數(shù)OPRD1。目的操作數(shù)可以是累加器,任一通用寄存器以及存儲(chǔ)器操作數(shù)。例:ADD AL,30 ;累加器與立即數(shù)相加ADD BX,3000H ;通用寄存器與存儲(chǔ)單元內(nèi)容相加ADD DI,CX ;通用寄存器之間ADD DX,DATABX+SI;通用寄存器與存儲(chǔ)單元內(nèi)容相加ADD BETASI,DX ;存儲(chǔ)器操作數(shù)與寄存器相加這些指令對(duì)標(biāo)志位CF、DF、PF、SF、ZF和AF有影響。3.2.2算術(shù)運(yùn)算算
20、術(shù)運(yùn)算指令一般形式:ADC OPRD1,OPRD2;帶進(jìn)位的加法功能:OPRD1OPRD1+OPRD2 +CF這條指令與上條指令類似,只是在兩個(gè)操作數(shù)相加時(shí),要把進(jìn)位標(biāo)志CF的現(xiàn)行值加上去,結(jié)果送至目的操作數(shù)。ADC指令主要用于多字節(jié)運(yùn)算中。例:若有兩個(gè)四字節(jié)的數(shù),已分別放在自FIRST和SECOND開始的存儲(chǔ)區(qū)中,每個(gè)數(shù)占四個(gè)存儲(chǔ)單元。存放時(shí),最低字節(jié)在地址最低處,則可用以下程序段實(shí)現(xiàn)相加。MOV AX,F(xiàn)IRSTADD AX,SECOND ;進(jìn)行字運(yùn)算MOV THIRD,AXMOV AX,F(xiàn)IRST+2ADC AX,SECOND+2MOV THIRD+2,AX這條指令對(duì)標(biāo)志位的影響與ADD
21、相同。3.2.2算術(shù)運(yùn)算算術(shù)運(yùn)算指令一般形式:INC OPRD ;增量指令功能:OPRDOPRD+1完成對(duì)指定的操作數(shù)OPRD加1,然后返回此操作數(shù)。此指令主要用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)等。這條指令執(zhí)行的結(jié)果影響標(biāo)志位AF、OF、PF、SF和ZF,而對(duì)進(jìn)位標(biāo)志沒有影響。如:INC AL INC BX3.2.2算術(shù)運(yùn)算算術(shù)運(yùn)算指令2減法指令(Subtraction)一般形式:SUB OPRD1,OPRD2 ;不考慮借位功能:OPRD1OPRD1 - OPRD2完成兩個(gè)操作數(shù)相減,也即從OPRD1中減去OPRD2,結(jié)果放在OPRD1中。例: SUB CX,BX SUB BP,CL“Th
22、e SUB instruction does not distinguish between signed or unsigned operands. Instead, the processor evaluates the result for both data types and sets the OF and CF flags to indicate a borrow in the signed or unsigned result, respectively. The SF flag indicates the sign of the signed result”. - from I
23、ntel Architecture Software Developers Manual.3.2.2算術(shù)運(yùn)算算術(shù)運(yùn)算指令一般形式:SBB OPRD1,OPRD2 ;考慮借位功能:OPRD1OPRD1-OPRD2-CF 這條指令與SUB類似,只是在兩個(gè)操作數(shù)相減時(shí),還要減去借位標(biāo)志CF的現(xiàn)行值 指令對(duì)標(biāo)志位AF、CF、OF、PF、SF和ZF都有影響。同ADC指令一樣,本指令主要用于多字節(jié)操作數(shù)相減。 3.2.2算術(shù)運(yùn)算算術(shù)運(yùn)算指令形式:DEC OPRD;減量 功能:OPRDOPRD-1對(duì)指令的操作數(shù)減1,然后送回此操作數(shù),在相減時(shí),把操作數(shù)作為一個(gè)無符號(hào)二進(jìn)制數(shù)來對(duì)待。指令執(zhí)行的結(jié)果,影響標(biāo)志A
24、F、OF、PF、SF和ZF但對(duì)CF標(biāo)志不影響(即保持此指令以前的值)。例: DEC SI DEC CL3.2.2算術(shù)運(yùn)算算術(shù)運(yùn)算指令形式:NEG OPRD;求補(bǔ) 功能: (NEGDate) 對(duì)操作數(shù)取2的補(bǔ)碼: 相當(dāng)于 用零減去操數(shù),再把結(jié)果送回操作數(shù)。例: NEG AL若AL00111100,則取補(bǔ)后為11000100(即000000000011110011000100 若在字節(jié)操作時(shí)對(duì)-128,或在字操作時(shí)對(duì)-32768取補(bǔ),則操作數(shù)沒變化,但標(biāo)志OF置位。此指令影響標(biāo)志AF、CF、OF、PF、SF和ZF。此指令的結(jié)果一般總是使標(biāo)志CF=1(總有借位),除非在操作數(shù)為零時(shí),才使CF=0。
25、3.2.2算術(shù)運(yùn)算算術(shù)運(yùn)算指令形式:CMP OPRD1,OPRD2(比較指令)功能: OPRD1-OPRD2比較指令完成兩個(gè)操作數(shù)相減,使結(jié)果反映在標(biāo)志位上,但并不送回結(jié)果(即不帶回送的減法)。例: CMP AL,100CMP DX,DI比較指令主要用于比較兩個(gè)數(shù)之間的關(guān)系。在比較指令之后,根據(jù)ZF標(biāo)志即可判斷兩者是否相等。相等的比較相等的比較:若兩者相等,相減以后若兩者相等,相減以后結(jié)果為零,結(jié)果為零,ZFZF標(biāo)志為標(biāo)志為1 1,否則為否則為0 0。若兩者不相等,則可在若兩者不相等,則可在比較指令之后利用其它標(biāo)比較指令之后利用其它標(biāo)志位的狀態(tài)來確定兩者的志位的狀態(tài)來確定兩者的大小。大小。大小
26、的比較大小的比較:如果是兩個(gè)如果是兩個(gè)無符號(hào)數(shù)無符號(hào)數(shù)(如(如CMPCMPAXAX,BXBX)進(jìn)行比較,)進(jìn)行比較,則可以根據(jù)則可以根據(jù)CFCF標(biāo)志的狀態(tài)標(biāo)志的狀態(tài)判斷兩數(shù)大小。若結(jié)果沒判斷兩數(shù)大小。若結(jié)果沒有產(chǎn)生借位有產(chǎn)生借位(CF=0)(CF=0),顯然,顯然AXBXAXBX;若產(chǎn)生了借位;若產(chǎn)生了借位(即(即CFCF1 1),則),則AXAXBXBX。 3.2.2算術(shù)運(yùn)算算術(shù)運(yùn)算指令帶符號(hào)數(shù)比較:例:比較54與24的大小 解: 54-24=54+(-24) -24補(bǔ)=11101000,54補(bǔ)=00110110 00110110 + 11101000 100011110 OF=0,SF=0
27、,則被減數(shù)減數(shù),即54 24 例:比較120與-74的大小 解:120-(-74)=124+74 01111000 01001010 011000010 OF=1,SF=1,則被減數(shù)減數(shù),即120 -74對(duì)有符號(hào)數(shù)對(duì)有符號(hào)數(shù)的比較操作,的比較操作,若與若與的值相同,則的值相同,則被減數(shù)比減數(shù)被減數(shù)比減數(shù)大,否則被減大,否則被減數(shù)比減數(shù)小數(shù)比減數(shù)小.3.2.2算術(shù)運(yùn)算算術(shù)運(yùn)算指令例:比較24與54的大小 解:24-54=24+(-54) 00011000 24的補(bǔ)碼 +11001010 -54的補(bǔ)碼 11100010 OF=0,SF=1,則被減數(shù)減數(shù),即24 54 例:比較-24與120的大小
28、解:-24-120=-24補(bǔ)+ -120補(bǔ) 11101000 = -24補(bǔ) + 10001000 = -120補(bǔ) 101110000 OF=1,SF=0,則被減數(shù)減數(shù),即-24 ) JAE/JNA OPRD 高于等于或不低于轉(zhuǎn)移 (=)JB/JNAE OPRD 小于或不大于等于轉(zhuǎn)移 ()JBE/JNA OPRD 小于等于或不大于轉(zhuǎn)移 ()JGE/JNL OPRD 高于等于或不低于轉(zhuǎn)移 (=)JL/JNGE OPRD 小于或不大于等于轉(zhuǎn)移 ()JLE/JNG OPRD 小于等于或不大于轉(zhuǎn)移 (=)帶符號(hào)數(shù)比較轉(zhuǎn)移指令帶符號(hào)數(shù)比較轉(zhuǎn)移指令 測(cè)試轉(zhuǎn)移指令測(cè)試轉(zhuǎn)移指令JCXZ OPRD :CX=0 時(shí)
29、轉(zhuǎn)移時(shí)轉(zhuǎn)移 3.2.5.2子程序調(diào)用和返回指令 子程序是完成特定功能的一段程序 當(dāng)主程序(調(diào)用程序)需要執(zhí)行這個(gè)功能時(shí),采用CALL調(diào)用指令轉(zhuǎn)移到該子程序的起始處執(zhí)行 當(dāng)運(yùn)行完子程序功能后,采用RET返回指令回到主程序繼續(xù)執(zhí)行CALL labelRET主程序主程序子程序子程序3.2.5.2子程序調(diào)用和返回指令1.調(diào)用指令(1)段內(nèi)調(diào)用: CALL NEAR PTR OPRD 操作:SP=SP-2,(SP)+1),(SP)=IP, IP=IP+16位位移量 CALL指令首先將當(dāng)前IP內(nèi)容壓入堆棧,然后轉(zhuǎn)入子程序。(2)段間調(diào)用:CALL FAR PTR OPRD 操作:SP=SP-2,(SP)+
30、1),(SP)=CS; SP=SP-2,(SP)+1),(SP)=IP; IP=EA;CS=EA+2 CALL指令先把CS壓入堆棧,再把IP壓入堆棧, 然后轉(zhuǎn)入子程序。例:CALL NEARBX ;段內(nèi)調(diào)用CALL FAR1000 ;段間調(diào)用3.2.5.2子程序調(diào)用和返回指令2. 返回指令(1) 段內(nèi)返回: RET IPSS:SP, SPSP2從棧頂彈出一個(gè)字送到IP,棧頂指針SP+2(2) 段間返回: RET, RETF IPSS:SP,SPSP2 CSSS:SP,SPSP2從棧頂彈出第一個(gè)字送到IP,SP+2,再彈出一個(gè)字送到CS,SP+2(3) RET n與RET相同,SP+2(4)后,
31、再使SP加上n3.2.5.3循環(huán)控制指令循環(huán)控制指令 對(duì)于需要重復(fù)進(jìn)行的操作,微機(jī)系統(tǒng)可用循環(huán)程序結(jié)構(gòu)來進(jìn)行,8086/8088系統(tǒng)為了簡(jiǎn)化程序設(shè)計(jì),設(shè)置了一組循環(huán)指令,這組指令主要對(duì)CX或標(biāo)志位ZF進(jìn)行測(cè)試,確定是否循環(huán) 指令格式 執(zhí)行操作 LOOP OPRD CX=CX-1;若CX0,則循環(huán) LOOPNZ/LOOPNE OPRDCX=CX-1,若CX0 且ZF=0,則循環(huán) LOOPZ/LOOPE OPRD CX=CX-1,若CX0 且ZF=1,則循環(huán) 3.2.5.3循環(huán)控制指令 例: 有一首地址為ARRAY的M個(gè)字?jǐn)?shù)組,試編寫一段程序,求出該數(shù)組的內(nèi)容之和(不考慮溢出),并把結(jié)果存入TOTAL中,程序段如下: MOV CX,M ;設(shè)計(jì)數(shù)器初值 MOV AX,0 ;累加器初值為0 MOV SI,AX ;地址指針初值為0START:ADD AX,ARRAYSI ADD SI,2 ;修改指針值(字操作,因此加2) LOOP START
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 辭工申請(qǐng)書格式
- 英文申請(qǐng)書格式范文
- 辦公室租賃申請(qǐng)書
- 學(xué)生會(huì)入職申請(qǐng)書范文
- 精神病申請(qǐng)書范文
- 2025年中國(guó)液壓磚機(jī)市場(chǎng)競(jìng)爭(zhēng)策略及行業(yè)投資潛力預(yù)測(cè)報(bào)告
- 2025年度混凝土外加劑產(chǎn)品安全與質(zhì)量追溯體系合同
- 農(nóng)村救助申請(qǐng)書范文
- 2025年度可再生能源并網(wǎng)工程居間服務(wù)合同范本
- 2025年顱骨牽引弓行業(yè)深度研究分析報(bào)告
- 康復(fù)科院感年度工作計(jì)劃
- T-BJCC 1003-2024 首店、首發(fā)活動(dòng)、首發(fā)中心界定標(biāo)準(zhǔn)
- 《海洋自然保護(hù)區(qū)》課件
- 2024年云南機(jī)場(chǎng)集團(tuán)飛機(jī)維修服務(wù)分公司招聘筆試參考題庫含答案解析
- 外科手術(shù)及護(hù)理常規(guī)
- 北師大版五年級(jí)數(shù)學(xué)下冊(cè)教材分析解讀課件完整版
- 蘇少版小學(xué)一年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)單元備課
- 學(xué)校開學(xué)教師安全培訓(xùn)
- 出口潛力分析報(bào)告
- 晉升的述職報(bào)告
- 微信視頻號(hào)運(yùn)營(yíng)技巧攻略詳解全套
評(píng)論
0/150
提交評(píng)論