第三章指令系統(tǒng)及尋址方式1_第1頁(yè)
第三章指令系統(tǒng)及尋址方式1_第2頁(yè)
第三章指令系統(tǒng)及尋址方式1_第3頁(yè)
第三章指令系統(tǒng)及尋址方式1_第4頁(yè)
第三章指令系統(tǒng)及尋址方式1_第5頁(yè)
已閱讀5頁(yè),還剩84頁(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、教學(xué)提示全面而準(zhǔn)確地理解每條指令全面而準(zhǔn)確地理解每條指令的功能和應(yīng)用,是編寫匯編的功能和應(yīng)用,是編寫匯編語(yǔ)言程序的關(guān)鍵語(yǔ)言程序的關(guān)鍵第 3 章3.4.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送是計(jì)算機(jī)中最基本、最重要數(shù)據(jù)傳送是計(jì)算機(jī)中最基本、最重要的一種操作的一種操作傳送指令也是最常使用的一類指令傳送指令也是最常使用的一類指令傳送指令把數(shù)據(jù)從一個(gè)位置傳送到另傳送指令把數(shù)據(jù)從一個(gè)位置傳送到另一個(gè)位置一個(gè)位置除標(biāo)志寄存器傳送指令外,均除標(biāo)志寄存器傳送指令外,均不影響不影響標(biāo)志標(biāo)志位位重點(diǎn)掌握重點(diǎn)掌握MOV XCHG XLAT PUSH POP LEA第 3 章3.4.1.1 通用數(shù)據(jù)傳送指令提供方便靈活的通用傳送

2、操作提供方便靈活的通用傳送操作有有3條指令條指令MOVXCHG交換指令交換指令XLAT換碼換碼(翻譯翻譯)指令指令第 3 章傳送指令MOV(move)把一個(gè)字節(jié)或字的操作數(shù)從源地址傳把一個(gè)字節(jié)或字的操作數(shù)從源地址傳送至目的地址送至目的地址MOV reg/mem,immMOV reg/mem,imm;立即數(shù)送寄存器或主存;立即數(shù)送寄存器或主存例題例題3.4.1MOV reg/mem/seg,regMOV reg/mem/seg,reg;寄存器送(段)寄存器或主存;寄存器送(段)寄存器或主存例題例題3.4.2MOV reg/seg,memMOV reg/seg,mem;主存送(段)寄存器;主存送(

3、段)寄存器例題例題3.4.3MOV reg/mem,segMOV reg/mem,seg;段寄存器送寄存器或主存;段寄存器送寄存器或主存例題例題3.4.5例例3.4.1:立即數(shù)傳送:立即數(shù)傳送mov al,4mov al,4;al4al4,字節(jié)傳送,字節(jié)傳送mov cx,mov cx,0 0ffhffh;cx00ffhcx00ffh,字傳送,字傳送mov si,200hmov si,200h;si0200hsi0200h,字傳送,字傳送mov mov byte ptrbyte ptr si, si,0ah0ah;byte ptr byte ptr 說(shuō)明是字節(jié)操作說(shuō)明是字節(jié)操作mov mov w

4、ord ptrword ptr si+2, si+2,0bh0bh;word ptr word ptr 說(shuō)明是字操作說(shuō)明是字操作 注意立即數(shù)是字節(jié)量還是字量注意立即數(shù)是字節(jié)量還是字量 明確指令是字節(jié)操作還是字操作明確指令是字節(jié)操作還是字操作例例3.4.2:寄存器傳送:寄存器傳送mov ax,bxmov ax,bx;axbxaxbx,字傳送,字傳送mov ah,almov ah,al;ahalahal,字節(jié)傳送,字節(jié)傳送mov ds,axmov ds,ax;dsaxdsax,字傳送,字傳送mov si,almov si,al;sialsial,字節(jié)傳送,字節(jié)傳送例例3.4.3:存儲(chǔ)器傳送:存儲(chǔ)器

5、傳送mov al,bx mov al,bx ;alds:bxalds:bxmov dx,bpmov dx,bp;dxss:bpdxss:bpmov es,simov es,si;esds:siesds:simov ax,bxmov ax,bx;axds:bxaxds:bx如果如果 ds=2000H, ds=2000H, bx=1000H,bx=1000H,21000H=3035H,21000H=3035H,物理地址物理地址=20000H+1000H=21000H=20000H+1000H=21000H執(zhí)行結(jié)果執(zhí)行結(jié)果 ax=3035H ax=3035H 不存在存儲(chǔ)器向存儲(chǔ)器的傳送指令不存在存儲(chǔ)

6、器向存儲(chǔ)器的傳送指令例例3.4.5:段寄存器傳:段寄存器傳送送mov si,dsmov si,dsmov ax,esmov ax,es;axesaxesmov ds,axmov ds,ax;dsaxesdsaxes 對(duì)段寄存器的操作有一些限制對(duì)段寄存器的操作有一些限制段寄存器之間不能直接傳輸段寄存器之間不能直接傳輸,需借助需借助ax第 3 章MOV指令傳送功能MOV也并非任意傳送也并非任意傳送立即數(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 章非

7、法傳送種種兩個(gè)操作數(shù)的類型不一致兩個(gè)操作數(shù)的類型不一致n例如源操作數(shù)是字節(jié),而目的操作例如源操作數(shù)是字節(jié),而目的操作數(shù)是字;或相反數(shù)是字;或相反兩個(gè)操作數(shù)不能都是存儲(chǔ)器兩個(gè)操作數(shù)不能都是存儲(chǔ)器n傳送指令很靈活,但主存之間的直傳送指令很靈活,但主存之間的直接傳送卻不允許接傳送卻不允許段寄存器的操作有一些限制段寄存器的操作有一些限制n段寄存器屬專用寄存器,對(duì)他們的段寄存器屬專用寄存器,對(duì)他們的操作能力有限操作能力有限第 3 章兩個(gè)操作數(shù)的類型要一致絕大多數(shù)雙操作數(shù)指令,除非特別說(shuō)明,目絕大多數(shù)雙操作數(shù)指令,除非特別說(shuō)明,目的操作數(shù)與源操作數(shù)必須類型一致,否則為非的操作數(shù)與源操作數(shù)必須類型一致,否則

8、為非法指令法指令MOV AL,050AHMOV AL,050AH;非法指令:;非法指令:050Ah050Ah為字,而為字,而ALAL為字節(jié)為字節(jié)寄存器有明確的字節(jié)或字類型,有寄存器參寄存器有明確的字節(jié)或字類型,有寄存器參與的指令其操作數(shù)類型就是寄存器的類型與的指令其操作數(shù)類型就是寄存器的類型對(duì)于存儲(chǔ)器單元與立即數(shù)同時(shí)作為操作數(shù)的對(duì)于存儲(chǔ)器單元與立即數(shù)同時(shí)作為操作數(shù)的情況,必須顯式指明;情況,必須顯式指明;byte ptrbyte ptr指示字節(jié)類型,指示字節(jié)類型,word ptrword ptr指示字類型指示字類型第 3 章兩個(gè)操作數(shù)不能都是存儲(chǔ)器80868086指令系統(tǒng)不允許兩個(gè)操作數(shù)都是指

9、令系統(tǒng)不允許兩個(gè)操作數(shù)都是存儲(chǔ)單元(除串操作指令),要實(shí)現(xiàn)這存儲(chǔ)單元(除串操作指令),要實(shí)現(xiàn)這種傳送,可通過(guò)寄存器間接實(shí)現(xiàn)種傳送,可通過(guò)寄存器間接實(shí)現(xiàn)mov ax,buffer1mov ax,buffer1;axbuffer1axbuffer1(將(將buffer1buffer1內(nèi)容送內(nèi)容送axax)mov buffer2,axmov buffer2,ax;buffer2axbuffer2ax;這里;這里buffer1buffer1和和buffer2buffer2是兩個(gè)字變量是兩個(gè)字變量;實(shí)際表示直接尋址方式;實(shí)際表示直接尋址方式第 3 章要小心段寄存器的操作不允許立即數(shù)傳送給段寄存器不允許立

10、即數(shù)傳送給段寄存器MOV DS,100H;非法指令:立即數(shù)不能傳送段寄存器;非法指令:立即數(shù)不能傳送段寄存器不允許直接改變不允許直接改變CS值值MOV CS,SI ;不允許使用的指令;不允許使用的指令不允許段寄存器之間的直接數(shù)據(jù)傳送不允許段寄存器之間的直接數(shù)據(jù)傳送MOV DS,ES;非法指令:不允許段寄存器間傳送;非法指令:不允許段寄存器間傳送第 3 章交換指令XCHG(exchange)把兩個(gè)地方的數(shù)據(jù)進(jìn)行互換把兩個(gè)地方的數(shù)據(jù)進(jìn)行互換寄存器與寄存器之間對(duì)換數(shù)據(jù)寄存器與寄存器之間對(duì)換數(shù)據(jù)寄存器與存儲(chǔ)器之間對(duì)換數(shù)據(jù)寄存器與存儲(chǔ)器之間對(duì)換數(shù)據(jù)不能在存儲(chǔ)器與存儲(chǔ)器之間對(duì)換數(shù)據(jù)不能在存儲(chǔ)器與存儲(chǔ)器之間

11、對(duì)換數(shù)據(jù)XCHG reg,reg/memXCHG reg,reg/mem;reg reg reg/memreg/mem例題例題3.4.7例題例題3.4.6例例3.4.6:寄存器間交換:寄存器間交換mov ax,1234hmov ax,1234h;如果:;如果:ax=1234hax=1234hmov bx,5678hmov bx,5678h;如果:如果:bx=5678hbx=5678hxchg ax,bxxchg ax,bx;ax=5678hax=5678h,bx=1234hbx=1234hxchg ah,alxchg ah,al;ax=7856hax=7856h例例3.4.7:寄存器與存儲(chǔ)器交

12、:寄存器與存儲(chǔ)器交換換xchg ax,2000hxchg ax,2000h ;字交換;字交換;等同于;等同于 xchg 2000h,ax xchg 2000h,axxchg al,2000h xchg al,2000h ;字節(jié)交換;字節(jié)交換;等同于;等同于 xchg 2000h,al xchg 2000h,al 第 3 章?lián)Q碼指令執(zhí)行前:換碼指令執(zhí)行前:在主存建立一個(gè)在主存建立一個(gè)字節(jié)量表格字節(jié)量表格,內(nèi)含要轉(zhuǎn)換成的目的代碼,內(nèi)含要轉(zhuǎn)換成的目的代碼表格首地址表格首地址存放于存放于BXBX,ALAL存放相對(duì)表格首地址的存放相對(duì)表格首地址的位移量位移量換碼指令執(zhí)行后換碼指令執(zhí)行后:將將ALAL寄存

13、器的內(nèi)容轉(zhuǎn)換為寄存器的內(nèi)容轉(zhuǎn)換為目標(biāo)代碼目標(biāo)代碼該指令完成一個(gè)字節(jié)的查表轉(zhuǎn)換,把表的首址送基址寄存器該指令完成一個(gè)字節(jié)的查表轉(zhuǎn)換,把表的首址送基址寄存器BXBX中,表元素的下標(biāo)(在表中的相對(duì)位置,不大于中,表元素的下標(biāo)(在表中的相對(duì)位置,不大于256256字節(jié))送字節(jié))送ALAL,執(zhí)行命令后,把翻譯操作數(shù)(指定的表元素)送入,執(zhí)行命令后,把翻譯操作數(shù)(指定的表元素)送入ALAL中。中。換碼(翻譯)指令XLAT(translate)XLATXLAT;alds:bx+alalds:bx+al例題例題3.4.8例例3.4.8:代碼轉(zhuǎn)換:代碼轉(zhuǎn)換mov bx,0040Hmov bx,0040Hmov

14、al,0fH:mov al,0fH:如果;如果;ds=f000H ds=f000H , f004fH=2cH f004fH=2cH 執(zhí)行執(zhí)行 XLAT ; al=2cH XLAT ; al=2cH就是把:就是把: f0000h+0040h+0fh f0000h+0040h+0fh=f004fH=f004fH存儲(chǔ)單元的內(nèi)容存儲(chǔ)單元的內(nèi)容2cH2cH送入送入alal 換碼指令沒(méi)有顯式的操作數(shù),但使用了換碼指令沒(méi)有顯式的操作數(shù),但使用了BX和和AL;因?yàn)閾Q碼指令使用了隱含尋址方式;因?yàn)閾Q碼指令使用了隱含尋址方式采用默認(rèn)操作數(shù)采用默認(rèn)操作數(shù)3.4.2 堆棧操作指令堆棧是一個(gè)堆棧是一個(gè)“后進(jìn)先出后進(jìn)先出

