




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微機(jī)原理與接口技術(shù)指令系統(tǒng)第一頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/241第一節(jié)
指令的基本結(jié)構(gòu)和執(zhí)行時(shí)間指令指令系統(tǒng)8086/8088CPU的指令系統(tǒng)共包含92種基本指令,按照功能可將它們分為6大類:?數(shù)據(jù)傳送指令?算術(shù)運(yùn)算指令?邏輯運(yùn)算和移位指令?串操作指令?控制轉(zhuǎn)移指令?處理器控制指令第二頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/242
8086指令的一般格式如下:
操作碼[操作數(shù)],[操作數(shù)]操作數(shù)主要分為3類:
立即數(shù)操作數(shù)、寄存器操作數(shù)存儲(chǔ)器操作數(shù)。第三頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/243
表3-2隱含及允許超越的段寄存器存儲(chǔ)器操作的類型
隱含的段寄存器
允許超越的段寄存器
偏移地址取指令
CS無(wú)
IP堆棧操作
SS無(wú)
SP通用數(shù)據(jù)讀寫(xiě)
DSCS,ES,SS有效地址源數(shù)據(jù)串
DSCS,ES,SSSI目標(biāo)數(shù)據(jù)串
ES無(wú)
DI用BP作為基址寄存器
SSCS,DS,ES有效地址第四頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/244
指令的執(zhí)行時(shí)間一條指令的執(zhí)行時(shí)間包括取指令、取操作數(shù)、執(zhí)行指令及傳送結(jié)果幾部分,單位用時(shí)鐘周期表示
寄存器操作數(shù)的指令執(zhí)行速度最快,立即數(shù)操作數(shù)次之,存儲(chǔ)器操作數(shù)指令的執(zhí)行速度最慢
第五頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/245第二節(jié)8086的尋址方式一、立即尋址(ImmediateAddressing)
主要用于給寄存器或存儲(chǔ)單元賦初值
MOVAX,3508H
第六頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/246
二、直接尋址(DirectAddressing)直接尋址指令在指令的操作碼后面直接給出操作數(shù)的16位偏移地址。此偏移地址也稱為有效地址EA(EffectiveAddress),與指令的操作碼一起,存放在內(nèi)存的代碼段.低8位存放在低地址單元,高8位存放在高地址單元。第七頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/247
直接尋址:MOVAX,[3200H]如果DS=5000H,則所尋找的操作數(shù)的物理地址:5000H×10H+3200H=50000H+3200H=53200H
第八頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/248
段超越:MOVBX,ES:[2100H]第九頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/249
三、寄存器尋址(RegisterAddressing)操作數(shù)為CPU的內(nèi)部寄存器
指令在執(zhí)行過(guò)程中不必通過(guò)訪問(wèn)內(nèi)存而取得操作數(shù),因此執(zhí)行速度很快。MOVDS,AX
第十頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2410
四、寄存器間接尋址(RegisterIndirectAddressing)MOVAX,[DI]指令中的16位寄存器的內(nèi)容不是操作數(shù),而是操作數(shù)的偏移地址,操作數(shù)本身則在存儲(chǔ)器中。可用的寄存器有四個(gè),分別是:SI、DI、BX和BP,但如果使用不同的間址寄存器,則相應(yīng)的段寄存器有所不同
第十一頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2411
1.選擇SI、DI、BX作為間址寄存器操作數(shù)在數(shù)據(jù)段(沒(méi)有使用段超越時(shí))
MOVAX,[DI]若已知(DS)=5000H,(DI)=1600H,則操作數(shù)的物理地址為:5000H×10H+1600H=51600H執(zhí)行的結(jié)果為(AX)=789AH第十二頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2412
2.選擇BP作為間址寄存器
操作數(shù)在堆棧段(沒(méi)有使用段超越時(shí))
MOV[BP],AX若已知(SS)=6000H,(BP)=1500H,則操作數(shù)的物理地址為:6000H×10H+1500H=61500H若已知(AX)=5566H,則指令的執(zhí)行結(jié)果為:66H送到61500H內(nèi)存單元,
55H送到61501H內(nèi)存單元第十三頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2413
無(wú)論用SI、DI、BX或BP作為間址寄存器,都允許段超越。
MOVES:[DI],AXMOVDX,DS:[BP]第十四頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2414
五、變址尋址(IndexedAddressing)以指定的寄存器內(nèi)容,加上指令中給出的8位或16位位移量(必須要以一個(gè)段寄存器作為基地址),作為操作數(shù)的地址。作為變址尋址的寄存器可以是SI、DI、BX、BP四個(gè)寄存器中的任一個(gè)
若用SI、DI和BX作為變址寄存器,操作數(shù)在數(shù)據(jù)段,即段地址在DS寄存器;若用BP變址,則操作數(shù)在堆棧段,即段地址在SS寄存器
MOVAX,2000H[SI]
若(SI)=1200H,(DS)=1500H,則操作數(shù)的地址為18200H
第十五頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2415變址尋址方式
第十六頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2416
六、基址-變址尋址(BasedIndexedAddressing)
將BX和BP看作基址寄存器,將SI和DI看作變址寄存器。基址加變址的尋址方式:把一個(gè)基址寄存器(BX或BP)的內(nèi)容加上一個(gè)變址寄存器(SI或DI)的內(nèi)容,再加上指令中指定的8位或16位位移量(必須要以一個(gè)段寄存器作為地址基址),作為操作數(shù)的地址
MOVAX,1050H[BX][SI]第十七頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2417
MOVAX,1050H[BX][SI]若(BX)=2000H,(SI)=1600H,(DS)=1200H,指令中給出的偏移量為1050H,則源操作數(shù)的物理地址為16650H若用BX作為基址寄存器,則段寄存器為DS,操作數(shù)在數(shù)據(jù)段中;若用BP作為基址寄存器,則段寄存器為SS,操作數(shù)在堆棧段中。第十八頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2418基址加變址的尋址方式
第十九頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2419第三節(jié)8086的指令系統(tǒng)?數(shù)據(jù)傳送(Datatransfer)?算術(shù)運(yùn)算(Arithmetic)?邏輯運(yùn)算和移位(Logic)?串操作(Stringmanipulation)?控制轉(zhuǎn)移(Controltransfer)?處理器控制(Processorcontrol)第二十頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2420
OPRD泛指各種類型的操作數(shù)mem存儲(chǔ)器操作數(shù)acc累加器操作數(shù)dest目的操作數(shù)src源操作數(shù)disp8位或16位偏移量,可用符號(hào)地址表示DATA8位或16位立即數(shù)port輸入輸出端口,可用數(shù)字或表達(dá)式表示()表示寄存器的內(nèi)容[]表示存儲(chǔ)單元的內(nèi)容或偏移地址第二十一頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2421一、數(shù)據(jù)傳送類指令
按功能可分為以下4小類:
通用數(shù)據(jù)傳送指令輸入輸出指令目標(biāo)地址傳送指令標(biāo)志傳送指令第二十二頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2422
1.通用數(shù)據(jù)傳送指令(GeneralPurposeTransfer)一般傳送指令MOV堆棧操作指令PUSH和POP交換指令XCHG查表轉(zhuǎn)移指令XLAT字位擴(kuò)展指令第二十三頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2423
⑴一般傳送指令MOV(Movement)MOVdest,src;(dest)←(src)既可傳送字節(jié)操作數(shù)(8位),也可傳送字操作數(shù)(16位);可使用本章討論過(guò)的各種尋址方式;可實(shí)現(xiàn)以下各種傳送:第二十四頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2424MOV可實(shí)現(xiàn)的各種傳送:寄存器與寄存器之間的傳送:MOVAL,CL
寄存器與段寄存器之間的傳送:MOVDS,AX
寄存器與存儲(chǔ)器之間的傳送:
MOV[3000H],AX
立即數(shù)到寄存器的傳送:MOVAL,20H
立即數(shù)到存儲(chǔ)器的傳送:
MOVBYTEPTR[BP+SI],20H
存儲(chǔ)器與段寄存器之間的傳送:
MOVDS,[2000H]第二十五頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2425使用MOV指令完成數(shù)據(jù)傳送時(shí)需注意幾點(diǎn):
MOV指令的兩個(gè)操作數(shù)的類型必須相同
MOVAX,DL
╳不能用一條MOV指令完成兩個(gè)存儲(chǔ)器單元之間的數(shù)據(jù)傳送
MOV[BX],[SI]
╳不能用立即數(shù)直接給段寄存器賦值
MOVDS,DATA
╳不能在段寄存器之間進(jìn)行直接數(shù)據(jù)傳送
MOVDS,ES
╳通常不要求用戶用MOV指令修改代碼段寄存器CS和指令指針寄存器IP的內(nèi)容,但CS可以作為源操作數(shù)第二十六頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2426
⑵堆棧操作指令PUSH和POP(Pushwordontostack,Popwordoffstack)堆棧是內(nèi)存中一個(gè)特定的區(qū)域,用以存放寄存器或存儲(chǔ)器中暫時(shí)不用但又必須保存的數(shù)據(jù)。
第二十七頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2427堆棧操作需要遵循以下原則:
堆棧的存取每次必須是一個(gè)字(16位);向堆棧中存放數(shù)據(jù)時(shí),總是從高地址向低地址方向增長(zhǎng),從堆棧取數(shù)據(jù)時(shí)正好相反;堆棧指令中的操作數(shù)只能是寄存器或存儲(chǔ)器操作數(shù),而不能是立即數(shù);堆棧段在內(nèi)存中的位置由SS決定,堆棧指針SP總是指向棧頂,即SP的內(nèi)容等于當(dāng)前棧頂?shù)钠频刂贰T趬喝氩僮鲾?shù)之前,SP先減2。每彈出一個(gè)字,SP加2;對(duì)堆棧的操作遵循“后進(jìn)先出(LIFO:LastInFirstOut)”的原則。最后壓人堆棧的數(shù)據(jù)會(huì)最先被彈出。第二十八頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2428堆棧示意圖
第二十九頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2429堆棧操作指令PUSH,POPPUSHsrc;src的高8位→[(SP)-1];src的低8位→[(SP)-2];(SP)-2→(SP)POPdest;[SP]→dest的低8位;[SP+1]→dest的高8位;(SP)+2→(SP)第三十頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2430
指令中,操作數(shù)src和dest可以是以下三種類型:寄存器(包括數(shù)據(jù)寄存器、地址寄存器和變址寄存器);段寄存器(CS除外。PUSHCS指令是合法的;而POPCS是非法的);存儲(chǔ)器單元第三十一頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2431PUSHAX指令執(zhí)行示意圖
第三十二頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2432POPAX指令執(zhí)行示意圖
第三十三頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2433交換指令XCHG(Exchange)
指令格式及操作:
XCHGdest,src;(dest)←→(src)源操作數(shù)和目標(biāo)操作數(shù)均可以是寄存器或存儲(chǔ)器,但不能同時(shí)為存儲(chǔ)器。即可以在寄存器與寄存器之間、寄存器與存儲(chǔ)器之間進(jìn)行交換,但不能在存儲(chǔ)器與存儲(chǔ)器之間進(jìn)行交換。不能為段寄存器操作數(shù)。即段寄存器的內(nèi)容不能參加交換。兩個(gè)操作數(shù)的字長(zhǎng)必須相同,可以是字節(jié)交換,也可以是字交換。第三十四頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2434查表轉(zhuǎn)移指令XLAT(Translate)
指令格式與操作:
XLAT;(AL)←[(BX)+(AL)]
或:XLATsrc_table(src_table表示要查找的表的首地址)可以根據(jù)表中元素的序號(hào)查出表中相應(yīng)元素的內(nèi)容應(yīng)預(yù)先將要查找的這類代碼排成一個(gè)表存放在內(nèi)存的某個(gè)區(qū)域中。將表的首地址(偏移地址)送BX寄存器,要查找的元素的序號(hào)送AL,表中第一個(gè)元素的序號(hào)為0,然后依次為1,2,3,…。執(zhí)行XLAT指令后,標(biāo)中指定序號(hào)的元素存于AL第三十五頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2435例:現(xiàn)要查出數(shù)值6對(duì)應(yīng)的ASCII碼
LEABX,Hex_table;(BX)←表的首地址
MOVAL,6;(AL)←6XLAT;查表轉(zhuǎn)換結(jié)果為(AL)=36H,為6所對(duì)應(yīng)的ASCII碼。
第三十六頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2436字位擴(kuò)展指令
操作數(shù)擴(kuò)展的規(guī)則是:擴(kuò)展時(shí)在高位添加符號(hào)位,即將符號(hào)位擴(kuò)展到整個(gè)高8位(或高16位)。例如,要把有符號(hào)數(shù)35H擴(kuò)展為一個(gè)字,則結(jié)果為0035H;而如果要擴(kuò)展的數(shù)是81H,則結(jié)果為FF81H。第三十七頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2437CBW(ConvertBytetoWord)
CBW;若(AL)<80H,則(AH)=00H;否則(AH)=FFH。CBW將一個(gè)字節(jié)的數(shù)(8位)擴(kuò)展為一個(gè)字長(zhǎng)的數(shù)(16位)。指令中隱含了操作數(shù)AL和AH。CBW指令不影響標(biāo)志位。例如,把字節(jié)9AH擴(kuò)展為字的語(yǔ)句如下:
MOVAL,9AHCBW其結(jié)果為:(AX)=FF9AH。第三十八頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2438CWD(ConvertWordtoDoubleword)
CWD;若(AX)<8000H,則(DX)=0000H;否則(DX)=FFFFH。CWD將一個(gè)字操作數(shù)(16位)擴(kuò)展為一個(gè)雙字(32位)。指令中隱含了操作數(shù)AX和DX,擴(kuò)展后的高16位放在DX中。CWD指令也不影響標(biāo)志位。例如,把字25ABH擴(kuò)展為雙字的語(yǔ)句如下:
MOVAX,25ABHCWD其結(jié)果為:(DX:AX)=000025ABH第三十九頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2439輸入輸出指令(InputandOutput)
輸入指令I(lǐng)N用于從外設(shè)端口接收數(shù)據(jù),輸出指令OUT向外設(shè)端口發(fā)送數(shù)據(jù)。無(wú)論接收到的數(shù)據(jù)或準(zhǔn)備發(fā)送的數(shù)據(jù),都必須在累加器AX(字)或AL(字節(jié))中直接尋址方式:當(dāng)I/O端口地址為8位二進(jìn)制時(shí),在指令中直接給出此端口地址。它允許尋址256個(gè)端口,端口地址為0~FFH。DX寄存器間接尋址方式:當(dāng)I/O端口地址為16位二進(jìn)制時(shí),用DX寄存器間接尋址。它可尋址64K個(gè)端口,端口地址為0~FFFFH。
第四十頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2440
輸入指令I(lǐng)N(Inputbyteorword)
INacc,port
;port為8位立即數(shù)表示的端口地址,直接尋址或INacc,DX;DX給出16位端口地址,間接尋址輸出指令OUT(Outputbyteorword)OUTport,acc
;port為8位立即數(shù)表示的端口地址,直接尋址或OUTDX,acc;DX給出16位端口地址,間接尋址第四十一頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2441[例]將一個(gè)字節(jié)3BH輸出到端口地址78A0H
MOVAL,3BH
;將要輸出的字節(jié)送入累加器ALMOVDX,78A0H
;將16位端口地址送入DX進(jìn)行間址OUTDX,AL
;將AL中的一個(gè)字節(jié)輸出到DX所指定的16位端口地址第四十二頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2442目標(biāo)地址傳送指令(Address-ObjectTransfer)
取偏移地址指令LEA(LoadEffectiveAddress)
LEAreg16,mem指令指令中的源操作數(shù)必須為存儲(chǔ)器操作數(shù),目標(biāo)操作數(shù)必須為16位通用寄存器,指令的執(zhí)行結(jié)果是把源操作數(shù)的有效地址(即16位偏移地址)送到目標(biāo)寄存器。例如:LEABX,BUFFER第四十三頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2443
注意LEA指令和MOV指令的區(qū)別:
LEABX,BUFFERMOVBX,BUFFER以下兩條指令的效果相同:
LEABX,BUFFERMOVBX,OFFSETBUFFER第四十四頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2444
LDS(LoadpointerusingDS)
LDSreg16,mem32;(reg16)←((mem32)+1:(mem32));(DS)←((mem32)+3:(mem32)+2)指令中源操作數(shù)mem32為存儲(chǔ)器操作數(shù),目標(biāo)操作數(shù)為16位通用寄存器。LDS指令把存儲(chǔ)器mem32中存放的一個(gè)32位遠(yuǎn)地址指針(包括偏移地址和段地址)送到reg16和DS。四個(gè)存儲(chǔ)單元的前兩個(gè)單元的內(nèi)容作為偏移地址送到reg16,后兩個(gè)單元的內(nèi)容作為段地址送到段寄存器DS。第四十五頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2445例設(shè)(DS)=6000,內(nèi)存地址為60348H開(kāi)始的4個(gè)單元中存放了一個(gè)32位的遠(yuǎn)地址指針98011H。
LDSSI,[0348H] MOVAX,[SI]上述第一條指令執(zhí)行后的結(jié)果為:(SI)=8011H,(DS)=9000H。第二條指令的執(zhí)行結(jié)果為:(AX)=3412H第四十六頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2446
LES(LoadpointerusingES)LES指令的格式及功能與LDS相似,兩個(gè)高地址單元中給出的段地址送ES。第四十七頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2447標(biāo)志傳送指令(FlagRegisterTransfer)
LAHF(LoadAHfromFlags)該指令將標(biāo)志寄存器FLAGS中的五個(gè)標(biāo)志位,即符號(hào)標(biāo)志SF、零標(biāo)志ZF、輔助進(jìn)位標(biāo)志AF、奇偶標(biāo)志PF以及進(jìn)位標(biāo)志CF分別傳送到累加器AH的對(duì)應(yīng)位。LAHF指令不影響標(biāo)志位。
第四十八頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2448
SAHF(StoreAHintoFlags)SAHF指令的傳送方向與LAHF相反,將AH寄存器的第7、6、4、2、0位分別傳送到標(biāo)志寄存器的對(duì)應(yīng)位。SAHF指令影響標(biāo)志位,F(xiàn)LAGS寄存器中的SF、ZF、AF、PF和CF將被修改成AH寄存器對(duì)應(yīng)位的狀態(tài),但其余標(biāo)志位不受影響。第四十九頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2449
PUSHF(PushFlagsontostack)PUSHF指令是將標(biāo)志寄存器FLAGS壓入堆棧。指令本身不影響標(biāo)志位。[SP-1]←(FLAGSH)[SP-2]←(FLAGSL)(SP)←(SP)-2POPF(PopFlagsoffstack)POPF指令將堆棧中當(dāng)前棧頂?shù)膬蓚€(gè)單元的內(nèi)容彈出到標(biāo)志寄存器FLAGS中。POPF指令影響標(biāo)志位(FLAGSL)←[SP](FLAGSH)←[SP+1](SP)←(SP)+2第五十頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2450算術(shù)運(yùn)算指令
8086/8088提供了加、減、乘、除4組基本的算術(shù)運(yùn)算指令,既可以用于字節(jié)運(yùn)算,也可以用于字運(yùn)算;既可用于無(wú)符號(hào)數(shù)運(yùn)算,也可用于帶符號(hào)數(shù)運(yùn)算。若是帶符號(hào)數(shù),用補(bǔ)碼表示。8086/8088還提供了各類校正操作指令,可以進(jìn)行十進(jìn)制的算術(shù)運(yùn)算。
第五十一頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2451加法運(yùn)算指令
不帶進(jìn)位的加法指令A(yù)DD帶進(jìn)位的加法指令A(yù)DC加1指令I(lǐng)NC兩條加法調(diào)整指令:AAA和DAA。第五十二頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2452不帶進(jìn)位的加法指令A(yù)DD(Addition)
ADDOPRD1,OPRD2;(OPRD1)←(OPRD1)+(OPRD2)ADD加法指令影響標(biāo)志位源操作數(shù)和目標(biāo)操作數(shù)可以是寄存器操作數(shù)或存儲(chǔ)器操作數(shù),源操作數(shù)還可以是立即數(shù);操作數(shù)可以是無(wú)符號(hào)數(shù),也可以是帶符號(hào)數(shù)。需注意兩點(diǎn):一是源操作數(shù)與目標(biāo)操作數(shù)不能同時(shí)為存儲(chǔ)器操作數(shù),二是不能對(duì)段寄存器進(jìn)行運(yùn)算第五十三頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2453帶進(jìn)位的加法指令A(yù)DC(Addwithcarry)
ADCOPRD1,OPRD2;(OPRD1)←(OPRD1)+(OPRD2)+(CF)ADC指令與ADD指令在格式、功能及對(duì)標(biāo)志位的影響等方面都類似,只是在ADC指令中,CF也要參加求和運(yùn)算ADC指令主要用于多字節(jié)數(shù)據(jù)的加法運(yùn)算。如果低字節(jié)相加時(shí)產(chǎn)生進(jìn)位,則在下一次高字節(jié)相加時(shí)應(yīng)將此進(jìn)位加進(jìn)去第五十四頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2454加1指令I(lǐng)NC(Incrementby1)
INCOPRD;(OPRD)←(OPRD)+1INC指令對(duì)指定的操作數(shù)加1,再送回到該操作數(shù)。在指令中,操作數(shù)OPRD可以是寄存器操作數(shù),也可以是存儲(chǔ)器操作數(shù);可以是8位,也可以是16位。但不能是段寄存器,也不能是立即數(shù)INC指令不影響CF標(biāo)志位,但會(huì)影響其他5個(gè)狀態(tài)標(biāo)志位AF、OF、PF、SF和ZF。INC指令通常用在循環(huán)程序中修改地址指針及循環(huán)次數(shù)等第五十五頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2455壓縮BCD加法的十進(jìn)制調(diào)整指令DAA
(DecimalAdjustforAddition)
所謂壓縮的BCD碼,是指一個(gè)字節(jié)中可以存放兩位BCD碼,高4位和低4位各存放一位。一般來(lái)說(shuō),兩個(gè)BCD碼相加以后,有可能得到不正確的BCD結(jié)果,可用DAA指令對(duì)AL寄存器中的“和”進(jìn)行調(diào)整,即可得到預(yù)期的結(jié)果。DAA指令調(diào)整的方法是:①若(AL)中低4位>9或AF=1,則(AL)+06H→(AL),并使AF=1;②若(AL)中高4位>9或CF=1,則(AL)+60H→(AL),并使CF=1。第五十六頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2456[例]編程用BCD數(shù)計(jì)算46+35=?MOVAL,46H;(AL)=46HADDAL,35H;(AL)=7BHDAA;(AL)=81H第五十七頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2457
非壓縮BCD加法的十進(jìn)制調(diào)整指令A(yù)AA
(unpackedBCD[ASCII]AdjustforAddition)
所謂非壓縮的BCD碼,就是一個(gè)字節(jié)存放一位BCD碼(BCD碼存放在字節(jié)的低4位,高4位為零)。調(diào)整以前,先用指令A(yù)DD或ADC進(jìn)行8位數(shù)的加法運(yùn)算,相加結(jié)果放在AL中,用AAA指令調(diào)整后,非壓縮BCD碼的低位在AL寄存器,高位在AH寄存器。AAA指令的調(diào)整步驟為:①若(AL)中低4位>9或AF=1,則(AL)+6,(AH)+1,并使AF=1;②屏蔽掉(AL)中高4位,即(AL)←(AL)∧0FH;③CF←AF第五十八頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2458[例]用BCD碼計(jì)算8+6=?
MOVAL,08H;BCD碼數(shù)8
MOVBL,06H;BCD碼數(shù)6
ADDAL,BL;(AL)=08H+06H=0EHAAA;(AL)=0EH+06H=04H(高4位清零);(AH)=1;(CF)=1第五十九頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2459減法運(yùn)算指令
不帶進(jìn)位減法指令SUB帶進(jìn)位減法指令SBB減1指令DEC求補(bǔ)指令NEG比較指令CMP減法的ASCII調(diào)整指令A(yù)AS減法十進(jìn)制調(diào)整指令DAS
第六十頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2460
不帶進(jìn)位減法指令SUB(Subtraction)
SUBOPRD1,OPRD2;(OPRD1)←(OPRD1)-(OPRD2)帶進(jìn)位減法指令SBB(SubtractionwithBorrow)
SBBOPRD1,OPRD2;(OPRD1)←(OPRD1)-(OPRD2)-CF減1指令DEC(Decrementby1)
DECOPRD;(OPRD)←(OPRD)-1第六十一頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2461
DEC指令常用在循環(huán)程序中修改循環(huán)次數(shù)。例如:
MOVCX,1000HNEXT:DECCX
JNZNEXTHLT第六十二頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2462
求補(bǔ)指令NEG(Negate)
NEGOPRD;(OPRD)←0-(OPRD)
求補(bǔ)指令對(duì)6個(gè)操作數(shù)均有影響。操作數(shù)的類型可以是寄存器或存儲(chǔ)器;可以對(duì)8位或16位數(shù)求補(bǔ)利用NEG指令可以得到負(fù)數(shù)的絕對(duì)值第六十三頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2463
比較指令CMP(Compare)
CMPOPRD1,OPRD2;(OPRD1)-(OPRD2),結(jié)果不送回OPRD1比較指令對(duì)6個(gè)狀態(tài)標(biāo)志位SF、ZF、AF、PF、CF和OF都有影響。比較指令主要用來(lái)比較兩個(gè)數(shù)的大小關(guān)系
第六十四頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2464
壓縮BCD減法的十進(jìn)制調(diào)整DAS(DecimalAdjustforSubtraction)非壓縮BCD減法的十進(jìn)制調(diào)整AAS(unpackedBCD[ASCII]adjustforsubtraction)第六十五頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2465乘法運(yùn)算指令無(wú)符號(hào)數(shù)乘法指令MUL有符號(hào)數(shù)乘法指令I(lǐng)MUL乘法的十進(jìn)制調(diào)整指令A(yù)AM
第六十六頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2466
無(wú)符號(hào)數(shù)乘法指令MUL(Multiplicationunsigned)
MULOPRD指令的操作為:字節(jié)乘法:(AX)←(OPRD)×(AL)字乘法:(DX:AX)←(OPRD)×(AX)
源操作數(shù)OPRD可以是8位或16位的寄存器或存儲(chǔ)器。另一個(gè)操作數(shù)隱含在累加器中(8位乘法時(shí)在AL中;16位乘法時(shí)在AX中)。兩個(gè)操作數(shù)均按無(wú)符號(hào)數(shù)處理,其取值范圍為0~255(字節(jié)),或0~65535(字)。乘法指令要求兩個(gè)操作數(shù)必須等長(zhǎng),且不能是立即數(shù)第六十七頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2467
有符號(hào)數(shù)乘法指令I(lǐng)MUL(IntegerMultiplication)操作數(shù)應(yīng)滿足帶符號(hào)數(shù)的取值范圍,即-128~+127(字節(jié))和-32768~+32767(字)乘法的十進(jìn)制調(diào)整指令A(yù)AM(unpackedBCD[ASCII]adjustformultiply)
第六十八頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2468除法運(yùn)算指令
無(wú)符號(hào)數(shù)除法指令DIV帶符號(hào)數(shù)除法指令I(lǐng)DIV除法的十進(jìn)制調(diào)整指令A(yù)AD
第六十九頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2469
無(wú)符號(hào)數(shù)除法指令DIV(Divisionunsigned)
DIVOPRD指令中的操作數(shù)OPRD(除數(shù))可以是8位或16位的寄存器操作數(shù)或存儲(chǔ)器操作數(shù)。指令隱含被除數(shù)AX(16位)或DX:AX(32位)。字節(jié)除法:(AL)←(AX)/(OPRD)(AH)←(AX)%(OPRD)(%為取余數(shù)操作)字除法:(AX)←(DX:AX)/(OPRD)(DX)←(DX:AX)%(OPRD)(%為取余數(shù)操作)第七十頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2470
帶符號(hào)數(shù)除法指令I(lǐng)DIV(IntegerDivision)IDIV指令在格式和功能上都與DIV指令類似,只是要求操作數(shù)為有符號(hào)數(shù)除法的十進(jìn)制調(diào)整指令A(yù)AD(unpackedBCD[ASCII]adjustfordivision)第七十一頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2471邏輯運(yùn)算和移位指令
邏輯運(yùn)算指令A(yù)ND(邏輯“與”)OR(邏輯“或”)NOT(邏輯“非”)XOR(邏輯“異或”)TEST(測(cè)試)這些指令可對(duì)8位或16位的寄存器或存儲(chǔ)器單元中的內(nèi)容進(jìn)行按位操作第七十二頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2472
邏輯“與”指令A(yù)ND(Logicaland)
ANDOPRD1,OPRD2;(OPRD1)←(OPRD1)∧(OPRD2)AND指令的主要用途是將目標(biāo)操作數(shù)的某些位清零,而其他位保持不變?nèi)绻粋€(gè)寄存器的內(nèi)容與該寄存器本身相與(例如:ANDAX,AX),則寄存器原來(lái)的內(nèi)容不會(huì)改變,但將影響標(biāo)志位SF、ZF和PF,并使CF=OF=0第七十三頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2473
邏輯“或”指令OR(Logicalinclusiveor)
OROPRD1,OPRD2;(OPRD1)←(OPRD1)∨(OPRD2)OR指令的主要用途是將目標(biāo)操作數(shù)的某些位置1,而其他位保持不變第七十四頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2474
邏輯“非”指令NOT(Logicalnot)
NOTOPRDNOT指令將指定的操作數(shù)OPRD按位求反,再送回到該操作數(shù)
邏輯“異或”指令XOR(Logicalnot)
XOROPRD1,OPRD2;(OPRD1)←(OPRD1)⊕(OPRD2)
XOR指令的一個(gè)用途是將寄存器清零,同時(shí)也將進(jìn)位標(biāo)志位CF清零。例如:XORAX,AX
第七十五頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2475
測(cè)試指令TEST(Testornon-destructivelogicaland)TEST指令的格式、操作及對(duì)操作數(shù)的要求和AND指令類似,但該指令“與”的結(jié)果不送回目標(biāo)操作數(shù),而只是影響標(biāo)志位。TEST指令常用于在不破壞原來(lái)操作數(shù)的情況下檢測(cè)操作數(shù)中某些位是“1”還是“0”。例如:TESTAL,80HTESTAX,4000H第七十六頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2476非循環(huán)移位指令
算術(shù)左移指令SAL(Shiftarithmeticleft)算術(shù)右移指令SAR(Shiftarithmeticright)邏輯左移指令SHL(Shiftlogicleft)邏輯右移指令SHR(Shiftlogicright)可以實(shí)現(xiàn)對(duì)8位或16位的寄存器或存儲(chǔ)器操作數(shù)進(jìn)行指定次數(shù)的移位。在要求進(jìn)行2位或更多位的移動(dòng)時(shí),移位的次數(shù)必須放在CL寄存器中。第七十七頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2477
算術(shù)左移和邏輯左移指令SAL/SHL
算術(shù)左移指令SAL和邏輯左移指令SHL執(zhí)行完全相同的操作:
SALOPRD,1SHLOPRD,1或SALOPRD,CLSHLOPRD,CLSAL指令和SHL指令的區(qū)別是:SAL指令將操作數(shù)視為有符號(hào)數(shù),而SHL將操作數(shù)視為無(wú)符號(hào)數(shù)
第七十八頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2478[例3-8]一個(gè)16位無(wú)符號(hào)數(shù)存放在以DATA為首地址的兩個(gè)連續(xù)的單元,用左移指令實(shí)現(xiàn)將該數(shù)乘以乘以10。
LEASI,DATA;DATA單元的偏移地址送SIMOVAX,[SI];(AX)←被乘數(shù)
SHLAX,1;(AX)←DATA*2MOVBX,AX;暫存于BXMOVCL,2;(CL)←移位次數(shù)
SHLAX,CL;(AX)←DATA*8ADDAX,BX;(AX)←DATA*10HLT;停止第七十九頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2479
邏輯右移指令SHR將目標(biāo)操作數(shù)順序向右移1位或CL指定的位數(shù)
例:SHRBH,1
SHRAX,CL算術(shù)右移指令SAR
將目標(biāo)操作數(shù)順序向右移1位或CL指定的位數(shù)例:SARAL,1SARBX,CL第八十頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2480循環(huán)移位指令
不帶進(jìn)位標(biāo)志位CF的循環(huán)左移指令ROL(Rotateleft)不帶進(jìn)位標(biāo)志位CF的循環(huán)右移指令ROR(Rotateright)帶進(jìn)位標(biāo)志位CF的循環(huán)左移指令RCL(Rotateleftthroughcarry)帶進(jìn)位標(biāo)志位CF的循環(huán)右移指令RCR(Rotaterightthroughcarry)所有循環(huán)移位指令都只影響進(jìn)位標(biāo)志CF和溢出標(biāo)志OF,而對(duì)其他標(biāo)志位沒(méi)有影響第八十一頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2481
不帶進(jìn)位標(biāo)志位CF的循環(huán)左移指令ROL
ROLOPRD,1或ROLOPRD,CL
不帶進(jìn)位標(biāo)志位CF的循環(huán)右移指令ROR
ROROPRD,1或ROROPRD,CL
第八十二頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2482
帶進(jìn)位標(biāo)志位CF的循環(huán)左移指令RCL
RCLOPRD,1或RCLOPRD,CL
帶進(jìn)位標(biāo)志位CF的循環(huán)右移指令RCR
RCROPRD,1或RCROPRD,CL
第八十三頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2483串操作指令
串操作指令具有以下的共同特點(diǎn):⑴源串指針為DS:SI。源串(源操作數(shù))默認(rèn)為數(shù)據(jù)段,即段基地址在DS中,但允許超越。偏移地址用SI寄存器指定。⑵目標(biāo)串指針為ES:DI。目標(biāo)串(目標(biāo)操作數(shù))默認(rèn)在ES附加段中,不允許段超越。偏移地址用DI寄存器指定。⑶使用重復(fù)前綴時(shí),要操作的串長(zhǎng)度放在CX寄存器中。⑷自動(dòng)修改指針和計(jì)數(shù)器。在對(duì)每個(gè)字節(jié)(或字)操作后,SI和DI寄存器的內(nèi)容會(huì)根據(jù)方向標(biāo)志DF的情況自動(dòng)修改:若(DF)=0,則每次操作后,SI和DI按地址增量方向修改(對(duì)字節(jié)操作加1;對(duì)字操作加2);若(DF)=1,則SI和DI按地址減量方向修改。若使用了重復(fù)前綴,CX的內(nèi)容也會(huì)每次自動(dòng)減1。第八十四頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2484
用于串操作的重復(fù)前綴:REP:無(wú)條件重復(fù)前綴-重復(fù)執(zhí)行指令規(guī)定的操作,直到(CX)=0;REPE:相等時(shí)重復(fù)-ZF=1,且(CX)≠0時(shí)重復(fù);REPZ:結(jié)果為零時(shí)重復(fù)-ZF=1,且(CX)≠0時(shí)重復(fù);REPNE:不相等時(shí)重復(fù)-ZF=0,且(CX)≠0時(shí)重復(fù);REPNZ:結(jié)果不為零時(shí)重復(fù)-ZF=0,且(CX)≠0時(shí)重復(fù)
第八十五頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2485
串傳送指令MOVS(Movestring)指令格式有3種:
MOVSOPRD1,OPRD2MOVSBMOVSW第二種和第三種格式隱含了兩個(gè)操作數(shù)的地址,此時(shí)源串和目標(biāo)串地址必須符合默認(rèn)值,即源串在DS段,偏移地址在SI中,而目標(biāo)串在ES段,偏移地址在DI中
第八十六頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2486[例]將3000H:1500H地址開(kāi)始的100個(gè)字節(jié)傳送到6000H:1000H開(kāi)始的內(nèi)存單元中去
MOVAX,3000HMOVDS,AX;設(shè)定源串段地址MOVAX,6000HMOVES,AX;設(shè)定目標(biāo)串段地址MOVSI,1500H;設(shè)定源串偏移地址MOVDI,1000H;設(shè)定目標(biāo)串偏移地址MOVCX,100;串長(zhǎng)度送CXCLD;(DF)=0,使地址指針按增量方向修改NEXT:REPMOVSB
第八十七頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2487
串比較指令CMPS(Comparestring)指令有3種格式:
CMPSOPRD1,OPRD2CMPSBCMPSW串比較指令通常和條件重復(fù)前綴REPE(REPZ)或REPNE(REPNZ)連用,用來(lái)檢查兩個(gè)字符串是否相等。第八十八頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2488[例3-10]現(xiàn)有兩個(gè)長(zhǎng)度均為100個(gè)字節(jié)的字符串,STRING1為源串首地址,STRING2為目標(biāo)串首地址。試比較兩個(gè)字符串是否相同,并找出其中第一個(gè)不相等的字符,將源串中該字符的地址送BX,該字符送AL。
LEASI,STRING1;(SI)←源串首地址
LEADI,STRING2;(DI)←目標(biāo)串首地址
MOVCX,100;(CX)←串長(zhǎng)度
CLD;(DF)=0,使地址指針按增量方向修改
REPECMPSB;若相等則重復(fù)比較
JCXZSTOP;若(CX)=0,則轉(zhuǎn)STOPDECSI;否則(SI)-1,指向不相等的單元MOVBX,SI;(BX)←不相等單元的地址MOVAL,[SI];(AL)←不相等單元的內(nèi)容STOP:HLT;停止第八十九頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2489
串掃描指令SCAS(Scanstring)指令格式有3種:
SCASOPRD;OPRD為目的串
SCASBSCASWSCAS指令執(zhí)行時(shí),將累加器AL或AX的值與目的串(由ES:DI所指向)中的字節(jié)或字進(jìn)行比較,比較結(jié)果不改變目的操作數(shù),只影響標(biāo)志位
SCAS指令常用于在一個(gè)字符串中搜索特定的關(guān)鍵字,把要找的關(guān)鍵字放在AL(或AX)中,再用本指令與字符串中各字符逐一進(jìn)行比較第九十頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2490[例3-11]有一個(gè)包含100個(gè)字符的字符串,其首地址為STRING。找出字符串中第一個(gè)回車(chē)符CR(其ASCII碼為ODH),找到后將其地址保存在BX
LEADI,STRING;(DI)←字符串首地址
MOVAL,0DH;(AL)←回車(chē)符CRMOVCX,100;(CX)←字符串長(zhǎng)度
CLD ;清標(biāo)志位DFREPNESCASB;若未找到,重復(fù)掃描
JZ FOUND;若找到,則轉(zhuǎn)FOUND JMPSTOP;轉(zhuǎn)移至STOPFOUND:DECDI;(DI)-1 MOVBX,DI;地址送到BXSTOP:HLT;停止第九十一頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2491
串裝入指令LODS(Loadstring)指令格式有3種:
LODSOPRD;OPRD為源串
LODSB LODSWLODS指令把由DS:SI指向的源串中的字節(jié)或字取到累加器AL或AX中,并在這之后根據(jù)DF的值自動(dòng)修改指針SI,以指向下一個(gè)要裝入的字節(jié)或字。
第九十二頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2492
[例3-12]在以BUFFER為首地址的內(nèi)存區(qū)域中,有10個(gè)以非壓縮BCD碼形式存放的十進(jìn)制數(shù),它們的值可能是0~9中的任意一個(gè)。將這些十進(jìn)制數(shù)順序顯示在屏幕上。在屏幕上顯示一個(gè)字符的方法,是使用DOS系統(tǒng)功能調(diào)用,這樣只需要三條語(yǔ)句即可:①02H→AH;②待顯示字符的ASCII碼→DL;③INT21H。第九十三頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2493
LEASI,BUFFER;(SI)←源串首地址
MOV CX,10;(CX)←字符串長(zhǎng)度
CLD;清標(biāo)志位DF MOVAH,02H;(AH)←功能號(hào)NEXT:LODSB;取一個(gè)BCD碼到AL ADDAL,30H;BCD碼轉(zhuǎn)換為ASCII碼
MOVDL,AL;(DL)←待顯示字符的ASCII碼
INT21H;顯示
DECCX;(CX)←(CX)-1 JNZNEXT;(CX)≠0則重復(fù)
HLT;停止第九十四頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2494
串存儲(chǔ)指令STOS(Storestring)指令格式有3種:
STOSOPRD;OPRD為目標(biāo)串
STOSBSTOSWSTOS指令把累加器AL中的字節(jié)或AX中的字存到由ES:DI指向的存儲(chǔ)器單元中,并在這之后根據(jù)DF的值自動(dòng)修改指針DI的值(增量或減量),以指向下一個(gè)存儲(chǔ)單元。利用重復(fù)前綴REP,可對(duì)連續(xù)的存儲(chǔ)單元存入相同的值
第九十五頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2495[例]將5000H:0800H單元開(kāi)始的100個(gè)字節(jié)中裝入初始值FFH
MOVAX,5000H MOVES,AX
MOVDI,0800H
MOVCX,50
CLD
MOVAX,0FFFFHREPSTOSW第九十六頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2496控制轉(zhuǎn)移指令
無(wú)條件轉(zhuǎn)移指令JMP(Jump)JMP指令的操作是無(wú)條件地將程序轉(zhuǎn)移到指定的目標(biāo)地址,并從該地址開(kāi)始執(zhí)行新的程序段。目標(biāo)地址可以用直接方式或間接方式給出。JMP指令不影響標(biāo)志位⑴段內(nèi)直接轉(zhuǎn)移JMPLABLE
;(IP)←(IP)+disp,disp為8位或16位的相對(duì)位移量。
指令中的LABLE是一個(gè)標(biāo)號(hào),也稱符號(hào)地址,它表示轉(zhuǎn)移的目的地。該標(biāo)號(hào)與本程序在同一個(gè)代碼段內(nèi)。
第九十七頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2497
⑵段內(nèi)間接轉(zhuǎn)移指令格式:
JMPOPRD;(IP)←(OPRD)指令中的操作數(shù)OPRD是16位的寄存器或者存儲(chǔ)器地址。可以采用各種尋址方式。指令的操作是用指定的16位寄存器或存儲(chǔ)器兩單元的內(nèi)容作為目標(biāo)的偏移地址,來(lái)取代原來(lái)IP的內(nèi)容,從而實(shí)現(xiàn)程序的轉(zhuǎn)移。代碼段寄存器CS的值不變。
例:JMPSI;(IP)←(SI)JMPWORDPTR[BX+SI]
;(IP)←(BX+SI)所指向的連續(xù)兩個(gè)存儲(chǔ)單元的內(nèi)容第九十八頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2498
⑶段間直接轉(zhuǎn)移JMPFARLABLE;(IP)←OFFSETLABLE;(CS)←SEGLABLE指令的操作數(shù)是一個(gè)遠(yuǎn)標(biāo)號(hào),該標(biāo)號(hào)在另一個(gè)代碼段內(nèi)
⑷段間間接轉(zhuǎn)移
JMPmem32;(IP)←(mem32);(CS)←(mem32+2)指令的操作數(shù)是一個(gè)32位的存儲(chǔ)器地址(不能是寄存器)。指令的操作是將存儲(chǔ)器的前兩個(gè)字節(jié)送到IP寄存器,存儲(chǔ)器的后兩個(gè)字節(jié)送到CS寄存器,以實(shí)現(xiàn)到另一個(gè)代碼段的轉(zhuǎn)移。
第九十九頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/2499條件轉(zhuǎn)移指令Jcc
條件轉(zhuǎn)移指令Jcc
Jccshort_lable指令助記符中的“cc”表示條件。Short_lable為短轉(zhuǎn)移。條件轉(zhuǎn)移指令是根據(jù)前一條指令執(zhí)行后標(biāo)志位的狀態(tài),來(lái)決定程序是否轉(zhuǎn)移。若滿足轉(zhuǎn)移指令規(guī)定的條件,則程序轉(zhuǎn)移到指令指定的地址去執(zhí)行;若不滿足條件,則順序執(zhí)行下一條指令。所有的條件轉(zhuǎn)移都是直接尋址方式的短轉(zhuǎn)移,即只能在以當(dāng)前指令為中心的-128~+127范圍內(nèi)轉(zhuǎn)移。條件轉(zhuǎn)移指令不影響標(biāo)志位
第一百頁(yè),共一百零八頁(yè),2022年,8月28日2023/2/24100
條件轉(zhuǎn)移指令
指令名稱助記符轉(zhuǎn)移條件
進(jìn)位轉(zhuǎn)移JC(CF)=1無(wú)進(jìn)位轉(zhuǎn)移JNC(CF)=0等于/零轉(zhuǎn)移JE/JZ(ZF)=1不等于/非零轉(zhuǎn)移JNE/JNZ(ZF)=0負(fù)轉(zhuǎn)移JS(SF)=1正轉(zhuǎn)移JNS(SF)=0溢出轉(zhuǎn)移JO(OF)=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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西軟件職業(yè)技術(shù)大學(xué)《運(yùn)動(dòng)與健康促進(jìn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 構(gòu)建高效教育資源網(wǎng)絡(luò)推動(dòng)教育合作發(fā)展
- 安陽(yáng)師范學(xué)院《放射生態(tài)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 醫(yī)療科技的未來(lái)創(chuàng)新實(shí)驗(yàn)室的研究與展望
- 商業(yè)培訓(xùn)中的寓教于樂(lè)新模式
- 湖北三峽職業(yè)技術(shù)學(xué)院《食品安全進(jìn)展》2023-2024學(xué)年第一學(xué)期期末試卷
- 年底品牌抽獎(jiǎng)活動(dòng)方案
- 北京電子科技職業(yè)學(xué)院《環(huán)境工程生物學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 生產(chǎn)工如何培訓(xùn)新員工
- 南京郵電大學(xué)《果樹(shù)栽培學(xué)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 無(wú)記名投票模板
- 衛(wèi)生院處方管理辦法培訓(xùn)
- 基本藥物政策培訓(xùn)
- 鐵路隧道施工職業(yè)病防控
- 安徽省宣城市皖東南初中六校2024-2025學(xué)年上學(xué)期七年級(jí)期中考試數(shù)學(xué)試卷
- 《數(shù)據(jù)資產(chǎn)會(huì)計(jì)》 課件 第五章 數(shù)據(jù)資產(chǎn)的價(jià)值評(píng)估
- 2024-2025學(xué)年八年級(jí)上冊(cè)生物第17章《動(dòng)物的運(yùn)動(dòng)和行為》測(cè)試卷(蘇科版)
- 滬教版英語(yǔ)小學(xué)四年級(jí)上學(xué)期試卷與參考答案(2024-2025學(xué)年)
- YYT 0308-2015 醫(yī)用透明質(zhì)酸鈉凝膠
- 上海版小學(xué)英語(yǔ)單詞表
- 2024版房屋租賃合同范本房屋租賃合同
評(píng)論
0/150
提交評(píng)論