版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章86系列微型計(jì)算機(jī)的指令系統(tǒng)5.1匯編語言指令語句格式5.280x86指令(編碼)格式及尋址方式
5.38086/8088指令系統(tǒng)
難點(diǎn)和重點(diǎn)
5.1匯編語言指令語句格式MOV傳送CMP比較ADD加法OUT輸出立即數(shù)寄存器存儲(chǔ)器(地址信息)1.指令:讓計(jì)算機(jī)完成某種操作的命令稱為指令。2.指令系統(tǒng):指令的集合即為指令系統(tǒng)。3.指令的一般格式:[標(biāo)號(hào):]操作碼[操作數(shù)][,操作數(shù)];[注釋]
計(jì)算機(jī)中的指令由標(biāo)號(hào)、操作碼字段和操作數(shù)字段組成。[]:任選項(xiàng)。標(biāo)號(hào)字段:是一個(gè)任選字段,性質(zhì)為符號(hào)偏移量,一般用于標(biāo)記跳轉(zhuǎn)指令的目的地址.在匯編過程中標(biāo)號(hào)會(huì)被替換為一個(gè)16位的數(shù)值偏移量.標(biāo)號(hào)必須位于語句開頭,結(jié)尾必須使用冒號(hào)。操作碼字段:也稱為指令助記符,指令助記符是必不可少的,指計(jì)算機(jī)所要執(zhí)行的操作,或稱為指出操作類型,是一種助記符。5.1匯編語言指令語句格式操作數(shù)字段:指在指令執(zhí)行操作的過程中所需要的操作數(shù)。該字段除可以是操作數(shù)本身外,也可以是操作數(shù)地址或是地址的一部分,還可以是指向操作數(shù)地址的指針或其它有關(guān)操作數(shù)的信息。注釋字段:是一個(gè)任選字段,用于說明程序片段或指令的功能,匯編過程中不處理這樣的字段,它只是用于提高源程序的可讀性.注釋必須使用分號(hào)作為開始。注釋是對(duì)該條或該段程序的解釋,可選項(xiàng)。
不同的計(jì)算機(jī)有不同的指令系統(tǒng),匯編語言的指令語句都與機(jī)器指令一一對(duì)應(yīng),匯編語言通過匯編程序?qū)⑵浞g成機(jī)器指令代碼(目標(biāo)代碼),讓CPU執(zhí)行某種操作。5.1匯編語言指令語句格式5.28086/8088的尋址方式與數(shù)據(jù)有關(guān)的尋址方式:以MOV指令為例立即尋址MOVAX,3069H寄存器尋址MOVAL,BH直接尋址MOVAX,[2000H]寄存器間接尋址MOVAX,[BX]
寄存器相對(duì)尋址MOVAX,COUNT[SI]
基址變址尋址MOVAX,[BP][DI]相對(duì)基址變址尋址MOVAX,MASK[BX][SI]存儲(chǔ)器尋址(1)立即尋址方式*——操作數(shù)在指令中給出指令格式:MOVAL,5MOVAX,3064HMOVAL,‘A’*
只能用于SRC字段MOV40H,AL
*SRC和DST的字長(zhǎng)一致
MOVAH,3064H
立即數(shù)尋址的功能立即數(shù)尋址的執(zhí)行例如:MOVAL,80H ;將8位立即數(shù)80H送入AL寄存器中。MOVAX,1234H ;將16位立即數(shù)1234H送入AX寄存器中,其中 (AH)=12H,(AL)=34H。ADDAX,3064H ;將立即數(shù)3064H與AX內(nèi)容相加,結(jié)果存入AX中,即 (AX)+3064H→(AX)。圖5.1立即數(shù)尋址方式舉例(a)MOVAL,80H;(b)MOVAX,1234H(2)寄存器尋址方式*—操作數(shù)在指定的寄存器中
MOVAX,BXMOVAL,BH*
字寄存器AX、BX、CX、DX、SI、DI、SP或BP*
字節(jié)寄存器只有AHALBHBLCHCLDHDL*SRC和DST的字長(zhǎng)一致MOVAH,BX寄存器尋址的功能寄存器尋址的執(zhí)行INCCX ;將CX的內(nèi)容加1,即(CX)+1→(CX)。MOVAX,CX ;將CX的內(nèi)容傳送到AX寄存器中,即CX)→(AX)。圖4.6MOVAX,CX指令的尋址及執(zhí)行示意圖(3)直接尋址方式*—有效地址EA由指令直接給出
例:MOVAX,[2000H]
EA=2000H,假設(shè)(DS)=3000H,那么PA=32000H*
隱含的段為數(shù)據(jù)段DS*
可使用段跨越前綴
MOVAX,ES:[2000H]*操作數(shù)地址可由變量(符號(hào)地址)表示,但要注意VALUEDB10變量的屬性MOVAH,VALUE
MOVAX,VALUEMOVAX,WORDPTRVALUE5030
32000AHAL3050(AX)=3050H直接尋址的功能直接尋址的執(zhí)行例如MOVAL,[1064H];將有效地址EA=1064H單元中的內(nèi)容傳送到AL寄存器中。圖4.7直接尋址示意圖(4)寄存器間接尋址*—EA在基址寄存器(BX/BP)
或變址寄存器(SI/DI)中
MOVAX,[BX]PA=16d(DS)+(BX)MOVAX,ES:[BX]PA=16d(ES)+(BX)MOVAX,[BP]PA=16d(SS)+(BP)*不允許使用AX、CX、DX存放EAMOVAX,[CX]*
SRC和DST的字長(zhǎng)一致
MOVDL,[BX];[BX]指示一個(gè)字節(jié)單元MOVDX,[BX];[BX]指示一個(gè)字單元*
適于數(shù)組、字符串、表格的處理寄存器間接尋址的功能寄存器間接尋址的執(zhí)行例如:
MOVAX,[BX];將BX中的內(nèi)容作為有效地址,對(duì)有效地址進(jìn)行字的 讀操作,并傳送到AX中。
有效地址=(BX)(BP)8位(SI)16位(DI)+位移量(5)寄存器相對(duì)尋址方式*指令格式:MOVAX,COUNT[SI]或MOVAX,[COUNT+SI]
假設(shè)(DS)=3000H,(SI)=2000H,COUNT=3000H,則:PA=35000H
假設(shè)(35000H)=1234H,那么(AX)=1234H適于數(shù)組、字符串、表格的處理如果使用BP,則隱含地表示操作數(shù)存放在堆棧段中。寄存器相對(duì)尋址的功能寄存器相對(duì)尋址的執(zhí)行圖4.9寄存器相對(duì)尋址操作過程示意圖(6)基址變址尋址方式*指令格式:MOVAX,[BX][DI]MOVAX,[BX+DI]MOVAX,ES:[BX][SI]*適于數(shù)組、字符串、表格的處理*必須是一個(gè)基址寄存器和一個(gè)變址寄存器的組合
MOVAX,[BX][BP]MOVAX,[SI][DI]有效地址=(BX)(SI)(BP)(DI)+基址變址尋址的功能基址變址尋址的執(zhí)行(7)相對(duì)基址變址尋址方式
MOVAX,MASK[BX][SI]
或MOVAX,MASK[BX+SI]或MOVAX,[MASK+BX+SI]如果使用BP,則隱含地表示操作數(shù)存放在堆棧段中。
有效地址=(BX)(SI)8位(BP)(DI)16位++位移量相對(duì)基址變址尋址的功能相對(duì)基址變址尋址的執(zhí)行例如:MOVAH,[BX+DI+1234H]若DS=4000H,BX=0200H,DI=0010H,則此指令計(jì)算出的有效地址EA=1444H,操作數(shù)的物理地址為41444H,執(zhí)行本指令后將41444H單元中的內(nèi)容傳送至AH寄存器中。訪問存儲(chǔ)器的方式默認(rèn)的段寄存器可跨越的段寄存器偏移地址取指令CS無IP堆棧操作SS無SP一般數(shù)據(jù)訪問DSCSESSS有效地址EABP作為基址的尋址SSCSDSESBP串操作的源操作數(shù)DSCSESSSSI串操作的目的操作數(shù)ES無DI段寄存器的使用規(guī)定
數(shù)據(jù)傳送指令算術(shù)指令邏輯指令串處理指令控制轉(zhuǎn)移指令處理機(jī)控制與雜項(xiàng)操作指令5.38086/8088指令系統(tǒng)數(shù)據(jù)傳送指令:
通用數(shù)據(jù)傳送指令MOV、PUSH、POP、XCHG累加器專用傳送指令I(lǐng)N、OUT、XLAT目標(biāo)地址傳送指令LEA、LDS、LES標(biāo)志寄存器傳送指令LAHF、SAHF、PUSHF、POPF類型轉(zhuǎn)換指令CBW、CWD5.3.1數(shù)據(jù)傳送類指令傳送指令:MOVDST,SRC執(zhí)行操作:(DST)(SRC)注意:
*DST、SRC不能同時(shí)為段寄存器MOVDS,ES*立即數(shù)不能直接送段寄存器
MOVDS,2000H*DST不能是立即數(shù)和CSMOVCS,AX
*DST、SRC不能同時(shí)為存儲(chǔ)器尋址*不影響標(biāo)志位1
通用數(shù)據(jù)傳送指令表基本傳送指令MOV進(jìn)棧指令:PUSHSRC執(zhí)行操作:(SP)(SP)–2((SP)+1,(SP))(SRC)
出棧指令:POPDST執(zhí)行操作:(DST)((SP)+1,(SP)) (SP)(SP)+2堆棧:‘先進(jìn)后出’的存儲(chǔ)區(qū),段地址存放在SS中,
SP在任何時(shí)候都指向棧頂,進(jìn)出棧后自動(dòng)修改SP。
注意:
*堆棧操作必須以字為單位。
*不影響標(biāo)志位
*不能用立即尋址方式PUSH1234H
*DST不能是CSPOPCS例:假設(shè)(AX)=2107H,執(zhí)行PUSHAX(SP)低地址高地址(SP)
07H21H低地址高地址********PUSHAX執(zhí)行前PUSHAX執(zhí)行后進(jìn)棧操作:先SP減2,再內(nèi)容進(jìn)棧。進(jìn)棧方向例:POPBX(SP)低地址高地址(SP)07H21H低地址高地址
(BX)=2107HPOPBX執(zhí)行前POPBX執(zhí)行后********出棧方向07H21H出棧操作:先棧頂內(nèi)容出棧,再修改SP,使SP加2。(字操作)例:PUSHAXPUSHBXPUSHCX……;其間用到AX、BX、CXPOPCX;后進(jìn)先出POPBXPOPAX交換指令
XCHGOPR1,OPR2執(zhí)行操作:(OPR1)(OPR2)注意:
*不影響標(biāo)志位*不允許使用段寄存器 *兩操作數(shù)不能均為內(nèi)存單元例:XCHGBX,[BP+SI]XCHGAL,BH2
累加器專用傳送指令(只限使用AX或AL)
輸入指令I(lǐng)N(I/OCPU)
直接尋址:INAL,PORT(字節(jié))INAX,PORT(字)執(zhí)行操作:(AL)(PORT)(字節(jié))(AX)(PORT+1,PORT)(字)間接尋址:INAL,DX(字節(jié))INAX,DX(字)執(zhí)行操作:(AL)((DX))(字節(jié))(AX)((DX)+1,(DX))(字)
輸出指令OUT(CPUI/O)直接尋址:OUTPORT,AL(字節(jié))OUTPORT,AX(字)執(zhí)行操作:(PORT)(AL)(字節(jié))(PORT+1,PORT)(AX)(字)間接尋址:OUTDX,AL(字節(jié))OUTDX,AX(字)執(zhí)行操作:((DX))(AL)(字節(jié))((DX)+1,(DX))(AX)(字)注意:
*不影響標(biāo)志位*
前256個(gè)端口號(hào)00H~FFH可直接在指令中指定(直接尋址)*如果端口號(hào)256,端口號(hào)
DX(間接尋址)例:INAX,28H;MOVDX,28H;INAX,DXMOVDATA_WORD,AX例:MOVDX,3FCHINAX,DX例:OUT5,AL例:測(cè)試某狀態(tài)寄存器(端口號(hào)27H)的第2位是否為1INAL,27HTESTAL,00000100BJNZERROR;若第2位為1,轉(zhuǎn)ERROR處理換碼指令:將一種字節(jié)代碼轉(zhuǎn)換成另一種字節(jié)代碼XLAT或XLATOPR執(zhí)行操作:(AL)((BX)+(AL))例:MOVBX,OFFSETTABLE;(BX)=0040HMOVAL,3XLAT指令執(zhí)行后(AL)=33H注意:
*不影響標(biāo)志位*字節(jié)表格(長(zhǎng)度不超過256)
首地址(BX)*需轉(zhuǎn)換的代碼位移量(AL)(BX)30HF004031HF0041(AL)=332HF004233HF0043TABLE(DS)=F000H3.地址傳送指令
有效地址送寄存器指令:LEAREG,SRC執(zhí)行操作:(REG)SRC
指針?biāo)图拇嫫骱虳S指令:LDSREG,SRC執(zhí)行操作:(REG)(SRC)(DS)(SRC+2)
相繼二字寄存器(通常是SI)、DS
指針?biāo)图拇嫫骱虴S指令:LESREG,SRC執(zhí)行操作:(REG)(SRC)(ES)(SRC+2)
相繼二字寄存器(通常是DI)、ES例:40H00H00H30H
TABLE(DS):1000HMOVBX,TABLE;(BX)=0040HMOVBX,OFFSETTABLE
;(BX)=1000HLEABX,TABLE
;(BX)=1000HLDSBX,TABLE;(BX)=0040H
;(DS)=3000HLESBX,TABLE;(BX)=0040H
;(ES)=3000H注意:
*不影響標(biāo)志位*REG不能是段寄存器*SRC必須為存儲(chǔ)器尋址方式例:LEAAX,[2728H];(AX)=2728LEACX,[BX][DI]若執(zhí)行前:(BX)=1000H,(DI)=500H則執(zhí)行后:(CX)=1000+500=1500HLDSSI,[500H]若執(zhí)行前:(DS)=2000H則執(zhí)行后:(SI)=1234H(DS)=3000HLESDI,50H[BX]若執(zhí)行前:(DS)=2000H,(BX)=200H(20250H)=0237H,(20252)=40000H則執(zhí)行后:(DI)=0237H(ES)=4000H34H12H00H30H
20500H20502H圖LEA和LDS指示執(zhí)行示意(a)LEABX,[BX+SI+jjkk]圖4.13LEA和LDS指示執(zhí)行示意(b)LDSSI,[jjkk]4.標(biāo)志傳送指令圖LAHF指令的功能↓↓標(biāo)志寄存器傳送指令
標(biāo)志送AH指令:LAHF執(zhí)行操作:(AH)(PSW的低字節(jié))
AH送標(biāo)志寄存器指令:SAHF執(zhí)行操作:(PSW的低字節(jié))(AH)
標(biāo)志進(jìn)棧指令:PUSHF執(zhí)行操作:(SP)(SP)-2((SP)+1,(SP))(PSW)
標(biāo)志出棧指令:POPF執(zhí)行操作:(PSW)((SP)+1,(SP))(SP)(SP)+2*影響標(biāo)志位
PUSHF和POPF指令一般用在子程序和中斷處理程序的首尾,用以保存主程序標(biāo)志和恢復(fù)主程序標(biāo)志。有時(shí)還被用于改變陷阱標(biāo)志TF的狀態(tài)。PUSHF ;將Flag各標(biāo)志位壓入堆棧。POPAX ;彈出標(biāo)志至AX中。ORAH,01H;TF位置“1”。PUSHAX ;修改后的標(biāo)志,各位壓入堆棧。POPF ;從堆棧中彈出一個(gè)字(此時(shí)為修改后的16 位標(biāo)志),送入標(biāo)志寄存器。5.3.2算術(shù)運(yùn)算指令
加法指令
ADD、ADC、INC
減法指令
SUB、SBB、DEC、NEG、CMP
乘法指令
MUL、IMUL
除法指令
DIV、IDIV加法指令
加法指令:ADDDST,SRC執(zhí)行操作:(DST)(SRC)+(DST)
帶進(jìn)位加法指令:ADCDST,SRC執(zhí)行操作:(DST)(SRC)+(DST)+CF
加1指令:INCOPR執(zhí)行操作:(OPR)(OPR)+1注意:
*除INC指令不影響CF標(biāo)志外,均對(duì)條件標(biāo)志位有影響。加法指令對(duì)條件標(biāo)志位的影響CF位表示無符號(hào)數(shù)相加的溢出。OF位表示帶符號(hào)數(shù)相加的溢出。1結(jié)果為負(fù)0否則SF=1結(jié)果為00否則ZF=1和的最高有效位有向高位的進(jìn)位0否則CF=1兩個(gè)操作數(shù)符號(hào)相同,而結(jié)果符號(hào)與之相反0否則OF=舉例:n=8bit帶符號(hào)數(shù)(-128~127),無符號(hào)數(shù)(0~255)
00000100+0000101100001111帶:(+4)+(+11)=+15OF=0無:4+11=15CF=0帶符號(hào)數(shù)和無符號(hào)數(shù)都不溢出00001001+0111110010000101帶:(+9)+(+124)=-123
OF=1無:9+124=133CF=0帶符號(hào)數(shù)溢出無符號(hào)數(shù)溢出00000111+11111011100000010帶:(+7)+(-5)=+2OF=0無:7+251=2
CF=1帶符號(hào)數(shù)和無符號(hào)數(shù)都溢出10000111+11110101101111100帶:(-121)+(-11)=+124
OF=1無:135+245=124
CF=1例:雙字的加法
(DX)=0002H(AX)=0F365H
(BX)=0005H(CX)=8100H指令序列
ADDAX,CX;(1)
ADCDX,BX;(2)
(1)執(zhí)行后,(AX)=7465H
CF=1OF=0SF=0ZF=0(2)執(zhí)行后,(DX)=0008HCF=0OF=0SF=0ZF=0ADD指令的常用形式還有:ADDCX,2000H ;立即數(shù)與寄存器內(nèi)容相加。ADD[BX],67H ;存儲(chǔ)單元與立即數(shù)相加。ADDAX,[BX+SI] ;存儲(chǔ)單元與寄存器內(nèi)容相加。ADDAX,BX ;寄存器之間相加。ADD[BX+6000H],AX;寄存器與“基地址加位移量”之 存儲(chǔ)單元內(nèi)容相加。2.減法指令減法指令:SUBDST,SRC執(zhí)行操作:(DST)(DST)-(SRC)帶借位減法指令:SBBDST,SRC執(zhí)行操作:(DST)(DST)-(SRC)-CF減1指令:DECOPR執(zhí)行操作:(OPR)(OPR)-1求補(bǔ)指令:NEGOPR執(zhí)行操作:(OPR)-(OPR)比較指令:CMPOPR1,OPR2執(zhí)行操作:(OPR1)-(OPR2)注意:
*除DEC指令不影響CF標(biāo)志外,均對(duì)條件標(biāo)志位有影響。減法指令對(duì)條件標(biāo)志位(CF/OF/ZF/SF)的影響:CF位表示無符號(hào)數(shù)減法的溢出。OF位表示帶符號(hào)數(shù)減法的溢出。1被減數(shù)的最高有效位有向高位的借位0否則CF=1兩個(gè)操作數(shù)符號(hào)相反,而結(jié)果的符號(hào)與減數(shù)相同0否則OF=1減法轉(zhuǎn)換為加法運(yùn)算時(shí)無進(jìn)位0否則CF=或NEG(取補(bǔ))指令對(duì)CF/OF的影響0操作數(shù)為01否則CF=1操作數(shù)為-128(字節(jié)運(yùn)算)或操作數(shù)為-32768(字運(yùn)算)0否則OF=例:x、y、z均為雙精度數(shù),分別存放在地址為X,X+2;Y,Y+2;Z,Z+2的存儲(chǔ)單元中,用指令序列實(shí)現(xiàn)wx+y+24-z,并用W,W+2單元存放wMOVAX,XMOVDX,X+2ADDAX,YADCDX,Y+2;x+yADDAX,24ADCDX,0;x+y+24SUBAX,ZSBBDX,Z+2;x+y+24-zMOVW,AXMOVW+2,DX;結(jié)果存入W,W+2單元例SUB[SI+14H],0136H;指令功能為求出目的數(shù)有效地址EA=SI+14H,將(EA)-0136H→EA。設(shè)DS=3000H,SI=0040H,則EA=0054H,目的數(shù)的物理地址為30054H,其內(nèi)容設(shè)為4336H,則此指令的結(jié)果及對(duì)標(biāo)志位的影響如下所示。比較指令CMPA-B(1)兩個(gè)無符號(hào)數(shù)比較判斷方法ZF=1,A=BZF=0,CF=0則A>BCF=1則A<B(2)帶符號(hào)數(shù)比較ZF=1,A=BZF=0OF=0SF=0則A>BSF=1則A<BOF=1SF=0則A<BSF=1則A>BOF=0SF=0,OF=1SF=1A>B(OFSF=0)OF=0SF=1,OF=1SF=0A<B(OFSF=1)例:比較54與24的大小A>0,B>0解:54-24=54+(-24)[-24]補(bǔ)=11101000,[54]補(bǔ)=0011011000110110+11101000100011110OF=0,SF=0,則目的>源,即54>24例:比較112D與-64D的大小A>0,B<0解:112-(-64)=112+64=176[-64]補(bǔ)=11000000011100000100000010110000OF=1,SF=1,則目的>源,即120>-74例:比較24與54的大小解:24-54=24+(-54)0001100024的補(bǔ)碼+11001010-54的補(bǔ)碼11100010OF=0,SF=1,則目的<源,即24<54例:比較-64D與112D的大小A<0,B>0解:-64-112=[-64]補(bǔ)+[-112]補(bǔ)11000000=[-64]補(bǔ)+10010000=[-112]補(bǔ)101010000OF=1,SF=0,則目的<源,即-64<1123乘法指令
無符號(hào)數(shù)乘法指令:MULSRC帶符號(hào)數(shù)乘法指令:IMULSRC執(zhí)行操作:字節(jié)操作數(shù)(AX)(AL)*(SRC)字操作數(shù)(DX,AX)(AX)*(SRC)注意:
*AL(AX)為隱含的乘數(shù)寄存器。*AX(DX,AX)為隱含的乘積寄存器。*SRC不能為立即數(shù)。*除CF和OF外,對(duì)條件標(biāo)志位無定義。圖4.17乘法運(yùn)算的操作數(shù)及運(yùn)算結(jié)果乘法指令對(duì)CF/OF的影響:例:(AX)=16A5H,(BX)=0611H
(1)
IMULBL
;(AX)(AL)*(BL)
;A5*115B*11=060BF9F5
;
(AX)=0F9F5H
CF=OF=1(2)
MULBX
;(DX,AX)(AX)*(BX)
;16A5*0611=00895EF5
;
(DX)=0089H(AX)=5EF5H
CF=OF=100乘積的高一半為零11否則MUL指令:CF,OF=00乘積的高一半是低一半的符號(hào)擴(kuò)展11否則
IMUL指令:CF,OF=1010010101011011A5H對(duì)應(yīng)原碼的絕對(duì)值再求補(bǔ)碼4.除法指令
無符號(hào)數(shù)除法指令:DIVSRC帶符號(hào)數(shù)除法指令:IDIVSRC執(zhí)行操作:字節(jié)操作(AL)(AX)/(SRC)的商(AH)(AX)/(SRC)的余數(shù)字操作(AX)(DX,AX)/(SRC)的商(DX)(DX,AX)/(SRC)的余數(shù)注意:
*AX(DX,AX)為隱含的被除數(shù)寄存器。*AL(AX)為隱含的商寄存器。*AH(DX)為隱含的余數(shù)寄存器。*SRC不能為立即數(shù)。*對(duì)所有條件標(biāo)志位均無定義。除法運(yùn)算的操作數(shù)和運(yùn)算結(jié)果(a)8位源操作數(shù);(b)16位源操作數(shù)
符號(hào)擴(kuò)展指令:
CBWALAX執(zhí)行操作:若(AL)的最高有效位為0,則(AH)=00H若(AL)的最高有效位為1,則(AH)=0FFHCWDAX(DX,AX)執(zhí)行操作:若(AX)的最高有效位為0,則(DX)=0000H若(AX)的最高有效位為1,則(DX)=0FFFFH注意:*無操作數(shù)指令*隱含對(duì)AL或AX進(jìn)行符號(hào)擴(kuò)展*不影響條件標(biāo)志位例:(AX)=0BA45HCBW;(AX)=0045HCWD;(DX)=0FFFFH(AX)=0BA45H例:x,y,z,v均為16位帶符號(hào)數(shù),計(jì)算(v-(x*y+z–540))/xMOVAX,XIMULY;x*y→(DX,AX)MOVCX,AXMOVBX,DXMOVAX,ZCWD;Z→(DX,AX)ADDCX,AXADCBX,DX;x*y+z→(BX,CX)SUBCX,540SBBBX,0;x*y+z-540MOVAX,VCWD;V→(DX,AX)SUBAX,CXSBBDX,BX;v-(x*y+z-540)IDIVX;(v-(x*y+z-540))/x→(AX) 余數(shù)→(DX)3.3.3邏輯運(yùn)算和移位指令
邏輯運(yùn)算指令
AND、OR、NOT、XOR、TEST
移位指令
SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR邏輯非指令:NOTOPR*OPR不能為立即數(shù)執(zhí)行操作:(OPR)
(OPR)*不影響標(biāo)志位
邏輯與指令:ANDDST,SRC執(zhí)行操作:(DST)(DST)(SRC)邏輯或指令:ORDST,SRC執(zhí)行操作:(DST)(DST)(SRC)異或指令:XORDST,SRC執(zhí)行操作:(DST)(DST)(SRC)測(cè)試指令:TESTOPR1,OPR2
執(zhí)行操作:(OPR1)(OPR2)CFOFSFZFPFAF00***無定義
根據(jù)運(yùn)算結(jié)果設(shè)置1.邏輯運(yùn)算指令例:屏蔽AL的第0、1兩位
ANDAL,0FCH例:置AL的第5位為1
ORAL,20H
例:使AL的第0、1位變反
XORAL,3例:測(cè)試某些位是0是1
TESTAL,1JZEVEN
********OR00100000**1*****
******01XOR00000011
******10
********AND11111100******00********AND000000010000000*例如,傳輸ASCII碼給某臺(tái)外部設(shè)備或另一臺(tái)微型計(jì)算機(jī)時(shí),常將其最高位作為奇/偶校驗(yàn)位使用,特別在串行傳送時(shí)可以有效地判別傳輸過程是否產(chǎn)生差錯(cuò)。假定7位ASCII碼已存入AL中,AL的最高位初始態(tài)為0?,F(xiàn)采用偶校驗(yàn),則采用下列程序段可以完成補(bǔ)偶操作:ANDAL,AL;(AL)與(AL)進(jìn)行與操作,僅用以影響標(biāo)志位PF。JPNEXT;若PF=1,則轉(zhuǎn)至NEXT指令處若PF=0,則順序執(zhí)行。ORAL,10000000B;最高位(奇偶校驗(yàn)位)補(bǔ)“1”,以使傳送操作數(shù)字節(jié)中1的個(gè)數(shù)為偶數(shù)。NEXT:;補(bǔ)偶后往下執(zhí)行程序?!壿嬤\(yùn)算指令,可以通過選用不同的源操作數(shù)的各位代碼,使目的操作數(shù)的某些位置1、清0和測(cè)試目的操作數(shù)的某些位。例如:ORCL,03H ;將CL的位0、位1置1,其余位不變。ANDAL,0F5H ;將AL中的位1、位3清0,其余位不變。XORAH,0FH ;將AH中高4位不變,低4位取反。ANDDX,[BX+SI] ;DX和兩存儲(chǔ)單元的內(nèi)容相“與”,其內(nèi)存單元地址由 BX+SI和BX+SI+1指出,結(jié)果存在DX中。ORAX,00F0H ;AX和00F0H相“或”,結(jié)果存在AX中。XORAX,AX ;AX的內(nèi)容本身進(jìn)行“異或”,結(jié)果AX清零。2.移位與循環(huán)移位指令邏輯左移SHLOPR,CNT邏輯右移SHROPR,CNT算術(shù)左移SALOPR,CNT(同邏輯左移)算術(shù)右移SAROPR,CNT
CF0
0CFCF移位指令循環(huán)左移ROLOPR,CNT循環(huán)右移ROROPR,CNT帶進(jìn)位循環(huán)左移RCLOPR,CNT帶進(jìn)位循環(huán)右移RCROPR,CNTCF
CFCFCF注意:
*OPR可用除立即數(shù)以外的任何尋址方式*CNT=1,SHLOPR,1CNT>1,MOVCL,CNTSHLOPR,CL;以SHL為例*條件標(biāo)志位:
CF=移入的數(shù)值
1CNT=1時(shí),最高有效位的值發(fā)生變化0CNT=1時(shí),最高有效位的值不變
移位指令:
SF、ZF、PF根據(jù)移位結(jié)果設(shè)置,AF無定義
循環(huán)移位指令:
不影響SF、ZF、PF、AFOF=圖4.17移位/循環(huán)移位指令執(zhí)行流程例:(AX)=0012H,(BX)=0034H,把它們裝配成(AX)=1234H例:(BX)=84F0H
(1)(BX)為無符號(hào)數(shù),求(BX)/2
SHRBX,1
;(BX)=4278H(2)(BX)為帶符號(hào)數(shù),求(BX)×2
SALBX,1
;(BX)=09E0H,OF=1(3)(BX)為帶符號(hào)數(shù),求(BX)/4MOVCL,2 SARBX,CL;(BX)=0E13CHMOVCL,8ROLAX,CLADDAX,BXMOVCH,4;循環(huán)次數(shù)MOVCL,4;移位次數(shù)NEXT:ROLBX,CLMOVAX,BXANDAX,0FHPUSHAXDECCHJNZNEXT00080004000F0000(SP)(3)(BX)=84F0H,把
(BX)
中的16位數(shù)每4位壓入堆棧串操作指令:
設(shè)置方向標(biāo)志指令
CLD、STD
串處理指令
串重復(fù)前綴
MOVSB/MOVSWREPSTOSB/STOSWREPE/REPZLODSB/LODSWREPNE/REPNZ
CMPSB/CMPSWSCASB/SCASW
與REP配合工作的MOVS/STOS
REPMOVS/STOS執(zhí)行操作:(1)如(CX)=0則退出REP,否則轉(zhuǎn)(2)(2)(CX)(CX)-1(3)執(zhí)行MOVS/STOS(4)重復(fù)(1)~(3)MOVS串傳送指令:MOVSDST,SRCMOVSB(字節(jié))MOVSW(字)例:MOVSES:BYTEPTR[DI],DS:[SI]執(zhí)行操作:
(1)((DI))←((SI))(2)字節(jié)操作:(SI)←(SI)±1,(DI)←(DI)±1字操作:(SI)←(SI)±2,(DI)←(DI)±2
方向標(biāo)志DF=0時(shí)用+,DF=1時(shí)用-。
REPMOVS:將數(shù)據(jù)段中的整串?dāng)?shù)據(jù)傳送到附加段中。源串(數(shù)據(jù)段)→目的串(一定在附加段)執(zhí)行REPMOVS之前,應(yīng)先做好:(1)源串首地址(末地址)→SI(2)目的串首地址(末地址)→DI(3)串長(zhǎng)度→CX(4)建立方向標(biāo)志(CLD使DF=0,STD使DF=1)(SI)(DI)
DF=0DF=1數(shù)據(jù)段附加段(SI)(DI)
datasegmentmess1db‘personal_computer’dataendsextrasegmentmess2db17dup(?)extraendscodesegmentmovax,datamov ds,axmov ax,extramoves,ax
leasi,mess1leadi,mess2movcx,17cldrepmovsb…codeendsleasi,mess1+16leadi,mess2+16movcx,17stdrepmovsbSTOS存入串指令:STOSDSTSTOSB(字節(jié))STOSW(字)執(zhí)行操作:
字節(jié)操作:((DI))←(AL),(DI)←(DI)±1字操作:((DI))←(AX),(DI)←(DI)±2
例:把附加段中的10個(gè)字節(jié)緩沖區(qū)置為20Hleadi,mess2moval,20Hmovcx,10cldrepstosbleadi,mess2movax,2020Hmovcx,5cldrepstosw例如,若要對(duì)某一數(shù)據(jù)緩沖區(qū)清零,并設(shè)(ES)=3000H,數(shù)據(jù)緩沖區(qū)首地址DI=0200H,緩沖區(qū)長(zhǎng)度為100個(gè)字節(jié),則可用以下的程序段:CLDMOV AX,3000H ;對(duì)段寄存器賦值。MOV ES,AXMOV DI,0200H ;數(shù)據(jù)緩沖區(qū),首地址→DI。MOV CX,100 ;數(shù)據(jù)緩沖區(qū)長(zhǎng)度為100字節(jié)→CX。MOV AL,00 ;對(duì)100個(gè)字節(jié)數(shù)據(jù)緩沖區(qū)單元清零。REP STOSBLODS從串取指令:
LODSSRCLODSB(字節(jié))LODSW(字)執(zhí)行操作:字節(jié)操作:(AL)←((SI)),(SI)←(SI)±1字操作:(AX)←((SI)),(SI)←(SI)±2注意:*LODS指令一般不與REP聯(lián)用*源串一般在數(shù)據(jù)段中(允許使用段跨越前綴來修改),目的串必須在附加段中*不影響條件標(biāo)志位例如,編制一程序段,要求將0700H單元開始的5個(gè)字節(jié)的內(nèi)容逐一裝入累加器中進(jìn)行處理,處理完后,再送入0700H為首址的內(nèi)存區(qū)中。 CLD ;方向標(biāo)志DF=0,地址為增量。 MOVSI,0700H ;SI的首地址。MOVDI,SI MOVCX,5 ;處理的字節(jié)數(shù)為5。LOOP1:LODSB ;取一個(gè)字節(jié)到AL中,(SI)+1→(SI)。 PUSHCX ;保留計(jì)數(shù)值。 … ;字符處理。 POPCX ;恢復(fù)計(jì)數(shù)值。 DECCX ;計(jì)數(shù)值減1。 MOV[DI],AL ;送回處理結(jié)果。 JNZLOOP1 ;如未處理完,則繼續(xù)。與REPE/REPZ(REPNE/REPNZ)配合工作的
CMPS和SCAS
REPE/REPZREPNE/REPNZ
執(zhí)行操作:(1)如(CX)=0或ZF=0(ZF=1)則退出串操作,否則轉(zhuǎn)(2)(2)(CX)←(CX)-1(3)執(zhí)行CMPS/SCAS(4)重復(fù)(1)~(3)CMPS串比較指令:
CMPSSRC,DSTCMPSB(字節(jié))CMPSW(字)
執(zhí)行操作:
(1)((SI))-((DI))根據(jù)比較結(jié)果置條件標(biāo)志位:相等ZF=1不等ZF=0(2)字節(jié)操作:(SI)←(SI)±1,(DI)←(DI)±1字操作:(SI)←(SI)±2,(DI)←(DI)±2SCAS串掃描指令:
SCASDSTSCASB(字節(jié))SCASW(字)執(zhí)行操作:
字節(jié)操作:(AL)-((DI)),(DI)←(DI)±1字操作:(AX)-((DI)),(DI)←(DI)±2例:從一個(gè)字符串中查找一個(gè)指定的字符messdb‘COMPUTER’leadi,messmoval,‘T’movcx,8cld
repnescasbCOMPUTER(di)
(di):相匹配字符的下一個(gè)地址(cx):剩下還未比較的字符個(gè)數(shù)(di)(CX)=2例:比較兩個(gè)字符串,找出它們不相匹配的位置例:反向傳送leasi,mess1leadi,mess2movcx,8cldrepecmpsbleasi,mess1+7leadi,mess2+7movcx,8STdrepmovsbCOMPUTERCOMPUTER
控制轉(zhuǎn)移類指令:
無條件轉(zhuǎn)移指令
JMP
條件轉(zhuǎn)移指令JZ/JNZ、JE/JNE、JS/JNS、JO/JNO、JP/JNP、JB/JNB、JL/JNL、JBE/JNBE、JLE/JNLE、JCXZ
循環(huán)指令
LOOP、LOOPZ/LOOPE、LOOPNZ/LOOPNE
子程序調(diào)用和返回指令
CALL、RET
中斷與中斷返回指令
INT、INTO、IRET無條件轉(zhuǎn)移指令:段內(nèi)直接短轉(zhuǎn)移:JMPSHORTOPR執(zhí)行操作:(IP)←(IP)+8位位移量段內(nèi)直接近轉(zhuǎn)移:JMPNEARPTROPR執(zhí)行操作:(IP)←(IP)+16位位移量段內(nèi)間接轉(zhuǎn)移:JMPWORDPTROPR執(zhí)行操作:(IP)←(EA)段間直接遠(yuǎn)轉(zhuǎn)移:JMPFARPTROPR執(zhí)行操作:(IP)←OPR的段內(nèi)偏移地址(CS)←OPR所在段的段地址段間間接轉(zhuǎn)移:JMPDWORDPTROPR執(zhí)行操作:(IP)←(EA)
(CS)←(EA+2)條件轉(zhuǎn)移指令:注意:只能使用段內(nèi)直接尋址的8位位移量(1)根據(jù)單個(gè)條件標(biāo)志的設(shè)置情況轉(zhuǎn)移
格式
測(cè)試條件JZ(JE)OPRZF=1JNZ(JNE)OPRZF=0JSOPRSF=1JNSOPRSF=0JOOPROF=1JNOOPROF=0JPOPRPF=1JNPOPRPF=0JCOPRCF=1JNCOPRCF=0(2)比較兩個(gè)無符號(hào)數(shù),并根據(jù)比較結(jié)果轉(zhuǎn)移*
格式
測(cè)試條件
<JB(JNAE,JC)OPRCF=1≥JNB(JAE,JNC)OPRCF=0≤
JBE(JNA)OPRCF∨ZF=1>JNBE(JA)OPRCF∨ZF=0*
適用于地址或雙精度數(shù)低位字的比較(3)比較兩個(gè)帶符號(hào)數(shù),并根據(jù)比較結(jié)果轉(zhuǎn)移*
格式
測(cè)試條件
<JL(JNGE)OPRSFOF=1
≥JNL(JGE)OPRSFOF=0
≤JLE(JNG)OPR(SFOF)∨ZF=1>JNLE(JG)OPR(SFOF)∨ZF=0*
適用于帶符號(hào)數(shù)的比較(4)測(cè)試CX的值為0則轉(zhuǎn)移
格式測(cè)試條件
JCXZOPR(CX)=0例:如果X>50,轉(zhuǎn)到TOO_HIGH;否則|X-Y|→RESULT,如果溢出轉(zhuǎn)到OVERFLOW,
JGJOJNS
MOVAX,XCMPAX,50TOO_HIGHSUBAX,YOVERFLOWNONNEGNEGAXNONNEG:MOVRESULT,AXTOO_HIGH:……OVERFLOW:……例:、是雙精度數(shù),分別存于DX,AX及BX,CX中,
>時(shí)轉(zhuǎn)L1,否則轉(zhuǎn)L2
CMPDX,BXJGL1JLL2CMPAX,CXJAL1L2:……L1:……例設(shè)有10個(gè)數(shù)據(jù)存放在以2000H單元為首地址的數(shù)據(jù)緩沖區(qū)中,試編出要求找出其中的最大的數(shù),并存入2100H單元的程序。解:
MAXSTA:MOVBX,2000H ;首址2000H→BX中。MOVAL,[BX] ;取第一
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 利用基因編輯技術(shù)改進(jìn)微生物脂質(zhì)積累
- 三明市2024-2025學(xué)年第一學(xué)期高一期末數(shù)學(xué)質(zhì)檢主觀題閱卷情況和教學(xué)建議
- 2024高中生物第二章動(dòng)物與人體生命活動(dòng)的調(diào)節(jié)第2節(jié)通過激素的調(diào)節(jié)精練含解析新人教版必修3
- 2024高中語文第二單元置身詩境緣景明情自主賞析登岳陽樓學(xué)案新人教版選修中國古代詩歌散文欣賞
- 2024高考地理一輪復(fù)習(xí)第八章第1講農(nóng)業(yè)的區(qū)位選擇教案含解析新人教版
- 2024高考?xì)v史一輪復(fù)習(xí)方案專題十一世界經(jīng)濟(jì)的全球化趨勢(shì)專題綜合測(cè)驗(yàn)含解析人民版
- 2024高考地理一輪復(fù)習(xí)第一部分自然地理-重在理解第二章地球上的大氣規(guī)范答題2氣候類綜合題學(xué)案新人教版
- DB42-T 2334-2024 水土保持區(qū)域評(píng)估技術(shù)導(dǎo)則
- 2024年湖北國土資源職業(yè)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(頻考版)含答案解析
- 二零二五年度新能源技術(shù)共享與推廣實(shí)施合同3篇
- 2025年正定縣國資產(chǎn)控股運(yùn)營集團(tuán)限公司面向社會(huì)公開招聘工作人員高頻重點(diǎn)提升(共500題)附帶答案詳解
- 劉寶紅采購與供應(yīng)鏈管理
- 2025共團(tuán)永康市委下屬青少年綜合服務(wù)中心駐團(tuán)市委機(jī)關(guān)人員招聘2人(浙江)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年計(jì)算機(jī)二級(jí)WPS考試題目
- 部編人教版語文小學(xué)六年級(jí)下冊(cè)第四單元主講教材解讀(集體備課)
- EPC項(xiàng)目投標(biāo)人承包人工程經(jīng)濟(jì)的合理性分析、評(píng)價(jià)
- 社區(qū)電動(dòng)車棚新(擴(kuò))建及修建充電車棚施工方案(純方案-)
- 籍貫對(duì)照表完整版
- 供應(yīng)商年度審核計(jì)劃及現(xiàn)場(chǎng)審核表
- 環(huán)甲膜穿刺ppt課件
- 隱蔽工程驗(yàn)收記錄(大全)
評(píng)論
0/150
提交評(píng)論