15、FILOFILO”(或說(shuō)(或說(shuō)“先進(jìn)后先進(jìn)后出出FILO”FILO”)的主存區(qū)域,)的主存區(qū)域,位于堆棧段中;位于堆棧段中;SSSS段寄段寄存器存器記錄其段地址記錄其段地址堆棧只有一個(gè)進(jìn)出口,堆棧只有一個(gè)進(jìn)出口,即當(dāng)前棧頂;用即當(dāng)前棧頂;用堆棧指堆棧指針寄存器針寄存器SPSP指定指定棧頂是地址較大的一端棧頂是地址較大的一端(高端),棧底不變(高端),棧底不變第 3章第 3 章堆棧和隊(duì)列堆棧:按照后進(jìn)先堆棧:按照后進(jìn)先出出(LIFO)(LIFO)的原則組織的原則組織的存儲(chǔ)器空間(棧)的存儲(chǔ)器空間(棧)隊(duì)列:按照先進(jìn)先隊(duì)列:按照先進(jìn)先出出(FIFO)(FIFO)的原則組織的原則組織的存儲(chǔ)器空間的存

16、儲(chǔ)器空間LIFOFIFO第 3 章堆棧的操作堆棧只有兩種基本操作:進(jìn)棧和堆棧只有兩種基本操作:進(jìn)棧和出棧,對(duì)應(yīng)兩條指令出棧,對(duì)應(yīng)兩條指令PUSH和和POPPUSHPUSH;進(jìn)棧指令先使;進(jìn)棧指令先使堆棧指針堆棧指針SPSP減減2 2,然后把一個(gè)字操然后把一個(gè)字操作數(shù)存入堆棧頂作數(shù)存入堆棧頂部部POPPOP;出棧指令把棧頂;出棧指令把棧頂?shù)囊粋€(gè)字傳送至指的一個(gè)字傳送至指定的目的操作數(shù),定的目的操作數(shù),然后堆棧指針然后堆棧指針SPSP加加2 2堆棧的進(jìn)棧指令和彈棧指令對(duì)標(biāo)志位無(wú)影響第 3 章進(jìn)棧指令PUSHpush axpush axpush 2000hpush 2000hPUSH r16/m16

