版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 第三章第三章 教學(xué)重點(diǎn)教學(xué)重點(diǎn)8088/8086的尋址方式的尋址方式8088/8086的基本指令的基本指令傳送指令傳送指令算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令邏輯運(yùn)算和移位指令邏輯運(yùn)算和移位指令串操作指令串操作指令控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令指令的基本組成指令的基本組成操作碼操作碼說明計(jì)算機(jī)要執(zhí)行哪種操作,如傳送、運(yùn)算、說明計(jì)算機(jī)要執(zhí)行哪種操作,如傳送、運(yùn)算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分分操作數(shù)操作數(shù) 指明參與操作的數(shù)是誰或存放在何處指明參與操作的數(shù)是誰或存放在何處 尋找操作數(shù)的方法叫尋址方式尋找操作數(shù)的方法叫尋址方式在轉(zhuǎn)移調(diào)用指令中尋找新的轉(zhuǎn)移
2、地址也是尋址方式。在轉(zhuǎn)移調(diào)用指令中尋找新的轉(zhuǎn)移地址也是尋址方式。操作碼操作碼操作數(shù)操作數(shù)指令由操作碼和操作數(shù)兩部分組成指令由操作碼和操作數(shù)兩部分組成 1 操作數(shù)的尋址方式操作數(shù)的尋址方式指令系統(tǒng)設(shè)計(jì)了多種操作數(shù)的來源指令系統(tǒng)設(shè)計(jì)了多種操作數(shù)的來源尋找操作數(shù)的過程就是操作數(shù)的尋址尋找操作數(shù)的過程就是操作數(shù)的尋址理解操作數(shù)的尋址方式是理解指令功能的理解操作數(shù)的尋址方式是理解指令功能的前提前提操作數(shù)采取哪一種尋址方式操作數(shù)采取哪一種尋址方式一方面,會影響處理器執(zhí)行指令的速度和效率一方面,會影響處理器執(zhí)行指令的速度和效率另一方面,另一方面,對程序設(shè)計(jì)也很重要對程序設(shè)計(jì)也很重要一、一、 立即數(shù)尋址方式立
3、即數(shù)尋址方式指令中直接給出一個常數(shù)作為操作數(shù),其緊跟在指令中直接給出一個常數(shù)作為操作數(shù),其緊跟在操作碼之后存放在代碼段中。立即數(shù)直接從指令操作碼之后存放在代碼段中。立即數(shù)直接從指令隊(duì)列中取得,不用總線周期,執(zhí)行數(shù)度快。隊(duì)列中取得,不用總線周期,執(zhí)行數(shù)度快。這種操作數(shù)被稱為這種操作數(shù)被稱為立即數(shù)立即數(shù)可以是可以是8位數(shù)值(位數(shù)值(00HFFH)也可以是也可以是16位數(shù)值(位數(shù)值(0000HFFFFH)立即數(shù)尋址方式常用來給寄存器和存儲單元賦值,立即數(shù)尋址方式常用來給寄存器和存儲單元賦值,多以常量形式出現(xiàn)多以常量形式出現(xiàn)注意:立即數(shù)只能是整數(shù)而且是常數(shù)。注意:立即數(shù)只能是整數(shù)而且是常數(shù)。MOV A
4、X, 0102H;AX0102H二、二、 寄存器尋址方式寄存器尋址方式指令中指明某個寄存器其內(nèi)容即為操作數(shù),寄存指令中指明某個寄存器其內(nèi)容即為操作數(shù),寄存器在器在CPU內(nèi),不用總線周期,執(zhí)行速度快。內(nèi),不用總線周期,執(zhí)行速度快。8位寄存器位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DL16位寄存器位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SP4個段寄存器個段寄存器seg:CS、DS、SS、ESMOV AX, BX;AXBX三、直接尋址方式三、直接尋址方式指令中直接給出操作數(shù)所在內(nèi)存單元的有效地指令中直接給出操作數(shù)所在內(nèi)存單元的有效地址址 (EA即偏移地址)即偏移地址
5、)默認(rèn)的默認(rèn)的段地址在段地址在DS段寄存器,若在其它段可使段寄存器,若在其它段可使用用段超越前綴段超越前綴改變。改變。用方括號包含有效地址,表達(dá)存儲單元的內(nèi)容用方括號包含有效地址,表達(dá)存儲單元的內(nèi)容直接地址也可用標(biāo)號代表,方括號可省略。直接地址也可用標(biāo)號代表,方括號可省略。MOV AX, 2000H;AXDS:2000HMOV AX, ES: 2000H;AXES:2000H四、寄存器間接尋址方式四、寄存器間接尋址方式指令中給出的寄存器的內(nèi)容包含操作數(shù)的有效地指令中給出的寄存器的內(nèi)容包含操作數(shù)的有效地址。址。間接尋址中使用的寄存器名要用方括號括起來間接尋址中使用的寄存器名要用方括號括起來1、基
6、址尋址、基址尋址 用用BX或或BP作間接尋址寄存器作間接尋址寄存器 如:如:MOV AX,BX ;隱含在;隱含在DS段段 MOV AX,BP ;隱含在;隱含在SS段段MOV AX, BX;AXDS:BX2、變址尋址、變址尋址 用用SI或或DI作間接尋址寄存器作間接尋址寄存器 如:如:MOV CL, SI MOV AX, DI 單獨(dú)使用單獨(dú)使用SI或或DI時(shí),隱含在時(shí),隱含在DS段中段中 在串操作時(shí),在串操作時(shí),SI隱含在隱含在DS段中,段中,DI隱含在隱含在ES段段中。中。3、相對基址尋址、相對基址尋址 指令中給出基址寄存器及位移量,二者之和為操指令中給出基址寄存器及位移量,二者之和為操作數(shù)的
7、有效地址。作數(shù)的有效地址。 位移量可以是位移量可以是8位或位或16位。位。有效地址有效地址BX/BPBX/BP8/168/16位位移量位位移量4、相對變址尋址、相對變址尋址 指令中給出變址寄存器及位移指令中給出變址寄存器及位移量,二者之和為操作數(shù)的有效地址。量,二者之和為操作數(shù)的有效地址。有效地址有效地址SI/DISI/DI8/168/16位位移量位位移量段地址對應(yīng)段地址對應(yīng)BX/SI/DI寄存器寄存器默認(rèn)是默認(rèn)是DS,對應(yīng),對應(yīng)BP寄存器寄存器默認(rèn)是默認(rèn)是SS;可用段超越前綴改變;可用段超越前綴改變MOV AX, SI+06H;AXDS:SI+06HMOV AX, 06HSI;AXDS:SI
8、+06H5、 基址變址尋址方式基址變址尋址方式有效地址有效地址由基址寄存器(由基址寄存器(BX或或BP)的內(nèi)容加上)的內(nèi)容加上變址寄存器(變址寄存器(SI或或DI)的內(nèi)容構(gòu)成:)的內(nèi)容構(gòu)成:有效地址有效地址BX/BPSI/DI段地址對應(yīng)段地址對應(yīng)BX基址寄存器基址寄存器默認(rèn)是默認(rèn)是DS,對應(yīng),對應(yīng)BP基基址寄存器址寄存器默認(rèn)是默認(rèn)是SS;可用段超越前綴改變;可用段超越前綴改變MOV AX, BX+SI;AXDS:BX+SIMOV AX, BXSI;AXDS:BX+SI6、 相對基址變址尋址方式相對基址變址尋址方式有效地址有效地址是基址寄存器(是基址寄存器(BX/BP)、變址寄存器)、變址寄存器
9、(SI/DI)與一個)與一個8位或位或16位位移量之和:位位移量之和:有效地址有效地址BX/BPSI/DI8/16位位移量位位移量段地址對應(yīng)段地址對應(yīng)BX基址寄存器基址寄存器默認(rèn)是默認(rèn)是DS,對應(yīng),對應(yīng)BP基基址寄存器址寄存器默認(rèn)是默認(rèn)是SS;可用段超越前綴改變;可用段超越前綴改變MOV AX, BX+DI+6;AXDS:BX+DI+6MOV AX, 6BX+DIMOV AX, 6BXDIMOV指令的功能指令的功能立即數(shù)尋址方式立即數(shù)尋址方式寄存器尋址方式寄存器尋址方式直接尋址方式直接尋址方式間接尋址方式間接尋址方式相對尋址方式相對尋址方式基址變址尋址方式基址變址尋址方式相對基址變址尋址方式相
10、對基址變址尋址方式各種尋址方式綜合舉例各種尋址方式綜合舉例設(shè)設(shè)BX=1200H DI=10A0H 位移量位移量=2BC0H DS=2400H 求各種尋址方式下的有效地址和物理求各種尋址方式下的有效地址和物理地址。地址。 直接尋址直接尋址 指令形式:指令形式: MOV AX, 2BC0H EA= 2BC0H 物理地址物理地址=24000H+2BC0H=26BC0H 基址尋址基址尋址 指令形式:指令形式: MOV AX, BX EA= 1200H 物理地址物理地址=24000H+1200H=25200H 變址尋址變址尋址 指令形式:指令形式: MOV AX, DI EA= 10A0H 物理地址物理
11、地址=24000H+10A0H=250A0H 相對相對基址尋址基址尋址 MOV AX, BX+2BC0H EA= 1200H+2BC0H=3DC0H 物理地址物理地址=24000H+3DC0H=27DC0H 相相對變址尋址對變址尋址 MOV AX, DI+2BC0H EA= 10A0H+2BC0H=3C60H 物理地址物理地址=24000H+3C60H=27C60H相對相對基址變址尋址基址變址尋址 MOV AX, BX+DI+2BC0H EA= 1200H+10A0H+2BC0H=4E60H 物理地址物理地址=24000H+4E60H=28E60H2 8086的指令格式指令格式操作碼操作碼操作
12、碼操作碼11REGR/M操作碼操作碼MODREGR/M操作碼(操作碼(R)單字節(jié)指令(隱含操作數(shù))單字節(jié)指令(隱含操作數(shù))單字節(jié)指令(寄存器模式)單字節(jié)指令(寄存器模式)雙字節(jié)指令雙字節(jié)指令 (寄存器到寄存器模式寄存器到寄存器模式)不帶位移量的寄存器和內(nèi)存之間的傳送不帶位移量的寄存器和內(nèi)存之間的傳送R/M位移低位位移低位位移高位位移高位操作碼操作碼11操作碼操作碼R/M數(shù)據(jù)低位數(shù)據(jù)低位數(shù)據(jù)高位數(shù)據(jù)高位操作碼操作碼MOD操作碼操作碼R/M位移低位位移低位 位移高位位移高位 數(shù)據(jù)低位數(shù)據(jù)低位 數(shù)據(jù)高位數(shù)據(jù)高位立即數(shù)送寄存器(設(shè)立即數(shù)為位)立即數(shù)送寄存器(設(shè)立即數(shù)為位)立即數(shù)送內(nèi)存(設(shè)位移量為位立即
13、數(shù)送內(nèi)存(設(shè)位移量為位)在操作碼中一般有在操作碼中一般有3位位 W、 D、 Sl W=0 表示字節(jié)操作表示字節(jié)操作 W=1表示字操作表示字操作 l D=0 REG是源操作數(shù)是源操作數(shù) D=1是目的操作數(shù)是目的操作數(shù)l S是擴(kuò)展位是擴(kuò)展位 (用于加、減和比較和(用于加、減和比較和W組合使用)組合使用)l S=0 W=0 8位操作數(shù)位操作數(shù)l S=0 W=1 16位操作數(shù)位操作數(shù)l S=1 W=1 由由8位擴(kuò)展為位擴(kuò)展為16位操作數(shù)位操作數(shù)單字節(jié)指令中可隱含指出寄存器名,此類指令少,單字節(jié)指令中可隱含指出寄存器名,此類指令少,但執(zhí)行速度較快。但執(zhí)行速度較快。8086規(guī)定:雙操作數(shù)指令中(除立即數(shù)和
14、串操作規(guī)定:雙操作數(shù)指令中(除立即數(shù)和串操作指令),其中一個操作數(shù)必須在寄存器中,可縮指令),其中一個操作數(shù)必須在寄存器中,可縮短指令長度,另一個操作數(shù)可以在寄存器中也可短指令長度,另一個操作數(shù)可以在寄存器中也可以在內(nèi)存單元中。以在內(nèi)存單元中。8086指令中第二個字節(jié),給出兩個操作數(shù)在什么指令中第二個字節(jié),給出兩個操作數(shù)在什么地方,以及計(jì)算存儲器地址的方法。地方,以及計(jì)算存儲器地址的方法。R/M MOD 數(shù)據(jù)數(shù)據(jù) 0 0存儲器尋址不帶位移量存儲器尋址不帶位移量 0 1存儲器尋址存儲器尋址8位位移量位位移量 1 0存儲器尋址存儲器尋址16位位移量位位移量 1 1寄存器尋址寄存器尋址 REG W=
15、1 W=0 0 0 0 AX AL 0 0 1 BX CL 0 1 0 CX DL 0 1 1 DX BL 1 0 0 SP AH 1 0 1 BP CH 1 1 0 SI DH 1 1 1 DI BH 0 0 0 1 1 0 0 0 0 BX+SIBX+SI+d8BX+SI+d16 0 0 1 BX+DIBX+DI+d8BX+DI+d16 0 1 0 BP+SIBP+SI+d8BP+SI+d16 0 1 1 BP+DIBP+DI+d8BP+DI+d16 1 0 0 SI SI+d8 SI+d16 1 0 1 DI DI+d8 DI+d16 1 1 0 直接尋址直接尋址 BP+d8 BP+d1
16、6 1 1 1 BX BX+d8 BX+d16一般指令中不出現(xiàn)段寄存器名稱,而用隱含一般指令中不出現(xiàn)段寄存器名稱,而用隱含關(guān)系指明。關(guān)系指明。如與隱含關(guān)系不同,運(yùn)用前綴改變。如與隱含關(guān)系不同,運(yùn)用前綴改變。 BX 隱含于隱含于DS段段 BP 隱含于隱含于SS段段 SI、DI單獨(dú)使用隱含于單獨(dú)使用隱含于DS段段 基址寄存器和變址寄存器同時(shí)出現(xiàn),以基基址寄存器和變址寄存器同時(shí)出現(xiàn),以基址寄存器隱含關(guān)系為準(zhǔn)。址寄存器隱含關(guān)系為準(zhǔn)。 SP 隱含于隱含于SS段段 SI、DI用于串操作時(shí),用于串操作時(shí),SI隱含于隱含于DS段,段, DI隱含于隱含于ES段。段。u 使用前綴的形式使用前綴的形式 ADD AX
17、, ES:SI或或 ES:ADD AX, SI一般用所需的時(shí)鐘周期數(shù)表明一般用所需的時(shí)鐘周期數(shù)表明指令執(zhí)行時(shí)間指令執(zhí)行時(shí)間=基本執(zhí)行時(shí)間基本執(zhí)行時(shí)間+計(jì)算有效地址時(shí)間計(jì)算有效地址時(shí)間 +為取操作數(shù)和存放結(jié)果而訪問內(nèi)存的時(shí)間為取操作數(shù)和存放結(jié)果而訪問內(nèi)存的時(shí)間3 8086指令系統(tǒng)指令系統(tǒng)80868086指令系統(tǒng)很豐富,包含指令系統(tǒng)很豐富,包含133133條基本指令,功能條基本指令,功能強(qiáng)。強(qiáng)。一般分為五類來介紹一般分為五類來介紹傳送指令傳送指令算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令邏輯運(yùn)算和移位指令邏輯運(yùn)算和移位指令串操作指令串操作指令控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令一、數(shù)據(jù)傳送類指令一、數(shù)據(jù)傳送類指令數(shù)據(jù)傳送是計(jì)算
18、機(jī)中最基本、最重要的一種操作數(shù)據(jù)傳送是計(jì)算機(jī)中最基本、最重要的一種操作, ,傳送指令也是最常使用的一類指令傳送指令也是最常使用的一類指令傳送指令把數(shù)據(jù)從一個位置傳送到另一個位置傳送指令把數(shù)據(jù)從一個位置傳送到另一個位置除標(biāo)志寄存器傳送指令外,均不影響標(biāo)志位除標(biāo)志寄存器傳送指令外,均不影響標(biāo)志位重點(diǎn)掌握重點(diǎn)掌握MOV XCHG PUSH POP XLAT LEA1、通用數(shù)據(jù)傳送指令、通用數(shù)據(jù)傳送指令提供方便靈活的通用傳送操作提供方便靈活的通用傳送操作有有3條指令條指令MOVXCHGPUSH POP 基本傳送指令基本傳送指令MOV(move)把一個字節(jié)或字的操作數(shù)從源地址傳把一個字節(jié)或字的操作數(shù)從源
19、地址傳送至目的地址送至目的地址MOV reg/mem,immMOV reg/mem,imm;立即數(shù)送寄存器或主存;立即數(shù)送寄存器或主存MOV reg/mem/seg,regMOV reg/mem/seg,reg;寄存器送(段)寄存器或主存;寄存器送(段)寄存器或主存MOV reg/seg,memMOV reg/seg,mem;主存送(段)寄存器;主存送(段)寄存器MOV reg/mem,segMOV reg/mem,seg;段寄存器送寄存器或主存;段寄存器送寄存器或主存演示演示MOV指令舉例立即數(shù)傳送指令舉例立即數(shù)傳送mov cl,4;cl4cl4,字節(jié)傳送,字節(jié)傳送mov dx,0ffh;d
20、x00ffhdx00ffh,字傳送,字傳送mov si,200h;si0200hsi0200h,字傳送,字傳送mov bvar,0ah;字節(jié)傳送字節(jié)傳送;假設(shè);假設(shè)bvarbvar是一個字節(jié)變量,定義如下:是一個字節(jié)變量,定義如下:bvarbvar dbdb 0 0mov wvar,0bh;字傳送字傳送;假設(shè);假設(shè)wvarwvar是一個字變量,定義如下:是一個字變量,定義如下:wvarwvar dwdw 0 0明確指令是字節(jié)操作還是字操作明確指令是字節(jié)操作還是字操作MOV指令舉例寄存器傳送指令舉例寄存器傳送mov ah,al;ahal,字節(jié)傳送,字節(jié)傳送mov bvar,ch;bvarch ,
21、字節(jié)傳送,字節(jié)傳送mov ax,bx;axbx,字傳送,字傳送mov ds,ax;dsax,字傳送,字傳送mov bx,al;bxal,字節(jié)傳送,字節(jié)傳送 寄存器具有明確的字節(jié)和字類型寄存器具有明確的字節(jié)和字類型MOV指令舉例存儲器傳送指令舉例存儲器傳送mov al,bx;alds:bxmov dx,bp;dxss:bp+0mov dx,bp+4;dxss:bp+4mov es,si;esds:si 不存在存儲器向存儲器的傳送指令不存在存儲器向存儲器的傳送指令MOV指令舉例段寄存器傳送指令舉例段寄存器傳送mov si,dsmov ax,ds;axdsmov es,ax;esaxds 對段寄存器
22、的操作不靈活對段寄存器的操作不靈活MOV指令傳送功能圖解指令傳送功能圖解立即數(shù)立即數(shù)段寄存器段寄存器CS DS ES SSCS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存儲儲器器非法指令的主要現(xiàn)象:非法指令的主要現(xiàn)象:兩個操作數(shù)的類型不一致兩個操作數(shù)的類型不一致無法確定是字節(jié)量還是字量操作無法確定是字節(jié)量還是字量操作兩個操作數(shù)都是存儲器兩個操作數(shù)都是存儲器段寄存器的操作有一些限制段寄存器的操作有一些限制非法指令兩個操作數(shù)類型不一致非法指令兩個操作數(shù)類型不一致在絕大多數(shù)雙操作數(shù)指令中,目的操作數(shù)和源操在絕大多數(shù)
23、雙操作數(shù)指令中,目的操作數(shù)和源操作數(shù)必須具有一致的數(shù)據(jù)類型,或者同為字量,作數(shù)必須具有一致的數(shù)據(jù)類型,或者同為字量,或者同為字節(jié)量,否則為非法指令或者同為字節(jié)量,否則為非法指令MOV AL, 050AH;非法指令,;非法指令,修正:修正:;mov ax,050ahMOV SI, DL;非法指令,;非法指令,修正:修正:;mov dh,0;mov si,dx非法指令無法確定是字節(jié)量還是字量操作非法指令無法確定是字節(jié)量還是字量操作當(dāng)無法通過任一個操作數(shù)確定是操作類型時(shí),需當(dāng)無法通過任一個操作數(shù)確定是操作類型時(shí),需要利用匯編語言的操作符顯式指明要利用匯編語言的操作符顯式指明MOV BX+SI, 25
24、5;非法指令,;非法指令,修正:修正:;mov byte ptrbyte ptr bx+si bx+si,255;byte ptrbyte ptr 說明是字節(jié)操作說明是字節(jié)操作;mov word ptrword ptr bx+si bx+si,255;word ptrword ptr 說明是字操作說明是字操作非法指令兩個操作數(shù)都是存儲器非法指令兩個操作數(shù)都是存儲器8088指令系統(tǒng)除串操作指令外,不允許兩個操作指令系統(tǒng)除串操作指令外,不允許兩個操作數(shù)都是存儲單元(存儲器操作數(shù))數(shù)都是存儲單元(存儲器操作數(shù))MOV buf2, buf1 如如 MOV BX,SI 此類非法指令此類非法指令修正:修正
25、:;假設(shè);假設(shè)buf2和和buf1是兩個字變量是兩個字變量;mov ax,buf1;mov buf2,ax;假設(shè);假設(shè)buf2和和buf1是兩個字節(jié)變量是兩個字節(jié)變量;mov al,buf1;mov buf2,al非法指令段寄存器的操作有一些限制非法指令段寄存器的操作有一些限制8088指令系統(tǒng)中,能直接對段寄存器操作的指令指令系統(tǒng)中,能直接對段寄存器操作的指令只有只有MOV等個別傳送指令,并且不靈活等個別傳送指令,并且不靈活MOV DS, ES;非法指令,;非法指令,修正:修正:;mov ax,es;mov ds,axMOV DS, 100H;非法指令,;非法指令,修正:修正:;mov ax,
26、100h;mov ds,ax MOV CS, SI;非法指令;非法指令;指令存在,但不能執(zhí)行;指令存在,但不能執(zhí)行 交換指令交換指令XCHG(exchange)把兩個地方的數(shù)據(jù)進(jìn)行互換把兩個地方的數(shù)據(jù)進(jìn)行互換寄存器與寄存器之間對換數(shù)據(jù)寄存器與寄存器之間對換數(shù)據(jù)寄存器與存儲器之間對換數(shù)據(jù)寄存器與存儲器之間對換數(shù)據(jù)不能在存儲器與存儲器之間對換數(shù)據(jù)不能在存儲器與存儲器之間對換數(shù)據(jù)XCHG reg,reg/memXCHG reg,reg/mem;regreg reg/memreg/mem演示演示數(shù)據(jù)交換指令舉例數(shù)據(jù)交換指令舉例movmov ax,1199h ax,1199h;ax=1199hax=11
27、99hxchg ah,alxchg ah,al;ax=9911hax=9911h;等同于;等同于 xchg al,ahxchg al,ahmovmov wvar,5566h wvar,5566h;wvarwvar是一個字量變量是一個字量變量xchg ax,wvarxchg ax,wvar ;ax=5566hax=5566h,wvarwvar=9911h=9911h;等同于;等同于 xchg wvar,axxchg wvar,ax 注意:不能在兩個內(nèi)存單元之間交換注意:不能在兩個內(nèi)存單元之間交換如:如:XCHG BXXCHG BX,SI SI 錯誤!錯誤! 段寄存器中段寄存器中CSCS、IPIP
28、不能做操作數(shù)不能做操作數(shù) 堆棧操作指令堆棧操作指令堆棧是一個堆棧是一個“后進(jìn)先出后進(jìn)先出LIFO”LIFO”(或說(或說“先先進(jìn)后出進(jìn)后出FILO”FILO”)的主存區(qū)域,位于堆棧段)的主存區(qū)域,位于堆棧段中;中;SSSS段寄存器段寄存器記錄其段地址記錄其段地址堆棧只有一個出口,即當(dāng)前棧頂;用堆棧只有一個出口,即當(dāng)前棧頂;用堆棧堆棧指針寄存器指針寄存器SPSP指定指定堆棧只有兩種基本操作:進(jìn)棧和出棧,對堆棧只有兩種基本操作:進(jìn)棧和出棧,對應(yīng)兩條指令應(yīng)兩條指令PUSH和和POP堆棧由棧底向低地址方向生成堆棧由棧底向低地址方向生成圖示圖示進(jìn)棧指令進(jìn)棧指令PUSH進(jìn)棧指令先使堆棧指針進(jìn)棧指令先使堆棧
29、指針SP減減2,然后把一,然后把一個字操作數(shù)存入堆棧頂部個字操作數(shù)存入堆棧頂部PUSH r16/m16/segPUSH r16/m16/seg;SPSPSPSP2 2;SS:SPr16/m16/segSS:SPr16/m16/seg演示演示push axpush 2000h出棧指令出棧指令POP出棧指令把棧頂?shù)囊粋€字傳送至指定的目出棧指令把棧頂?shù)囊粋€字傳送至指定的目的操作數(shù),然后堆棧指針的操作數(shù),然后堆棧指針SP加加2POP r16/m16/segPOP r16/m16/seg; r16/m16/segSS:SPr16/m16/segSS:SP;SPSPSPSP2 2pop axpop wva
30、r演示演示堆棧操作的特點(diǎn)堆棧操作的特點(diǎn)堆棧操作的單位是字,進(jìn)棧和出棧只對字進(jìn)行堆棧操作的單位是字,進(jìn)棧和出棧只對字進(jìn)行數(shù)據(jù)從棧頂壓入和彈出時(shí),都是低地址送低字節(jié),數(shù)據(jù)從棧頂壓入和彈出時(shí),都是低地址送低字節(jié),高地址送高字節(jié)高地址送高字節(jié)堆棧操作遵循先進(jìn)后出原則,但可用存儲器尋址堆棧操作遵循先進(jìn)后出原則,但可用存儲器尋址方式隨機(jī)存取堆棧中的數(shù)據(jù)方式隨機(jī)存取堆棧中的數(shù)據(jù)堆棧段是程序中不可或缺的一個內(nèi)存區(qū),常用來堆棧段是程序中不可或缺的一個內(nèi)存區(qū),常用來n臨時(shí)存放數(shù)據(jù)臨時(shí)存放數(shù)據(jù)n傳遞參數(shù)傳遞參數(shù)n保存和恢復(fù)寄存器保存和恢復(fù)寄存器應(yīng)用舉例:應(yīng)用舉例: 設(shè)設(shè) SS=1000H SP=2000H AX=A
31、26FH 執(zhí)行執(zhí)行 PUSH AX 指令的過程和結(jié)果指令的過程和結(jié)果 SP-2= 1FFEH則則AX內(nèi)容壓入內(nèi)存內(nèi)容壓入內(nèi)存 11FFEH和和11FFFH執(zhí)行后執(zhí)行后SP=1FFEH(11FFEH)=6FH(11FFFH)=A2H練習(xí)練習(xí)1:已知:已知SS=1200H 執(zhí)行執(zhí)行 MOV AX, 3765H MOV BX, 4288H MOV SP, 1020H PUSH AX PUSH BX POP CX 執(zhí)行后執(zhí)行后 AX=( ) BX=( ) CX=( ) SP=( ) 3765H,4288H,4288H,101EH 2、累加器專用傳送指令、累加器專用傳送指令 輸入輸出指令(輸入輸出指令(
32、IN/OUT指令)指令) 格式:格式:IN AL,port;port為直接端口地址為直接端口地址 IN AL,DX ;DX的內(nèi)容為端口地址(間接方式)的內(nèi)容為端口地址(間接方式) IN AX,port; IN AX, DX OUT port, AL OUT DX, AL OUT port, AX OUT DX, AX注意:注意:只能用累加寄存器不能用其它寄存器只能用累加寄存器不能用其它寄存器 當(dāng)端口地址在當(dāng)端口地址在00HFFH之間可以用直接地址之間可以用直接地址 當(dāng)端口地址大于當(dāng)端口地址大于FFH時(shí)必須用時(shí)必須用DX間址形式間址形式例:例:IN AL,40H; (40H) AL IN AX,
33、80H; (80H)、()、(81H) AX MOV DX, 0382H IN AL,DX ; (0382H) AL OUT 62H, AL MOV DX, 0380H OUT DX,AX 換碼指令換碼指令XLAT(查表指令)(查表指令)將將BX指定的緩沖區(qū)中、指定的緩沖區(qū)中、AL指定的位移處的一個指定的位移處的一個字節(jié)數(shù)據(jù)取出賦給字節(jié)數(shù)據(jù)取出賦給AL換碼指令執(zhí)行前:換碼指令執(zhí)行前:在主存建立一個在主存建立一個字節(jié)量表格字節(jié)量表格,內(nèi)含要轉(zhuǎn)換成的目的代碼,內(nèi)含要轉(zhuǎn)換成的目的代碼表格首地址表格首地址存放于存放于BXBX,ALAL存放相對表格首地址的存放相對表格首地址的位移量位移量換碼指令執(zhí)行后:
34、換碼指令執(zhí)行后:將將ALAL寄存器的內(nèi)容轉(zhuǎn)換為寄存器的內(nèi)容轉(zhuǎn)換為目標(biāo)代碼目標(biāo)代碼XLATXLAT;alds:bx+alalds:bx+al 演示演示將存儲器操作數(shù)的有效地址送至指定的將存儲器操作數(shù)的有效地址送至指定的16位通用位通用寄存器寄存器址傳送指令址傳送指令 三條三條LEA 、LDS、LESLEA r16, mem;r16mem的有效地址的有效地址EA例例1: 有效地址的獲取有效地址的獲取LEA AX, 2375H ; AX=2375H LEA SP, BX+SI ; SP=(BX)+(SI)區(qū)別區(qū)別: LEA SI, BUFF; SI=BUFF MOV SI,BUFF; SI=(BUF
35、F) 例例2 MOV BX,400H MOV SI ,3CH LEA BX,BX+SI+0F62H;BX400H3CH0F62H139EHLDS r16, mem;ds、r16mem中的雙字中的雙字例:例:LDS BX,2300H LES r16, mem ;es、r16mem中的雙字中的雙字例:例:LES DI,SI4、標(biāo)志傳送指令、標(biāo)志傳送指令 讀標(biāo)志指令讀標(biāo)志指令 LAHF ;標(biāo)志寄存器低字傳送到;標(biāo)志寄存器低字傳送到AH 設(shè)標(biāo)志指令設(shè)標(biāo)志指令 SAHF ; AH的內(nèi)容送標(biāo)志寄存器低的內(nèi)容送標(biāo)志寄存器低8位位 標(biāo)志寄存器堆棧指令標(biāo)志寄存器堆棧指令 PUSHF ;標(biāo)志寄存器內(nèi)容(;標(biāo)志寄存
36、器內(nèi)容(16位)壓棧位)壓棧 標(biāo)志寄存器出棧指令標(biāo)志寄存器出棧指令 POPF ;彈出標(biāo)志寄存器的內(nèi)容。;彈出標(biāo)志寄存器的內(nèi)容。MOV指令的功能指令的功能XCHG指令的功能指令的功能堆棧的圖示堆棧的圖示SSSSSPSP0000H0000H(棧頂)(棧頂)存儲器存儲器高地址高地址堆棧段堆棧段PUSH指令的功能指令的功能POP指令的功能指令的功能XLAT指令的功能指令的功能二、二、 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令用來執(zhí)行二進(jìn)制的算術(shù)運(yùn)算術(shù)運(yùn)算類指令用來執(zhí)行二進(jìn)制的算術(shù)運(yùn)算:算:加減乘除以及加減乘除以及BCD碼調(diào)整碼調(diào)整。這類指令會根據(jù)運(yùn)算結(jié)果影響這類指令會根據(jù)運(yùn)算結(jié)果影響狀態(tài)標(biāo)志狀態(tài)標(biāo)志
37、,有時(shí)要利用某些標(biāo)志才能得到正確的結(jié)果;有時(shí)要利用某些標(biāo)志才能得到正確的結(jié)果;使用他們時(shí)請留心有關(guān)狀態(tài)標(biāo)志使用他們時(shí)請留心有關(guān)狀態(tài)標(biāo)志重點(diǎn)掌握重點(diǎn)掌握加法指令:加法指令:ADD、ADC、INC 減法指令:減法指令:SUB 、SBB、DEC、CMP、NEG1、 加法和減法指令加法和減法指令加法指令加法指令:ADD, ADC和和INC減法指令減法指令:SUB, SBB, DEC, NEG和和CMP他們分別執(zhí)行字或字節(jié)的加法和減法運(yùn)算,他們分別執(zhí)行字或字節(jié)的加法和減法運(yùn)算,除除INC和和DEC不影響不影響CF標(biāo)志外,其他按定標(biāo)志外,其他按定義影響全部狀態(tài)標(biāo)志位義影響全部狀態(tài)標(biāo)志位操作數(shù)組合:操作數(shù)組
38、合: dest , src運(yùn)算指令助記符運(yùn)算指令助記符 reg, imm/reg/mem運(yùn)算指令助記符運(yùn)算指令助記符 mem, imm/regADD dest,src;加法:加法:destdestsrc;ADD指令使目的操作數(shù)加上源操作數(shù),指令使目的操作數(shù)加上源操作數(shù),和的結(jié)果送到目的操作數(shù)和的結(jié)果送到目的操作數(shù)SUB dest,src;減法:減法:destdestsrc;SUB指令使目的操作數(shù)減去源操作數(shù),指令使目的操作數(shù)減去源操作數(shù),差的結(jié)果送到目的操作數(shù)差的結(jié)果送到目的操作數(shù) 不帶進(jìn)位加和減指令不帶進(jìn)位加和減指令 加法例題加法例題mov ax,7348h;AX7348Hadd al,27
39、h;AL48H27H6FH,AX736FH;OF0,SF0,ZF0,PF1,CF0add ax,3fffh;AX736FH3FFFHB36EH;OF1,SF1,ZF0,PF0,CF0減法例題減法例題sub ah,0f0h;AHB3HF0HC3H,AXC36EH;OF0,SF1,ZF0,PF1,CF1mov word ptr200h,0ef00h;200HEF00H,標(biāo)志不變,標(biāo)志不變sub 200h,ax;200HEF00HC36EH2B92H;OF0,SF0,ZF0,PF0,CF0sub si,si;SI0;OF0,SF0,ZF1,PF1,CF0 帶進(jìn)位加和減指令帶進(jìn)位加和減指令 ADC d
40、est,src;加法:;加法:destdestsrcCF;ADC指令除完成指令除完成ADD加法運(yùn)算外,還要加法運(yùn)算外,還要加上進(jìn)位加上進(jìn)位CF,結(jié)果送到目的操作數(shù),結(jié)果送到目的操作數(shù)SBB dest,src;減法:減法:destdestsrcCF;SBB指令除完成指令除完成SUB減法運(yùn)算外,還要減法運(yùn)算外,還要減去借位減去借位CF,結(jié)果送到目的操作數(shù),結(jié)果送到目的操作數(shù)例:無符號雙字加法和減法例:無符號雙字加法和減法mov ax,7856h;AX7856Hmov dx,8234h;DX8234Hadd ax,8998h;AX01EEH,CF1adc dx,1234h;DX9469H,CF0su
41、b ax,4491h;AXBD5DH,CF1sbb dx,8000h;DX1468H,CF0DX.AX8234 7856H1234 8998H8000 4491H1468 BD5DH 比較指令比較指令CMP(compare)CMP dest,src;做減法運(yùn)算:;做減法運(yùn)算:destsrc;CMP指令將目的操作數(shù)減去源操作數(shù),但指令將目的操作數(shù)減去源操作數(shù),但差值差值不回送不回送目的操作數(shù)目的操作數(shù)比較指令通過減法運(yùn)算影響比較指令通過減法運(yùn)算影響狀態(tài)標(biāo)志狀態(tài)標(biāo)志,用,用于比較兩個操作數(shù)的大小關(guān)系于比較兩個操作數(shù)的大小關(guān)系cmp ax,bxcmp al,100如如A、B兩數(shù)為無符號數(shù),則通過以下
42、標(biāo)志判斷兩數(shù)為無符號數(shù),則通過以下標(biāo)志判斷ZF=1,A=B;CF=0,AB;CF=1,A B如如A、B兩數(shù)為有符號數(shù),不能通過兩數(shù)為有符號數(shù),不能通過CF標(biāo)志判斷標(biāo)志判斷兩數(shù)的大、小關(guān)系,要使用兩數(shù)的大、小關(guān)系,要使用SF、OF標(biāo)志標(biāo)志ZF=1 ,A=BSF、OF同號同號 ,則,則ABSF、OF異號異號 ,則,則AB實(shí)例驗(yàn)證實(shí)例驗(yàn)證 A=10=00001010B B=-10=11110110B A-B=00001010-11110110 =00010100 SF=0 OF=0 , AB B-A=11110110-00001010=11101100 SF=1,OF=0, A B 增量和減量指令增
43、量和減量指令I(lǐng)NC reg/mem;增量(加;增量(加1):):reg/memreg/mem1DEC reg/mem;減量(減;減量(減1):):reg/memreg/mem1INC指令和指令和DEC指令是單操作數(shù)指令指令是單操作數(shù)指令與加法和減法指令實(shí)現(xiàn)的加與加法和減法指令實(shí)現(xiàn)的加1和減和減1不同的是:不同的是:INC和和DEC不影響不影響CF標(biāo)志標(biāo)志inc si;sisi1dec byte ptr si;sisi1 求補(bǔ)指令求補(bǔ)指令NEG(negtive)NEG reg/mem;reg/mem0reg/memNEG指令對操作數(shù)執(zhí)行指令對操作數(shù)執(zhí)行求補(bǔ)運(yùn)算求補(bǔ)運(yùn)算,即用零,即用零減去操作數(shù),
44、然后結(jié)果返回操作數(shù)減去操作數(shù),然后結(jié)果返回操作數(shù)求補(bǔ)運(yùn)算也可以表達(dá)成:求補(bǔ)運(yùn)算也可以表達(dá)成:將操作數(shù)按位取將操作數(shù)按位取反后加反后加1NEG指令對標(biāo)志的影響與用零作減法的指令對標(biāo)志的影響與用零作減法的SUB指令一樣(總使指令一樣(總使CF=1)NEG指令也是一個單操作數(shù)指令指令也是一個單操作數(shù)指令求補(bǔ)運(yùn)算例題求補(bǔ)運(yùn)算例題mov ax,0ff64hneg al;AL064H9CH,AXFF9CH;OF0,SF1,ZF0,PF1,CF1sub al,9dh;AL9CH9DHFFH,AXFFFFH;OF0,SF1,ZF0,PF1,CF1neg ax;AX0FFFFH0001H;OF0,SF0,ZF0
45、,PF0,CF1dec al;AL01H10,AX0000H;OF0,SF0,ZF1,PF1,CF1neg ax;AX000;OF0,SF0,ZF1,PF1,CF0乘法指令規(guī)定:乘法指令規(guī)定:8位位X8位,積為位,積為16位位 被乘數(shù)必須在被乘數(shù)必須在AL中,乘積在中,乘積在AX中中 16位位X16位,積為位,積為32位位被乘數(shù)必須在被乘數(shù)必須在AX中,乘積在中,乘積在DX(高(高16位)、位)、AX中中對標(biāo)志位的理解:對標(biāo)志位的理解: CF=OF=1 ,表示結(jié)果為,表示結(jié)果為16位或位或32位有效。位有效。 CF=0,OF=1,表示只有,表示只有8位或位或16位乘積。位乘積。 2、 乘法指令
46、乘法指令乘法指令分乘法指令分無符號無符號和和有符號有符號乘法指令乘法指令MUL reg/mem;無符號乘法;無符號乘法IMUL reg/mem;有符號乘法;有符號乘法例:例:IMUL BL MUL CX MUL byte ptrdi+04h IMUL word ptrsi3、除法指令、除法指令除法指令的規(guī)定:除法指令的規(guī)定:被除數(shù)是被除數(shù)是16位,必須存放于位,必須存放于AX中,此時(shí)除數(shù)只能中,此時(shí)除數(shù)只能是是8位,得到的商存于位,得到的商存于AL中,余數(shù)在中,余數(shù)在AH中。中。被除數(shù)是被除數(shù)是32位,必須存放于位,必須存放于DX、AX中,此時(shí)除中,此時(shí)除數(shù)只能是數(shù)只能是16位,得到位,得到1
47、6位的商存于位的商存于AX中,余數(shù)中,余數(shù)在在DX中。中。除法運(yùn)算后,狀態(tài)標(biāo)志除除法運(yùn)算后,狀態(tài)標(biāo)志除ZF外,無意義。外,無意義。當(dāng)有符號數(shù)相除,商超出表示范圍不表示為溢出,當(dāng)有符號數(shù)相除,商超出表示范圍不表示為溢出,其與除數(shù)為其與除數(shù)為0一樣,產(chǎn)生一樣,產(chǎn)生0號中斷。(除法出錯)。號中斷。(除法出錯)。有符號數(shù)相除,會有兩種結(jié)果,選擇余數(shù)有符號數(shù)相除,會有兩種結(jié)果,選擇余數(shù)的符號與被除數(shù)相同。的符號與被除數(shù)相同。(-30)8= -4余余+2或或-3余余-6 取后者取后者當(dāng)被除數(shù)只有當(dāng)被除數(shù)只有8位或位或16位時(shí)必須進(jìn)行擴(kuò)展。位時(shí)必須進(jìn)行擴(kuò)展。除法指令分除法指令分無符號無符號和和有符號有符號除
48、法指令除法指令DIV reg/mem ;無符號除法;無符號除法IDIV reg/mem;有符號;有符號除除法法例例: DIV CL; IDIV BL; DIV word ptrbx; IDIV byte ptr2300h 4、 符號擴(kuò)展指令符號擴(kuò)展指令無符號數(shù)的擴(kuò)展高位補(bǔ)無符號數(shù)的擴(kuò)展高位補(bǔ)0,有符號數(shù)擴(kuò)展使用符,有符號數(shù)擴(kuò)展使用符號擴(kuò)展指令。號擴(kuò)展指令。符號擴(kuò)展是指用一個操作數(shù)的符號位(最高位)符號擴(kuò)展是指用一個操作數(shù)的符號位(最高位)形成另一個操作數(shù),即擴(kuò)展符號位。形成另一個操作數(shù),即擴(kuò)展符號位。符號擴(kuò)展雖然使數(shù)據(jù)位數(shù)加長,但數(shù)據(jù)大小并沒符號擴(kuò)展雖然使數(shù)據(jù)位數(shù)加長,但數(shù)據(jù)大小并沒有改變,擴(kuò)
49、展的高位部分僅是低位的符號擴(kuò)展。有改變,擴(kuò)展的高位部分僅是低位的符號擴(kuò)展。符號擴(kuò)展指令有兩條,用來將字節(jié)轉(zhuǎn)換為字,字符號擴(kuò)展指令有兩條,用來將字節(jié)轉(zhuǎn)換為字,字轉(zhuǎn)換為雙字轉(zhuǎn)換為雙字CBW;AL符號擴(kuò)展成符號擴(kuò)展成AXCWD;AX符號擴(kuò)展成符號擴(kuò)展成DX符號擴(kuò)展例題符號擴(kuò)展例題mov al,64h;AL64H (機(jī)器數(shù))(機(jī)器數(shù)) ,表示,表示10進(jìn)制數(shù)進(jìn)制數(shù)100(真值)(真值)cbw;將符號將符號0擴(kuò)展,擴(kuò)展,AX0064H,仍然表示,仍然表示100mov ax,0ff00h;AXFF00H,表示有符號,表示有符號10進(jìn)制數(shù)進(jìn)制數(shù)256cwd;將符號位將符號位“1”擴(kuò)展,擴(kuò)展,DX.AXFFF
50、FFF00H;仍然表示;仍然表示2565、十進(jìn)制調(diào)整指令、十進(jìn)制調(diào)整指令 十進(jìn)制數(shù)調(diào)整指令對十進(jìn)制數(shù)調(diào)整指令對BCDBCD運(yùn)算的結(jié)果進(jìn)行十進(jìn)制調(diào)運(yùn)算的結(jié)果進(jìn)行十進(jìn)制調(diào)整,以得到正確的十進(jìn)制的運(yùn)算結(jié)果。整,以得到正確的十進(jìn)制的運(yùn)算結(jié)果。BCDBCD碼的運(yùn)算只有字節(jié)運(yùn)算,且必須用碼的運(yùn)算只有字節(jié)運(yùn)算,且必須用ALAL作目的操作目的操作數(shù)。作數(shù)。80888088指令系統(tǒng)支持兩種指令系統(tǒng)支持兩種BCDBCD碼調(diào)整運(yùn)算碼調(diào)整運(yùn)算q壓縮壓縮BCD碼碼就是通常的就是通常的8421碼;它用碼;它用4個二進(jìn)個二進(jìn)制位表示一個十進(jìn)制位,一個字節(jié)可以表示兩制位表示一個十進(jìn)制位,一個字節(jié)可以表示兩個十進(jìn)制位,即個十進(jìn)
51、制位,即0099q非壓縮非壓縮BCD碼碼用用8個二進(jìn)制位表示一個十進(jìn)制個二進(jìn)制位表示一個十進(jìn)制位,只用低位,只用低4個二進(jìn)制位表示一個十進(jìn)制位個二進(jìn)制位表示一個十進(jìn)制位09,高,高4位任意,通常默認(rèn)為位任意,通常默認(rèn)為0 加法調(diào)整指令加法調(diào)整指令非壓縮非壓縮BCD碼相加后用碼相加后用 AAA 調(diào)整調(diào)整 壓縮壓縮BCD碼相加后用碼相加后用 DAA 調(diào)整調(diào)整例例1:設(shè):設(shè)AL=09H CL=07H ADD AL,CL; AL=10H AAA ; 結(jié)果:結(jié)果: AH=01H AL= 06H 調(diào)整的方法:當(dāng)(調(diào)整的方法:當(dāng)(AL)9或或AF=1 (AL)+06H AL ,然后(,然后(AL) 0FH;
52、 (AH)+1 AH 調(diào)整后調(diào)整后AF、CF 置置1,其他標(biāo)志無意義。,其他標(biāo)志無意義。 例例2:設(shè):設(shè)AL=28H CL=53H ADD AL,CL; AL=7BH DAA ; 結(jié)果:結(jié)果: AL=81H 調(diào)整的方法:當(dāng)調(diào)整的方法:當(dāng)AL中低中低4位位9 (AL)+06H AL 。 調(diào)整指令影響調(diào)整指令影響AF、CF、PF、SF、ZF,OF無意無意義。義。 減法調(diào)整指令減法調(diào)整指令非壓縮非壓縮BCD碼相減以后用碼相減以后用 AAS調(diào)整調(diào)整壓縮壓縮BCD碼相減以后用碼相減以后用 DAS調(diào)整調(diào)整AAS指令的方法與指令的方法與AAA相似:相似: 當(dāng)(當(dāng)(AL)9或或AF=1(半借位)(半借位) (
53、AL)-06H AL ,然后(,然后(AL) 0FH; (AH)-1 AHDAS指令的方法與指令的方法與DAA相似相似(加變減)。加變減)。 乘法調(diào)整指令乘法調(diào)整指令BCD碼相乘只能用非壓縮碼相乘只能用非壓縮BCD碼,因而只有一條碼,因而只有一條調(diào)整指令即調(diào)整指令即 AAM調(diào)整方法調(diào)整方法(AL)除以)除以0AH,得到的商送到,得到的商送到AH, 余數(shù)在余數(shù)在AL中。中。 例:例:AL=05H, CL=07H MUL CL ;AL=23H AAM ; AH=03H AL=05H 除法調(diào)整指令除法調(diào)整指令除法也只有非壓縮除法也只有非壓縮BCD碼相除,用碼相除,用AAD調(diào)整。調(diào)整。除法調(diào)整指令用于
54、除法指令之前。除法調(diào)整指令用于除法指令之前。調(diào)整的方法是將調(diào)整的方法是將AX中的中的2位被除數(shù)調(diào)整好,再除位被除數(shù)調(diào)整好,再除以除數(shù):以除數(shù):(AH)X(0AH)+(AL) AL 例:例:AX=0402H CL=06H AAD ;AL=2AH DIV CL ;AL=07H三、邏輯運(yùn)算和移位指令三、邏輯運(yùn)算和移位指令 邏輯運(yùn)算即位操作,指令以邏輯運(yùn)算即位操作,指令以二進(jìn)制位二進(jìn)制位為基本單位為基本單位進(jìn)行數(shù)據(jù)的操作進(jìn)行數(shù)據(jù)的操作當(dāng)需要對字節(jié)或字?jǐn)?shù)據(jù)中的各個二進(jìn)制位操作時(shí),當(dāng)需要對字節(jié)或字?jǐn)?shù)據(jù)中的各個二進(jìn)制位操作時(shí),可以考慮采用位操作類指令可以考慮采用位操作類指令注意這些指令對標(biāo)志位的影響注意這些
55、指令對標(biāo)志位的影響1. 邏輯運(yùn)算指令邏輯運(yùn)算指令A(yù)ND OR XOR NOT TEST2. 移位指令移位指令SHL(SAL) SHR SAR3. 循環(huán)移位指令循環(huán)移位指令ROL ROR RCL RCR1、邏輯運(yùn)算指令、邏輯運(yùn)算指令雙操作數(shù)邏輯指令雙操作數(shù)邏輯指令A(yù)ND、OR、XOR和和TEST設(shè)置設(shè)置CFOF0,根據(jù)結(jié)果設(shè)置,根據(jù)結(jié)果設(shè)置SF、ZF和和PF狀態(tài),而對狀態(tài),而對AF未定義;它們的操作未定義;它們的操作數(shù)組合與數(shù)組合與ADD、SUB等一樣:等一樣:運(yùn)算指令助記符運(yùn)算指令助記符 reg, imm/reg/mem運(yùn)算指令助記符運(yùn)算指令助記符 mem, imm/reg 單操作數(shù)邏輯指令單
56、操作數(shù)邏輯指令NOT不影響標(biāo)志位,操不影響標(biāo)志位,操作數(shù)與作數(shù)與INC、DEC和和NEG一樣:一樣:NOT reg/mem邏輯與指令邏輯與指令A(yù)ND對兩個操作數(shù)執(zhí)行邏輯與運(yùn)算,結(jié)果送目的操作數(shù)對兩個操作數(shù)執(zhí)行邏輯與運(yùn)算,結(jié)果送目的操作數(shù)AND dest,srcAND dest,src;destdestdestdestsrcsrc 只有相只有相“與與”的兩位都是的兩位都是1,結(jié)果才是,結(jié)果才是1;否則,;否則,“與與”的結(jié)果為的結(jié)果為0??梢允鼓承┪磺蹇梢允鼓承┪磺?,其余位,其余位不變。不變。邏輯或指令邏輯或指令OR對兩個操作數(shù)執(zhí)行邏輯或運(yùn)算,結(jié)果送目的操作數(shù)對兩個操作數(shù)執(zhí)行邏輯或運(yùn)算,結(jié)果送
57、目的操作數(shù)OR dest,srcOR dest,src;destdestdestdestsrcsrc只要相只要相“或或”的兩位的兩位有一位是有一位是1,結(jié)果就是,結(jié)果就是1;否則,結(jié)果為;否則,結(jié)果為0??梢允鼓承┪恢每梢允鼓承┪恢?。邏輯異或指令邏輯異或指令XOR對兩個操作數(shù)執(zhí)行邏輯異或運(yùn)算,結(jié)果送目的操作數(shù)對兩個操作數(shù)執(zhí)行邏輯異或運(yùn)算,結(jié)果送目的操作數(shù)XOR dest,srcXOR dest,src;destdestdestdestsrcsrc只有相只有相“異或異或”的兩的兩位不相同,結(jié)果才是位不相同,結(jié)果才是1;否則,結(jié)果為否則,結(jié)果為0??梢允鼓承┪蝗》???梢允鼓承┪蝗》?。測試指令測試
58、指令TEST對兩個操作數(shù)執(zhí)行邏輯與運(yùn)算,結(jié)果并不送對兩個操作數(shù)執(zhí)行邏輯與運(yùn)算,結(jié)果并不送目的操作數(shù),僅按目的操作數(shù),僅按AND指令影響標(biāo)志指令影響標(biāo)志TEST dest,srcTEST dest,src;destdestsrcsrc AND與與TEST指令的關(guān)系,指令的關(guān)系,同同SUB與與CMP指令的關(guān)系一樣指令的關(guān)系一樣例:例:TEST AL, 01H;測試;測試AL的最低位的最低位 TEST AX,8000H;測試;測試AX的最高位的最高位 TEST BX,00FFH;測試;測試BX的低的低8位位 TEST CL,0F0H ; 測試測試CL的高的高4位位 利用利用ZF標(biāo)志判斷被測試位的狀態(tài)
59、標(biāo)志判斷被測試位的狀態(tài) ZF=1,被測試位為,被測試位為0,否則,為,否則,為1。 邏輯非指令邏輯非指令NOT對一個操作數(shù)執(zhí)行邏輯非運(yùn)算對一個操作數(shù)執(zhí)行邏輯非運(yùn)算NOT reg/memNOT reg/mem;reg/memreg/memreg/memreg/mem 按位取反,原來按位取反,原來是是“0”的位變?yōu)榈奈蛔優(yōu)椤?”;原來是;原來是“1”的位變?yōu)榈奈蛔優(yōu)椤?”邏輯運(yùn)算舉例邏輯運(yùn)算舉例 mov al,75h;AL75Hand al,32h;AL30H;CFOF0, SF0,ZF0,PF1or al,71h;AL71H;CFOF0,SF0,ZF0,PF1xor al,0f1h;AL80H;
60、CFOF0,SF1,ZF0,PF0not al;AL7FH,標(biāo)志不變,標(biāo)志不變邏輯運(yùn)算指令的應(yīng)用邏輯運(yùn)算指令的應(yīng)用例:將內(nèi)存例:將內(nèi)存2000單元的內(nèi)容單元的內(nèi)容D0、D3清清0,D2、D4置置1,D1、D6取反,其余位不變。取反,其余位不變。mov bl, 2000hand bl,11110110b;BL中中D0和和D3清清0,其余位不變,其余位不變or bl,00010100b;BL中中D2和和D4置置1,其余位不變,其余位不變xor bl,01000010b;BL中中D1和和D6求反,其余位不變求反,其余位不變mov 2000h , bl2、移位指令、移位指令將操作數(shù)移動一位或多位,分成
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年安徽皖新融資租賃有限公司服務(wù)人員第二批次招聘2名考試重點(diǎn)題庫及答案解析
- 2025內(nèi)蒙古北疆交通天然氣有限公司招聘6人筆試重點(diǎn)題庫及答案解析
- 2025福建漳州市第四醫(yī)院招聘臨時(shí)工作人員1人考試核心題庫及答案解析
- 2026江西省江銅宏源銅業(yè)有限公司第二批次社會招聘2人考試備考題庫及答案解析
- 2025年雞西市民康醫(yī)院公開招聘精神科護(hù)士6人筆試重點(diǎn)題庫及答案解析
- 2025四川內(nèi)江隆昌市響石鎮(zhèn)中心學(xué)校招聘1人考試核心題庫及答案解析
- 2025年內(nèi)蒙古師范大學(xué)科研助理招聘備考題庫及1套完整答案詳解
- 2025年陸軍軍醫(yī)大學(xué)西南醫(yī)院招聘護(hù)士備考題庫及一套參考答案詳解
- 2025年來賓市象州縣象州鎮(zhèn)初級中學(xué)公開招聘體育編外教師的備考題庫及完整答案詳解1套
- 2025貴州黔東南州雷山縣丹江鎮(zhèn)村(社區(qū))“兩委”后備力量招募備考核心題庫及答案解析
- 初二勞技試題及答案上冊
- 員工宿舍分配管理制度
- 話劇社團(tuán)筆試題及答案解析
- 2025《安全生產(chǎn)法》培訓(xùn)課件
- 網(wǎng)絡(luò)安全意識提升培訓(xùn)課件
- 專業(yè)倫理與職業(yè)素養(yǎng)-計(jì)算機(jī)、大數(shù)據(jù)與人工智能課件:計(jì)算的學(xué)科與職業(yè)
- 《機(jī)器人用力觸覺傳感器分級規(guī)范》
- 兒童心理健康教育的實(shí)施策略
- 鋼軌探傷鋼軌探傷試塊課件
- 監(jiān)理單位工程項(xiàng)目廉潔教育
- 頸椎病的中醫(yī)診治課件
評論
0/150
提交評論