17、/segPUSH r16/m16/seg;SPSPSPSP2 2;SS:SPr16/m16/segSS:SPr16/m16/seg第 3 章出棧指令POPpop axpop axpop 2000hpop 2000hPOP r16/m16/segPOP r16/m16/seg;r16/m16/segSS:SPr16/m16/segSS:SP;SPSPSPSP2 2第 3 章堆棧的特點(diǎn)堆棧操作的單位是字,進(jìn)棧和出棧只對(duì)字量堆棧操作的單位是字,進(jìn)棧和出棧只對(duì)字量數(shù)據(jù)數(shù)據(jù)字量數(shù)據(jù)從棧頂壓入和彈出時(shí),都是低地址字量數(shù)據(jù)從棧頂壓入和彈出時(shí),都是低地址字節(jié)送低字節(jié),高地址字節(jié)送高字節(jié)字節(jié)送低字節(jié),高地址字節(jié)

18、送高字節(jié)堆棧操作遵循先進(jìn)后出原則,但可用存儲(chǔ)器堆棧操作遵循先進(jìn)后出原則,但可用存儲(chǔ)器尋址方式隨機(jī)存取堆棧中的數(shù)據(jù)尋址方式隨機(jī)存取堆棧中的數(shù)據(jù)堆棧常用來(lái)堆棧常用來(lái)n臨時(shí)存放數(shù)據(jù)臨時(shí)存放數(shù)據(jù)n傳遞參數(shù)傳遞參數(shù)n保存和恢復(fù)寄存器保存和恢復(fù)寄存器例題例題3.4.11例例3.4.11:現(xiàn)場(chǎng)保護(hù)恢:現(xiàn)場(chǎng)保護(hù)恢復(fù)復(fù)push axpush ax;進(jìn)入子程序后;進(jìn)入子程序后push bxpush bxpush dspush ds.pop dspop ds;返回主程序前;返回主程序前pop bxpop bxpop axpop ax第 3 章3.4.3 標(biāo)志寄存器傳送指令標(biāo)志寄存器傳送指令用來(lái)傳送標(biāo)標(biāo)志寄存器傳送指

19、令用來(lái)傳送標(biāo)志寄存器志寄存器FLAGS的內(nèi)容,方便進(jìn)的內(nèi)容,方便進(jìn)行對(duì)各個(gè)標(biāo)志位的直接操作行對(duì)各個(gè)標(biāo)志位的直接操作有有2對(duì)對(duì)4條指令條指令n低低8位傳送:位傳送:LAHF和和SAHFn16位傳送:位傳送:PUSHF和和POPF標(biāo)志低字節(jié)進(jìn)出AH指令LAHFLAHF;AHFLAGSAHFLAGS的低字節(jié)的低字節(jié)LAHFLAHF指令將標(biāo)志寄存器指令將標(biāo)志寄存器的低字節(jié)送寄存器的低字節(jié)送寄存器AHAHSF/ZF/AF/PF/CFSF/ZF/AF/PF/CF狀態(tài)標(biāo)狀態(tài)標(biāo)志位分別送入志位分別送入AHAH的第的第7/6/4/2/07/6/4/2/0位,而位,而AHAH的的第第5/3/15/3/1位任意位任

20、意SAHFSAHF;FLAGSFLAGS的低字節(jié)的低字節(jié)AHAHSAHFSAHF將將AHAH寄存器內(nèi)容寄存器內(nèi)容送送FLAGSFLAGS的低字節(jié)的低字節(jié)用用AHAH的第的第7/6/4/2/07/6/4/2/0位位相應(yīng)設(shè)置相應(yīng)設(shè)置SF/ZF/AF/ SF/ZF/AF/ PF/CFPF/CF標(biāo)志標(biāo)志第 3 章標(biāo)志寄存器位標(biāo)志寄存器進(jìn)出堆棧指令PUSHFPUSHF;SPSPSPSP2 2;SS:SPFLAGSSS:SPFLAGSPUSHFPUSHF指令將標(biāo)志寄存指令將標(biāo)志寄存器的內(nèi)容壓入堆棧,器的內(nèi)容壓入堆棧,同時(shí)棧頂指針同時(shí)棧頂指針SPSP減減2 2POPFPOPF;FLAGSSS:SPFLAGS

21、SS:SP;SPSPSPSP2 2POPFPOPF指令將棧頂字單指令將棧頂字單元內(nèi)容送標(biāo)志寄存器,元內(nèi)容送標(biāo)志寄存器,同時(shí)棧頂指針同時(shí)棧頂指針SPSP加加2 2例題例題3.12第 3 章例例3.4.12:置位單步標(biāo)志:置位單步標(biāo)志pushfpushf;保存全部標(biāo)志到堆棧;保存全部標(biāo)志到堆棧pop axpop ax;從堆棧中取出全部標(biāo)志;從堆棧中取出全部標(biāo)志or ax,0100hor ax,0100h ;設(shè)置;設(shè)置D D8 8=TF=1=TF=1,;axax其他位不變其他位不變push axpush ax;將;將axax壓入堆棧壓入堆棧popfpopf;FLAGSAXFLAGSAX;將堆棧內(nèi)容取

22、到標(biāo)志寄存器;將堆棧內(nèi)容取到標(biāo)志寄存器第 3 章3.4.4 地址目標(biāo)傳送指令地址傳送指令將存儲(chǔ)器單元的地址傳送指令將存儲(chǔ)器單元的有效地有效地址送至指定的寄存器址送至指定的寄存器n有效地址傳送指令有效地址傳送指令 LEA r16, mem注意不是獲取存儲(chǔ)器單元的內(nèi)容而是注意不是獲取存儲(chǔ)器單元的內(nèi)容而是源操作數(shù)的源操作數(shù)的有效偏移地址有效偏移地址,將源操作,將源操作數(shù)的有效偏移地址送入指定的數(shù)的有效偏移地址送入指定的16位寄位寄存器存器指針傳送指令指針傳送指令 LDS和和LESn LDS r16, mem裝入數(shù)據(jù)段寄存器裝入數(shù)據(jù)段寄存器nLES r16, mem裝入附加段寄存器裝入附加段寄存器第

23、3 章有效地址傳送指令LEA(load EA)將存儲(chǔ)器操作數(shù)的有效地址傳送至指將存儲(chǔ)器操作數(shù)的有效地址傳送至指定的定的16位寄存器中位寄存器中(16位,兩個(gè)字節(jié)位,兩個(gè)字節(jié))例題例題3.4.13LEA r16,memLEA r16,mem;r16memr16mem的有效地址的有效地址EAEA例例3.4.13:獲取有效地:獲取有效地址址mov bx,0400hmov bx,0400hmov si,3chmov si,3chlea bx,bx+si+0f62hlea bx,bx+si+0f62h;BXBX0400h0400h003ch003ch0f62h0f62h139EH139EH 獲得主存單元

24、的有效地址;不是物獲得主存單元的有效地址;不是物理地址,也不是該單元的內(nèi)容理地址,也不是該單元的內(nèi)容 可以實(shí)現(xiàn)偏移量相加計(jì)算功能可以實(shí)現(xiàn)偏移量相加計(jì)算功能地址指針傳送指令(每次4個(gè)字節(jié))LDS r16,memLDS r16,mem;r16memr16mem,;DSmem+2DSmem+2LDSLDS指令將主存中指令將主存中memmem指定的字指定的字?jǐn)?shù)據(jù)送至數(shù)據(jù)送至r16r16,并將,并將memmem的下一的下一字送字送DSDS寄存。寄存。源操作數(shù)是源操作數(shù)是4 4個(gè)連續(xù)個(gè)連續(xù)存儲(chǔ)單元存儲(chǔ)單元的內(nèi)容的內(nèi)容,高位地址內(nèi)容送到,高位地址內(nèi)容送到DSDS;低位地址內(nèi)容送低位地址內(nèi)容送r16r16LE

25、S r16,memLES r16,mem;r16memr16mem,;ESmem+2ESmem+2LESLES指令將主存中指令將主存中memmem指定指定的字送至的字送至r16r16,并將,并將memmem的的下一字送下一字送ESES寄存器。寄存器。源操作數(shù)是源操作數(shù)是4 4個(gè)連續(xù)存儲(chǔ)單個(gè)連續(xù)存儲(chǔ)單元的內(nèi)容,高位地址內(nèi)容元的內(nèi)容,高位地址內(nèi)容送到送到ESES;低位地址內(nèi)容送;低位地址內(nèi)容送r16r16例題例題3.4.14第 3 章例例3.4.14a:地址指針傳送:地址指針傳送mov word ptr 3060h,0100hmov word ptr 3060h,0100hmov word ptr

26、 3062h,1450hmov word ptr 3062h,1450hLES DI,3060hLES DI,3060h ;ES=1450hES=1450h,DI=0100hDI=0100hLDS SI,3060hLDS SI,3060h ;SI=0100hSI=0100h,DS=1450hDS=1450h memmem指定主存的連續(xù)指定主存的連續(xù)4 4個(gè)字節(jié)作個(gè)字節(jié)作為邏輯地址(為邏輯地址(3232位的地址指針),位的地址指針),送入送入DS:r16DS:r16或或ES:r16ES:r16第 3 章例3.4.14bLES DI, BX 如果指令執(zhí)行前如果指令執(zhí)行前;DS=0B000H,BX=

27、080AH, 0B080AH=05AEH,0B080CH=4000H,則則指令執(zhí)行后指令執(zhí)行后DI= 05AEH, ES=4000H第 3 章指針指令舉例3.4.14cLDS BX, TABSI; 相當(dāng)于相當(dāng)于SI+TAB BX, SI+TAB+2 DSLES DI, ARRBX; 相當(dāng)于相當(dāng)于BX+ARR DI, BX+ARR+2 ESLEA BX, DI;相當(dāng)于相當(dāng)于( MOV BX,DI )DI BXLEA AX, ADR;相當(dāng)于相當(dāng)于( MOV AX, OFFSET ADR ) ADR AX第 3 章3.4.5 輸入輸出指令8086通過(guò)輸入輸出指令與外設(shè)進(jìn)行數(shù)通過(guò)輸入輸出指令與外設(shè)進(jìn)行

28、數(shù)據(jù)交換;呈現(xiàn)給程序員的外設(shè)是據(jù)交換;呈現(xiàn)給程序員的外設(shè)是端口端口(Port)即)即I/O地址地址8086用于尋址外設(shè)端口的地址線為用于尋址外設(shè)端口的地址線為16條,端口最多為條,端口最多為21665536(64K)個(gè),端口號(hào)為個(gè),端口號(hào)為0000HFFFFH每個(gè)端口用于傳送一個(gè)字節(jié)的外設(shè)數(shù)每個(gè)端口用于傳送一個(gè)字節(jié)的外設(shè)數(shù)據(jù)據(jù)第 3 章輸入輸出尋址方式8086的端口的端口號(hào)號(hào)有有64K個(gè),無(wú)需分個(gè),無(wú)需分段,設(shè)計(jì)有兩種尋址方式段,設(shè)計(jì)有兩種尋址方式v直接尋址直接尋址:只用于尋址:只用于尋址00HFFH前前256個(gè)端口,操作數(shù)個(gè)端口,操作數(shù)i8表示端口號(hào)表示端口號(hào)v間接尋址間接尋址:可用于尋址全

29、部:可用于尋址全部64K個(gè)端個(gè)端口,口,DX寄存器的值就是端口號(hào)寄存器的值就是端口號(hào)對(duì)大于對(duì)大于FFH的端口只能采用間接尋的端口只能采用間接尋址方式址方式第 3 章輸入指令I(lǐng)N將外設(shè)數(shù)據(jù)傳送給將外設(shè)數(shù)據(jù)傳送給CPU內(nèi)的內(nèi)的AL/AXIN AL,i8IN AL,i8;字節(jié)輸入:;字節(jié)輸入:ALI/OALI/O端口(端口(i8i8直接尋址)直接尋址)IN AL,DXIN AL,DX;字節(jié)輸入:;字節(jié)輸入:ALI/OALI/O端口(端口(DXDX間接尋址)間接尋址)IN AX,i8IN AX,i8;字輸入:;字輸入:AXI/OAXI/O端口(端口(i8i8直接尋址)直接尋址)IN AX,DXIN A

30、X,DX;字輸入:;字輸入:AXI/OAXI/O端口(端口(DXDX間接尋址)間接尋址)例題例題3.4.15例例3.4.15:輸入字量:輸入字量;直接尋址,字節(jié)量輸入;直接尋址,字節(jié)量輸入in al,21hin al,21hmov ah,almov ah,alin al,20hin al,20h;直接尋址,字量輸入;直接尋址,字量輸入in ax,20hin ax,20h;間接尋址,字量輸入;間接尋址,字量輸入mov dx,20hmov dx,20hin ax,dxin ax,dx 兩段功能相同兩段功能相同 字量數(shù)據(jù)傳送實(shí)字量數(shù)據(jù)傳送實(shí)際上實(shí)現(xiàn)了連續(xù)的際上實(shí)現(xiàn)了連續(xù)的兩個(gè)端口地址的字兩個(gè)端口地址

31、的字節(jié)量傳送節(jié)量傳送第 3 章輸出指令OUT將將CPU內(nèi)的內(nèi)的AL/AX數(shù)據(jù)傳送給外設(shè)數(shù)據(jù)傳送給外設(shè)OUT i8,ALOUT i8,AL;字節(jié)輸出:;字節(jié)輸出:I/OI/O端口端口ALAL(i8i8直接尋址)直接尋址)OUT DX,ALOUT DX,AL;字節(jié)輸出:;字節(jié)輸出:I/OI/O端口端口ALAL(DXDX間接尋址)間接尋址)OUT i8,AXOUT i8,AX;字輸出:;字輸出:I/OI/O端口端口AXAX(i8i8直接尋址)直接尋址)OUT DX,AXOUT DX,AX;字輸出:;字輸出:I/OI/O端口端口AXAX(DXDX間接尋址)間接尋址)例題例題3.4.16例例3.4.16

32、:輸出字節(jié)量:輸出字節(jié)量;間接尋址,字節(jié)量輸出;間接尋址,字節(jié)量輸出mov dx,3fchmov dx,3fchmov al,80hmov al,80hout dx,alout dx,al第 3 章3.5. 算術(shù)運(yùn)算類指令四則運(yùn)算是計(jì)算機(jī)經(jīng)常進(jìn)行的一種操四則運(yùn)算是計(jì)算機(jī)經(jīng)常進(jìn)行的一種操作。算術(shù)運(yùn)算指令實(shí)現(xiàn)二進(jìn)制(和十作。算術(shù)運(yùn)算指令實(shí)現(xiàn)二進(jìn)制(和十進(jìn)制)數(shù)據(jù)的四則運(yùn)算進(jìn)制)數(shù)據(jù)的四則運(yùn)算請(qǐng)注意算術(shù)運(yùn)算類指令請(qǐng)注意算術(shù)運(yùn)算類指令對(duì)標(biāo)志的影響對(duì)標(biāo)志的影響n掌握:掌握:ADD/ADC/INC、SUB/SBB/DEC/ NEG/CMPn熟悉:熟悉:MUL/IMUL、DIV/IDIVn理解:理解:CBW

33、/CWD、DAA/DAS、 AAA/ AAS/AAM/AAD第 3 章加法指令A(yù)DDADD指令將源與目的操作數(shù)相加,結(jié)指令將源與目的操作數(shù)相加,結(jié)果送到目的操作數(shù)果送到目的操作數(shù)ADD指令按狀態(tài)標(biāo)志的定義相應(yīng)設(shè)置指令按狀態(tài)標(biāo)志的定義相應(yīng)設(shè)置ADD reg,imm/reg/memADD reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memADD mem,imm/regADD mem,imm/reg;memmemmemmemimm/regimm/reg例題例題3.5.1例例3.5.1a:加法運(yùn)算:加法運(yùn)算mov al,0fbhmov al,0fbh;

34、al=0fbhal=0fbhadd al,07hadd al,07h;al=02hal=02hmov word ptr 200h,4652hmov word ptr 200h,4652h;200h=4652h 200h=4652h 通常目的操作數(shù)是存通常目的操作數(shù)是存儲(chǔ)器尋址方式時(shí)要有字節(jié)數(shù)說(shuō)明符儲(chǔ)器尋址方式時(shí)要有字節(jié)數(shù)說(shuō)明符mov bx,1fehmov bx,1feh;bx=1fehbx=1fehadd al,bladd al,bl;al=00hal=00hadd word ptr bx+2,0f0f0hadd word ptr bx+2,0f0f0h;200h=3742h200h=3742

35、h第 3 章帶進(jìn)位加法指令A(yù)DCADC指令將源與目的操作數(shù)相加,再加上進(jìn)指令將源與目的操作數(shù)相加,再加上進(jìn)位位CF標(biāo)志,結(jié)果送到目的操作數(shù)標(biāo)志,結(jié)果送到目的操作數(shù)ADC指令按狀態(tài)標(biāo)志的定義相應(yīng)設(shè)置指令按狀態(tài)標(biāo)志的定義相應(yīng)設(shè)置ADC指令主要與指令主要與ADD配合,實(shí)現(xiàn)多精度加法配合,實(shí)現(xiàn)多精度加法運(yùn)算運(yùn)算ADC reg,imm/reg/memADC reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memCFCFADC mem,imm/regADC mem,imm/reg;memmemmemmemimm/regimm/regCFCF例題例題3.4.6.

36、2例例3.5.6.2a:雙字加法:雙字加法mov ax,4652hmov ax,4652h;ax=4652hax=4652hadd ax,0f0f0hadd ax,0f0f0h ;ax=3742hax=3742h,CF=1CF=1mov dx,0234hmov dx,0234h;dx=0234hdx=0234hadc dx,0f0f0hadc dx,0f0f0h ;dx=f325hdx=f325h,CF=0CF=0;DX.AXDX.AX0234 4652H0234 4652HF0F0 F0F0HF0F0 F0F0HF325 3742HF325 3742H第 3 章增量指令I(lǐng)NC(increme

37、nt)INC指令對(duì)操作數(shù)加指令對(duì)操作數(shù)加1(增量)(增量)INC指令不影響進(jìn)位指令不影響進(jìn)位CF標(biāo)志,按標(biāo)志,按定義設(shè)置其他狀態(tài)標(biāo)志定義設(shè)置其他狀態(tài)標(biāo)志INC reg/memINC reg/mem;reg/memreg/memreg/memreg/mem1 1inc bxinc bxinc byte ptr bxinc byte ptr bx第 3 章減法指令SUB(subtract)SUB指令將目的操作數(shù)減去源操作數(shù),指令將目的操作數(shù)減去源操作數(shù),結(jié)果送到目的操作數(shù)結(jié)果送到目的操作數(shù)SUB指令按照定義相應(yīng)設(shè)置狀態(tài)標(biāo)志指令按照定義相應(yīng)設(shè)置狀態(tài)標(biāo)志SUB reg,imm/reg/memSUB r

38、eg,imm/reg/mem;regregregregimm/reg/memimm/reg/memSUB mem,imm/regSUB mem,imm/reg;memmemmemmemimm/regimm/reg例題例題3.4.6.3例例3.5.6.3b:減法運(yùn)算:減法運(yùn)算mov al,0fbhmov al,0fbh;al=0fbhal=0fbhsub al,07hsub al,07h;al=0f4hal=0f4h,CFCF0 0mov word ptr 200h,4652hmov word ptr 200h,4652h;200h=4652h200h=4652hmov bx,1fehmov b

39、x,1feh;bx=1fehbx=1fehsub al,blsub al,bl;al=al=0f6h0f6hsub word ptr bx+2,0f0f0hsub word ptr bx+2,0f0f0h;200h=5562h200h=5562h,CFCF1 1第 3 章帶借位減法指令SBBSBB指令將目的操作數(shù)減去源操作數(shù),再減指令將目的操作數(shù)減去源操作數(shù),再減去借位去借位CF(進(jìn)位),結(jié)果送到目的操作數(shù)。(進(jìn)位),結(jié)果送到目的操作數(shù)。SBB指令按照定義相應(yīng)設(shè)置狀態(tài)標(biāo)志指令按照定義相應(yīng)設(shè)置狀態(tài)標(biāo)志SBB指令主要與指令主要與SUB配合,實(shí)現(xiàn)多精度減法配合,實(shí)現(xiàn)多精度減法運(yùn)算運(yùn)算SBB reg,

40、imm/reg/memSBB reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memCFCFSBB mem,imm/regSBB mem,imm/reg;memmemmemmemimm/regimm/regCFCF例題例題3.18例例3.18b:雙字減法:雙字減法mov ax,4652hmov ax,4652h;ax=4652hax=4652hsub ax,0f0f0hsub ax,0f0f0h ;ax=5562hax=5562h,CF=1CF=1mov dx,0234hmov dx,0234h;dx=0234hdx=0234hsbb dx,0f0

41、f0hsbb dx,0f0f0h ;dx=1143hdx=1143h,CF=1CF=1;DX.AXDX.AX0234 4652H0234 4652HF0F0 F0F0HF0F0 F0F0H1143 5562H1143 5562H第 3 章減量指令DEC(decrement)DEC指令對(duì)操作數(shù)減指令對(duì)操作數(shù)減1(減量)(減量)DEC指令不影響進(jìn)位指令不影響進(jìn)位CF標(biāo)志,按標(biāo)志,按定義設(shè)置其他狀態(tài)標(biāo)志定義設(shè)置其他狀態(tài)標(biāo)志DEC reg/memDEC reg/mem;reg/memreg/memreg/memreg/mem1 1dec cxdec cxdec word ptr sidec word

42、ptr si INC指令和指令和DEC指令都是單操作數(shù)指令指令都是單操作數(shù)指令 主要用于對(duì)計(jì)數(shù)器和地址指針的調(diào)整主要用于對(duì)計(jì)數(shù)器和地址指針的調(diào)整第 3 章求補(bǔ)指令NEG(negative)NEG指令對(duì)操作數(shù)執(zhí)行求補(bǔ)運(yùn)算:用指令對(duì)操作數(shù)執(zhí)行求補(bǔ)運(yùn)算:用零減去操作數(shù),其結(jié)果返回操作數(shù)零減去操作數(shù),其結(jié)果返回操作數(shù)求補(bǔ)運(yùn)算也可以表達(dá)成:將操作數(shù)按求補(bǔ)運(yùn)算也可以表達(dá)成:將操作數(shù)按位取反后加位取反后加1NEG指令對(duì)標(biāo)志的影響與用零作減法指令對(duì)標(biāo)志的影響與用零作減法的的SUB指令一樣指令一樣NEG reg/memNEG reg/mem;reg/mem0reg/mem0reg/memreg/mem例題例題3

43、.5.19例例3.5.19:求補(bǔ)運(yùn)算:求補(bǔ)運(yùn)算mov ax,0ff64hmov ax,0ff64hneg alneg al;ax=ff9chax=ff9ch,OF=0OF=0、SF=1SF=1、ZF=0ZF=0、PF=1PF=1、CF=1CF=1sub al,9dhsub al,9dh;ax=ffffhax=ffffh,OF=0OF=0、SF=1SF=1、ZF=0ZF=0、PF=1PF=1、CF=1CF=1neg axneg ax;ax=0001hax=0001h,OF=0OF=0、SF=0SF=0、ZF=0ZF=0、PF=0PF=0、CF=1CF=1dec aldec al;ax=0000h

44、ax=0000h,OF=0OF=0、SF=0SF=0、ZF=1ZF=1、PF=1PF=1、CF=1CF=1neg axneg ax;ax=0000hax=0000h,OF=0OF=0、SF=0SF=0、ZF=1ZF=1、PF=1PF=1、CF=0CF=0第 3 章比較指令CMP(compare)CMP指令將目的操作數(shù)減去源操作數(shù),指令將目的操作數(shù)減去源操作數(shù),按照定義相應(yīng)設(shè)置狀態(tài)標(biāo)志按照定義相應(yīng)設(shè)置狀態(tài)標(biāo)志CMP指令執(zhí)行的功能與指令執(zhí)行的功能與SUB指令,但指令,但結(jié)果不回送目的操作數(shù)結(jié)果不回送目的操作數(shù)CMP reg,imm/reg/memCMP reg,imm/reg/mem;regreg

45、imm/reg/memimm/reg/memCMP mem,imm/regCMP mem,imm/reg;memmemimm/regimm/reg例題例題3.5.20例例3.5.20:比較:比較AL與與100cmp al,100cmp al,100;al-100al-100jb belowjb below;al100al100,跳轉(zhuǎn)到,跳轉(zhuǎn)到belowbelow執(zhí)行執(zhí)行sub al,100sub al,100;al100al100,alal-100alal-100inc ahinc ah;ahah+1ahah+1below:below: . 執(zhí)行比較指令之后,可以根據(jù)標(biāo)志執(zhí)行比較指令之后,可以

46、根據(jù)標(biāo)志判斷兩個(gè)數(shù)是否相等、大小關(guān)系等判斷兩個(gè)數(shù)是否相等、大小關(guān)系等3.5.1 乘法指令MUL r8/m8MUL r8/m8;無(wú)符號(hào)字節(jié)乘法;無(wú)符號(hào)字節(jié)乘法;AXALAXALr8/m8r8/m8MUL r16/m16MUL r16/m16;無(wú)符號(hào)字乘法;無(wú)符號(hào)字乘法;DX.AXAXDX.AXAXr16/m16r16/m16IMUL r8/m8IMUL r8/m8;有符號(hào)字節(jié)乘法;有符號(hào)字節(jié)乘法;AXALAXALr8/m8r8/m8IMUL r16/m16IMUL r16/m16;有符號(hào)字乘法;有符號(hào)字乘法;DX.AXAXDX.AXAXr16/m16r16/m16例題例題3.5.1.1第 3 章

47、第 3 章乘法指令的功能乘法指令乘法指令分無(wú)符號(hào)和有符號(hào)乘法指令分無(wú)符號(hào)和有符號(hào)乘法指令乘法指令的源操作數(shù)顯式給出,乘法指令的源操作數(shù)顯式給出,隱含隱含使用另一個(gè)操作數(shù)使用另一個(gè)操作數(shù)AX和和DXn字節(jié)量相乘:字節(jié)量相乘:AL與與r8/m8相乘,得到相乘,得到16位位的結(jié)果,存入的結(jié)果,存入AXn字量相乘:字量相乘:AX與與r16/m16相乘,得到相乘,得到32位的結(jié)果,其高字存入位的結(jié)果,其高字存入DX,低字存入,低字存入AX乘法指令乘法指令利用利用OF和和CF判斷乘積的高一判斷乘積的高一半是否具有有效數(shù)值半是否具有有效數(shù)值第 3 章乘法指令對(duì)標(biāo)志的影響乘法指令將按如下影響乘法指令將按如下影

48、響OF和和CF標(biāo)志:標(biāo)志:nMUL指令指令若乘積的高一半(若乘積的高一半(AH或或DX)為為0,則,則OF=CF=0;否則;否則OF=CF=1nIMUL指令指令若乘積的高一半是低一半的若乘積的高一半是低一半的符符號(hào)擴(kuò)展號(hào)擴(kuò)展,則,則OF=CF=0;否則均為;否則均為1乘法指令對(duì)其他狀態(tài)標(biāo)志乘法指令對(duì)其他狀態(tài)標(biāo)志沒(méi)有定義沒(méi)有定義 對(duì)標(biāo)志沒(méi)有定義:指令執(zhí)行后這些標(biāo)志是任對(duì)標(biāo)志沒(méi)有定義:指令執(zhí)行后這些標(biāo)志是任意的、不可預(yù)測(cè)(就是誰(shuí)也不知道是意的、不可預(yù)測(cè)(就是誰(shuí)也不知道是0還是還是1) 對(duì)標(biāo)志沒(méi)有影響:指令執(zhí)行不改變標(biāo)志狀態(tài)對(duì)標(biāo)志沒(méi)有影響:指令執(zhí)行不改變標(biāo)志狀態(tài)例例3.5.1.1:乘法運(yùn)算:乘法運(yùn)算

49、mov al,0b4hmov al,0b4h;al=b4h=180al=b4h=180mov bl,11hmov bl,11h;bl=11h=17bl=11h=17mul blmul bl;ax=Obf4h=3060ax=Obf4h=3060;OF=CF=1OF=CF=1,AXAX高高8 8位不為位不為0 0mov al,0b4hmov al,0b4h;al=b4h=al=b4h=7676mov bl,11hmov bl,11h;bl=11h=17bl=11h=17imul blimul bl;ax=faf4h=ax=faf4h=12921292;OF=CF=1OF=CF=1,AXAX高高8

50、8位含有效數(shù)字位含有效數(shù)字3.5.2 除法指令DIV r8/m8DIV r8/m8;無(wú)符號(hào)字節(jié)除法:;無(wú)符號(hào)字節(jié)除法:ALAXALAXr8/m8r8/m8的商,的商,AhAXAhAXr8/m8r8/m8的余數(shù)的余數(shù)DIV r16/m16DIV r16/m16;無(wú)符號(hào)字除法:;無(wú)符號(hào)字除法:;AXDX.AXAXDX.AXr16/m16r16/m16的商,的商,DXDX.AXDXDX.AXr16/m16r16/m16的余數(shù)的余數(shù)IDIV r8/m8IDIV r8/m8;有符號(hào)字節(jié)除法:;有符號(hào)字節(jié)除法:ALAXALAXr8/m8r8/m8的商,的商,AhAXAhAXr8/m8r8/m8的余數(shù)的余數(shù)

51、IDIV r16/m16IDIV r16/m16;有符號(hào)字除法:;有符號(hào)字除法:;AXDX.AXAXDX.AXr16/m16r16/m16的商,的商,DXDX.AXDXDX.AXr16/m16r16/m16的余數(shù)的余數(shù)例題例題3.22第 3章第 3 章除法指令的功能除法指令分無(wú)符號(hào)和有符號(hào)除法指令除法指令分無(wú)符號(hào)和有符號(hào)除法指令除法指令的除數(shù)顯式給出,隱含使用除法指令的除數(shù)顯式給出,隱含使用另一個(gè)操作數(shù)另一個(gè)操作數(shù)AX和和DX作為被除數(shù)作為被除數(shù)n字節(jié)量除法:字節(jié)量除法:AX除以除以r8/m8,8位商存入位商存入AL,8位余數(shù)存入位余數(shù)存入AHn字量除法:字量除法:DX.AX除以除以r16/m

52、16,16位商位商存入存入AX,16位余數(shù)存入位余數(shù)存入DX除法指令對(duì)標(biāo)志沒(méi)有定義除法指令對(duì)標(biāo)志沒(méi)有定義除法指令會(huì)除法指令會(huì)產(chǎn)生結(jié)果溢出產(chǎn)生結(jié)果溢出第 3 章除法出錯(cuò)中斷當(dāng)被除數(shù)(分子)遠(yuǎn)大于除數(shù)(分母)時(shí),當(dāng)被除數(shù)(分子)遠(yuǎn)大于除數(shù)(分母)時(shí),所得的商就有可能超出它所能表達(dá)的范圍。所得的商就有可能超出它所能表達(dá)的范圍。如果存放商的寄存器如果存放商的寄存器AL/AX不能表達(dá),便不能表達(dá),便產(chǎn)生溢出,產(chǎn)生溢出,8086CPU中就產(chǎn)生編號(hào)為中就產(chǎn)生編號(hào)為0的的內(nèi)部中斷內(nèi)部中斷除法錯(cuò)中斷除法錯(cuò)中斷n對(duì)對(duì)DIV指令,除數(shù)為指令,除數(shù)為0,或者在字節(jié)除時(shí)商超,或者在字節(jié)除時(shí)商超過(guò)過(guò)8位,或者在字除時(shí)商超

53、過(guò)位,或者在字除時(shí)商超過(guò)16位,則發(fā)生除位,則發(fā)生除法溢出法溢出n對(duì)對(duì)IDIV指令,除數(shù)為指令,除數(shù)為0,或者在字節(jié)除時(shí)商不,或者在字節(jié)除時(shí)商不在在-128127范圍內(nèi),或者在字除時(shí)商不在范圍內(nèi),或者在字除時(shí)商不在-3276832767范圍內(nèi),則發(fā)生除法溢出范圍內(nèi),則發(fā)生除法溢出例例3.22:除法運(yùn)算:除法運(yùn)算mov ax,0400hmov ax,0400h;ax=400h=1024ax=400h=1024mov bl,0b4hmov bl,0b4h;bl=b4h=180bl=b4h=180div bldiv bl;商;商alal05h05h5 5;余數(shù);余數(shù)ahah7ch7ch124124m

54、ov ax,0400hmov ax,0400h;ax=400h=1024ax=400h=1024mov bl,0b4hmov bl,0b4h;bl=b4h=bl=b4h=7676idiv blidiv bl;商;商alalf3hf3h1313;余數(shù);余數(shù)ahah24h24h36363.5.3 符號(hào)擴(kuò)展指令CBWCBW;ALAL的符號(hào)擴(kuò)展至的符號(hào)擴(kuò)展至AHAH;如;如ALAL的最高有效位是的最高有效位是0 0,則,則AHAH0000;ALAL的最高有效位為的最高有效位為1 1,則,則AHAHFFHFFH。ALAL不變不變CWDCWD;AXAX的符號(hào)擴(kuò)展至的符號(hào)擴(kuò)展至DXDX;如;如AXAX的最高

55、有效位是的最高有效位是0 0,則,則DXDX0000;AXAX的最高有效位為的最高有效位為1 1,則,則DXDXFFFFHFFFFH。AXAX不變不變什么是什么是符號(hào)擴(kuò)展符號(hào)擴(kuò)展符號(hào)擴(kuò)展指令常用于獲得倍長(zhǎng)的數(shù)據(jù)符號(hào)擴(kuò)展指令常用于獲得倍長(zhǎng)的數(shù)據(jù) 不影響標(biāo)志位不影響標(biāo)志位例題例題3.5.3.1例題例題3.5.3.2第 3 章第 3 章符號(hào)擴(kuò)展的概念符號(hào)擴(kuò)展是指用一個(gè)操作數(shù)的符號(hào)位符號(hào)擴(kuò)展是指用一個(gè)操作數(shù)的符號(hào)位(即最高位)形成另一個(gè)操作數(shù),后(即最高位)形成另一個(gè)操作數(shù),后一個(gè)操作數(shù)的各位是全一個(gè)操作數(shù)的各位是全0(正數(shù))或全(正數(shù))或全1(負(fù)數(shù))。(負(fù)數(shù))。符號(hào)擴(kuò)展不改變數(shù)據(jù)大小符號(hào)擴(kuò)展不改變數(shù)

56、據(jù)大小n對(duì)于數(shù)據(jù)對(duì)于數(shù)據(jù)64H(表示十進(jìn)制數(shù)據(jù)(表示十進(jìn)制數(shù)據(jù)100),),其最高位其最高位D7為為0,符號(hào)擴(kuò)展后高,符號(hào)擴(kuò)展后高8位都是位都是0,成為成為0064H(仍表示數(shù)據(jù)(仍表示數(shù)據(jù)100)n對(duì)于數(shù)據(jù)對(duì)于數(shù)據(jù)ff00H(補(bǔ)碼形式表示有符號(hào)數(shù)(補(bǔ)碼形式表示有符號(hào)數(shù)256),其最高位),其最高位D15為為1,符號(hào)擴(kuò)展后,符號(hào)擴(kuò)展后高高16位都是位都是1,成為,成為ffffff00H(仍表示有(仍表示有符號(hào)數(shù)符號(hào)數(shù)256)例例3.5.3.1:符號(hào)擴(kuò)展:符號(hào)擴(kuò)展mov al,80hmov al,80h;al=80hal=80hcbwcbw;ax=ff80hax=ff80hadd al,255a

57、dd al,255;al=7fhal=7fhcbwcbw;ax=007fhax=007fh例例3.5.3.2:AXBXcwdcwd;DX.AXAXDX.AXAXidiv bxidiv bx;AXDX.AXAXDX.AXBXBX 利用符號(hào)擴(kuò)展指令得到除法指令所利用符號(hào)擴(kuò)展指令得到除法指令所需要的倍長(zhǎng)于除數(shù)的被除數(shù)需要的倍長(zhǎng)于除數(shù)的被除數(shù) 對(duì)無(wú)符號(hào)數(shù)除法應(yīng)該采用直接使高對(duì)無(wú)符號(hào)數(shù)除法應(yīng)該采用直接使高8位或高位或高16位清位清0的方法,獲得倍長(zhǎng)的的方法,獲得倍長(zhǎng)的被除數(shù)被除數(shù)3.5.4 十進(jìn)制調(diào)整指令q壓縮壓縮BCD碼就是通常碼就是通常的的8421碼;它用碼;它用4個(gè)二個(gè)二進(jìn)制位表示一個(gè)十進(jìn)進(jìn)制位表

58、示一個(gè)十進(jìn)制位,一個(gè)字節(jié)可以制位,一個(gè)字節(jié)可以表示兩個(gè)十進(jìn)制位,表示兩個(gè)十進(jìn)制位,即即0099q非壓縮非壓縮BCD碼用碼用8個(gè)個(gè)二進(jìn)制位表示一個(gè)十二進(jìn)制位表示一個(gè)十進(jìn)制位,只用低進(jìn)制位,只用低4個(gè)個(gè)二進(jìn)制位表示一個(gè)十二進(jìn)制位表示一個(gè)十進(jìn)制位進(jìn)制位09,高,高4位位任意,通常默認(rèn)為任意,通常默認(rèn)為0十進(jìn)制數(shù)調(diào)整指令對(duì)二進(jìn)制運(yùn)算的結(jié)果進(jìn)十進(jìn)制數(shù)調(diào)整指令對(duì)二進(jìn)制運(yùn)算的結(jié)果進(jìn)行十進(jìn)制調(diào)整,以得到十進(jìn)制的運(yùn)算結(jié)果行十進(jìn)制調(diào)整,以得到十進(jìn)制的運(yùn)算結(jié)果分成壓縮分成壓縮BCDBCD碼和非壓縮碼和非壓縮BCDBCD碼調(diào)整碼調(diào)整第 2 章第 3 章BCD碼(Binary Coded Decimal)二進(jìn)制編碼的十

59、進(jìn)制數(shù):一位十二進(jìn)制編碼的十進(jìn)制數(shù):一位十進(jìn)制數(shù)用進(jìn)制數(shù)用4位二進(jìn)制編碼來(lái)表示位二進(jìn)制編碼來(lái)表示8086支持壓縮支持壓縮BCD碼和非壓縮碼和非壓縮BCD碼的調(diào)整運(yùn)算碼的調(diào)整運(yùn)算十進(jìn)制數(shù)真值十進(jìn)制數(shù)真值864二進(jìn)制編碼二進(jìn)制編碼01000B01000000B十六進(jìn)制數(shù)真值十六進(jìn)制數(shù)真值 08H 40H壓縮壓縮BCD碼碼08H 64H非壓縮非壓縮BCD碼碼08H 0604H壓縮BCD碼加、減調(diào)整指令(ADD AL,i8/r8/m8ADD AL,i8/r8/m8)(ADC AL,i8/r8/m8ADC AL,i8/r8/m8)DAADAA;ALAL將將ALAL中相加后中相加后的的和調(diào)整為壓縮和調(diào)整為

60、壓縮BCDBCD碼碼(SUB AL,i8/r8/m8SUB AL,i8/r8/m8)(SBB AL,i8/r8/m8SBB AL,i8/r8/m8)DASDAS;ALAL將將ALAL中相減后中相減后的的差調(diào)整為壓縮差調(diào)整為壓縮BCDBCD碼碼使用使用DAA或或DAS指令前,應(yīng)先執(zhí)行以指令前,應(yīng)先執(zhí)行以AL為目的操為目的操作數(shù)的加法或減法指令作數(shù)的加法或減法指令DAA和和DAS指令對(duì)指令對(duì)OF標(biāo)志無(wú)定義,按結(jié)果影響其標(biāo)志無(wú)定義,按結(jié)果影響其他標(biāo)志,例如他標(biāo)志,例如CF反映壓縮反映壓縮BCD碼相加或減的進(jìn)位碼相加或減的進(jìn)位或借位狀態(tài)或借位狀態(tài)第 3 章例題例題3.5.4.1a例題例題3.5.4.1

溫馨提示

  • 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)論