版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微機(jī)原理與接口技術(shù)作者:徐建平成貴學(xué)編輯ppt第3章8086指令系統(tǒng)(上)計(jì)算機(jī)能識(shí)別并執(zhí)行的基本操作命令稱為計(jì)算機(jī)指令計(jì)算機(jī)所能執(zhí)行的全部指令的集合稱為指令系統(tǒng)而程序由按一定順序排列的指令序列構(gòu)成。編輯ppt【本章內(nèi)容提要】
掌握8086指令的分類與格式掌握8086指令中操作數(shù)和程序轉(zhuǎn)移地址的尋址方式掌握調(diào)試程序DEBUG的使用方法掌握數(shù)據(jù)傳送類指令的功能與用法掌握算術(shù)運(yùn)算與邏輯運(yùn)算類指令的功能與用法編輯ppt3.18086指令系統(tǒng)入門編輯ppt3.1.1指令分類
計(jì)算機(jī)指令是指計(jì)算機(jī)所能識(shí)別并執(zhí)行的基本操作命令,這些全部操作命令的集合被稱為計(jì)算機(jī)的指令系統(tǒng)。對(duì)于不同類型的微處理器,其指令系統(tǒng)各不相同。8086指令系統(tǒng)是80x86系列微處理器的基礎(chǔ)指令系統(tǒng),8086后續(xù)微處理器均繼承了此指令系統(tǒng),并在此基礎(chǔ)上進(jìn)行了擴(kuò)充。
編輯ppt8086指令系統(tǒng)按功能可以分為六大類,分別是:數(shù)據(jù)傳送類指令算術(shù)運(yùn)算類指令邏輯運(yùn)算類指令字符串操作指令處理器控制類指令程序控制類指令編輯ppt由于計(jì)算機(jī)指令實(shí)質(zhì)上均為二進(jìn)制形式,其缺點(diǎn)是不便于理解和記憶。為此,人們發(fā)明了助記符來(lái)輔助記憶和書寫指令,這就是匯編指令。編輯ppt3.1.2指令格式計(jì)算機(jī)指令通常由操作碼和操作數(shù)兩部分組成,其格式如下:
操作碼[目的操作數(shù)][,源操作數(shù)]在8086指令系統(tǒng)中,操作碼的長(zhǎng)度一般為1~2個(gè)字節(jié),指令的總長(zhǎng)度一般為1~6個(gè)字節(jié)。編輯ppt我們把一條指令中所包含的二進(jìn)制代碼的位數(shù)稱為指令字長(zhǎng),它通常是機(jī)器字長(zhǎng)的一倍、兩倍、多倍或半倍。另外,即使對(duì)于同一條指令,由于其操作數(shù)尋址方式的不同,其長(zhǎng)度也是變化的,這樣的指令被稱為不定長(zhǎng)指令。反之,如果某些指令長(zhǎng)度始終不變,我們則稱其為定長(zhǎng)指令。編輯ppt3.1.3操作數(shù)尋址在8086指令中,操作數(shù)可以存放在存儲(chǔ)器、寄存器或指令中。要執(zhí)行指令,就要通過(guò)操作數(shù)存放的地址找到操作數(shù),我們把指令中尋找操作數(shù)的方式稱為尋址方式。編輯ppt1.立即尋址指令中直接給出指令的操作數(shù)(跟在操作碼的后面),取出指令的同時(shí)就可以獲得操作數(shù),這種尋址方式稱為立即尋址,這種操作數(shù)稱為立即數(shù)。編輯ppt【例3-1】編輯ppt編輯ppt2.寄存器尋址操作數(shù)存放在某個(gè)寄存器內(nèi),在指令中直接給出寄存器的名字,這種尋址方式稱為寄存器尋址。源寄存器和目的寄存器的位數(shù)必須一致。例如,MOVCL,BX是一條非法指令。編輯ppt【例3-2】MOVAX,BX ;源操作數(shù)和目的操作數(shù)都是寄存器尋址方式,指令執(zhí)行后,(AX)=(BX),BX中的內(nèi)容不變。MOVAL,AH ;源操作數(shù)和目的操作數(shù)都是寄存器尋址方式,指令執(zhí)行后,;(AL)=(AH),AH中的內(nèi)容不變。MOVAX,1234H ;目的操作數(shù)是寄存器尋址方式編輯ppt3.直接尋址操作數(shù)存放在存儲(chǔ)器中,指令中直接給出操作數(shù)所在存儲(chǔ)單元的偏移地址,這種尋址方式稱為直接尋址。默認(rèn)情況下,操作數(shù)存放在數(shù)據(jù)段中。要使用其他段中操作數(shù),則應(yīng)在指令中增加段前綴(稱為段超越),如ES:2000H等。尋址時(shí),用于存放操作數(shù)的存儲(chǔ)單元的物理地址為:段地址×16(即左移四位)+偏移地址。編輯ppt【例3-3】
MOVAX,[2000H] ;將DS段偏移量為2000H中內(nèi)容送入AX寄存器MOVAX,ES:2000H ;將ES段偏移量為2000H中內(nèi)容送入AX編輯ppt編輯ppt在匯編語(yǔ)言中,經(jīng)常用符號(hào)地址取代數(shù)值地址,例如:
MOVAX,BUFFER表示把BUFFER中存放的數(shù)據(jù)送入AX寄存器。另外,該指令也可寫成如下形式,二者是等效的。
MOVAX,[BUFFER]編輯ppt若指令中指定的寄存器是SI、DI和BX,則操作數(shù)默認(rèn)存放在當(dāng)前數(shù)據(jù)段DS中;若指令中指定的寄存器是BP,則操作數(shù)默認(rèn)存放在當(dāng)前堆棧段SS中
編輯ppt【例3-4】已知:(DS)=3000H,(BX)=1100H,(31100H)=3412H,執(zhí)行指令:
MOVAX,[BX]操作數(shù)的物理地址為:
(DS)×16+(BX)=3000H×16+1100H=31100H指令執(zhí)行后(AX)=3412H。
編輯ppt5.寄存器相對(duì)尋址操作數(shù)存放在存儲(chǔ)器中,指令中指定的基址或變址寄存器的內(nèi)容,加上指令中給出的8位或16位偏移量作為操作數(shù)的偏移地址,這種尋址方式稱為寄存器相對(duì)尋址。操作數(shù)的物理地址為:段地址×16+(寄存器)+偏移量。編輯ppt【例3-5】已知:(DS)=3000H,(BX)=1000H,COUNT=2000H,(33000H)=13H,(33001H)=24H,執(zhí)行指令:
MOVAX,COUNT[BX]操作數(shù)的物理地址為:
(DS)×16+(BX)+COUNT
=3000H×16+1000H+2000H
=33000H指令執(zhí)行后,(AX)=2413H。編輯ppt6.基址加變址尋址操作數(shù)存放在存儲(chǔ)器中,指令中基址寄存器(BX或BP)的內(nèi)容加上變址寄存器(SI或DI)的內(nèi)容作為操作數(shù)的偏移地址,這種尋址方式稱為基址加變址尋址。操作數(shù)的物理地址為:段地址×16+(基址寄存器)+(變址寄存器)。編輯ppt【例3-6】已知:(DS)=3000H,(BX)=1000H,(DI)=2000H,(33000H)=13H,(33001H)=24H,執(zhí)行指令:
MOVAX,[BX][DI]操作數(shù)的物理地址為:
(DS)×16+(BX)+(DI)
=3000H×16+1000H+2000H
=33000H指令執(zhí)行后,(AX)=2413H。編輯ppt7.相對(duì)基址加變址尋址操作數(shù)存放在存儲(chǔ)器中,指令中基址寄存器(BX或BP)的內(nèi)容加上變址寄存器(SI或DI)的內(nèi)容,再加上指令中給出的偏移量作為操作數(shù)的偏移地址,這種尋址方式稱為相對(duì)基址加變址尋址。操作數(shù)的物理地址為:段地址×16+(基址寄存器)+(變址寄存器)+偏移量。編輯ppt【例3-7】已知:(DS)=3000H,(BX)=1000H,(DI)=2000H,COUNT=100H,(33100H)=12H,(33101H)=34H,指令:
MOVAX,COUNT[BX][DI]操作數(shù)的物理地址為:
(DS)×16+COUNT+(BX)+(DI)
=3000H×16+100H+1000H+2000H
=33100H指令執(zhí)行后,(AX)=3412H。編輯ppt3.1.4程序轉(zhuǎn)移地址尋址8086指令系統(tǒng)中,有一類指令是用來(lái)控制程序執(zhí)行順序的。這些指令的操作數(shù)實(shí)際上是程序轉(zhuǎn)移地址。對(duì)程序轉(zhuǎn)移地址的尋址方式有以下4種。編輯ppt1.段內(nèi)直接尋址指令中直接給出程序轉(zhuǎn)移地址(8位或16位偏移量)的尋址方式稱為段內(nèi)直接尋址。程序順序執(zhí)行時(shí),當(dāng)前要執(zhí)行的指令的地址為:CS:IP,即其物理地址為(CS)×16+(IP)。執(zhí)行轉(zhuǎn)移指令后,CS寄存器中的內(nèi)容不變,IP寄存器中的內(nèi)容被更新為IP寄存器原值加上指令中給出的偏移量,作為指令的新偏移地址。編輯ppt【例3-8】已知:(CS)=3000H,(IP)=2000H,OPR的偏移量為0100H,執(zhí)行指令:
JMPNEARPTROPR如下圖所示,執(zhí)行指令后,(CS)=3000H(IP)=2003H+0100H=2103H編輯ppt編輯pptNEARPTR用來(lái)指明的偏移量為16位,稱為近轉(zhuǎn)移,其轉(zhuǎn)移范圍為﹣8000H~7FFFH。NEARPTR可省略。指令中的偏移量指的是當(dāng)前IP值(即JMP指令的下一條指令)到目標(biāo)地址之間的距離,因此,執(zhí)行JMP指令時(shí),當(dāng)前(IP)=2003H。編輯ppt2.段內(nèi)間接尋址將存放在指令中指定的16位寄存器的內(nèi)容或存儲(chǔ)器中字存儲(chǔ)單元的內(nèi)容賦于IP,CS的內(nèi)容保持不變,這種尋址方式稱為段內(nèi)間接尋址。編輯ppt【例3-9】已知:(CS)=3000H,(DS)=4000H,(IP)=1000H,(BX)=0100H,(40103H)=2000H,執(zhí)行指令:
JMPWORDPTR3[BX]此時(shí),程序轉(zhuǎn)移地址存放在存儲(chǔ)器中。如圖3-4所示。執(zhí)行指令后,存放偏移地址的物理地址為:DS:[BX+3H]=DS:[3H+0100H]=DS:0103H=40103H因此,(IP)=2000H,(CS)=3000H。編輯ppt編輯ppt指令:JMPCX表示執(zhí)行指令后將CX中的內(nèi)容賦于IP,而CS中的內(nèi)容不變。WORDPTR表明存儲(chǔ)器操作數(shù)為一個(gè)字單元(16位)。編輯ppt3.段間直接尋址指令中直接給出16位段地址和16位偏移地址。指令中的段地址(操作碼后第二個(gè)字)作為當(dāng)前指令的段地址,指令中的偏移地址(操作碼后第一個(gè)字)被賦給IP寄存器作為指令的偏移地址。FARPTR表明指令的目標(biāo)地址在另一個(gè)代碼段中,稱為遠(yuǎn)轉(zhuǎn)移
編輯ppt【例3-10】已知:(CS)=3000H,(IP)=0100H,OPR的地址為4000H:1000H,執(zhí)行指令:
JMPFARPTROPR執(zhí)行指令后,當(dāng)前指令的(CS)=4000H,(IP)=1000H其物理地址為:4000H×16+1000H=41000H。編輯ppt4.段間間接尋址程序轉(zhuǎn)移的偏移地址和段地址存放在存儲(chǔ)器中兩個(gè)連續(xù)的字存儲(chǔ)單元中。其中,第一個(gè)字存放偏移地址,被賦于IP寄存器;第二個(gè)字存放段地址,被賦于CS寄存器。DWORDPTR表明存儲(chǔ)器操作數(shù)為雙字單元(32位)。編輯ppt【例3-11】已知:(CS)=3000H,(IP)=0100H,DATA指向的存儲(chǔ)單元的內(nèi)容為00H、10H、00H和40H,執(zhí)行指令:
JMPDWORDPTRDATA如下圖所示,執(zhí)行指令后,當(dāng)前指令的CS被賦于4000H,IP被賦于1000H,其物理地址為:4000H×16+1000H=41000H。編輯ppt編輯ppt3.1.5DEBUG的使用標(biāo)志名設(shè)置(1)清除(0)溢出ovnv方向dn(減)up(增)中斷ei(啟用)di(禁用)正負(fù)ng(負(fù))pl(正)零zrnz輔助進(jìn)位acna奇偶校驗(yàn)pe(偶校驗(yàn))po(奇校驗(yàn))進(jìn)位cync編輯ppt3.2數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令是8086指令系統(tǒng)中最基本、使用最頻繁的一類指令,其主要功能是將數(shù)據(jù)或地址傳送到寄存器或存儲(chǔ)單元中。編輯ppt3.2.1傳送指令格式:MOVDST,SRC功能:將源操作數(shù)傳送給目的操作數(shù)。數(shù)據(jù)傳送類指令可以在CPU內(nèi)部寄存器、存儲(chǔ)器與立即數(shù)之間進(jìn)行數(shù)據(jù)傳送,傳送方式如下:編輯ppt①在CPU內(nèi)部寄存器之間進(jìn)行數(shù)據(jù)傳送例如,
MOVBL,ALMOVBX,AXMOVDS,AX編輯ppt②在CPU內(nèi)部寄存器與存儲(chǔ)器之間進(jìn)行數(shù)據(jù)傳送例如:MOVAX,[1000H]MOVBX,[SI][BX]MOVDATA[BP],ES編輯ppt③將立即數(shù)傳送給寄存器例如,MOVAX,1234HMOVSI,1000H編輯ppt④將立即數(shù)傳送給存儲(chǔ)單元例如,MOVWORDPTR[BX],1000H編輯ppt注意:不允許CS、IP作為目的操作數(shù)。
MOVCS,AX或者M(jìn)OVIP,AX(均錯(cuò))源操作數(shù)和目的操作數(shù)不能同時(shí)為段寄存器。
MOVDS,CS(錯(cuò))源操作數(shù)和目的操作數(shù)的類型必須匹配。
MOVBL,AX(錯(cuò))編輯ppt源操作數(shù)和目的操作數(shù)不能同時(shí)為存儲(chǔ)器單元。
MOV[2000],[3000]立即數(shù)只能作為源操作數(shù),不能作為目的操作數(shù)。不允許直接向段寄存器傳送立即數(shù)。該指令不影響標(biāo)志位。編輯ppt【例3-12】指出下列指令中的錯(cuò)誤(1)MOV[DI],[SI](2)MOVDS,1000H(3)MOV2000H,AX編輯ppt3.2.2堆棧操作指令堆棧是存儲(chǔ)器中按照“后進(jìn)先出”原則工作的一個(gè)區(qū)域最后一個(gè)壓入堆棧的數(shù)據(jù)所在的存儲(chǔ)單元稱為棧頂數(shù)據(jù)的存入和彈出操作都是在棧頂進(jìn)行的。編輯ppt堆棧位于堆棧段中在堆棧操作中,段寄存器SS指示段地址,堆棧指針寄存器SP指示棧頂,從而確定入棧或出棧的存儲(chǔ)單元。編輯ppt堆棧中的內(nèi)容是由高地址向低地址方向存放的為保證SP總是指向當(dāng)前的棧頂,SP的內(nèi)容必須及時(shí)修改入棧操作時(shí)SP數(shù)值減小,出棧操作時(shí)SP數(shù)值增加編輯ppt編輯ppt1.入棧指令格式:PUSHSRC功能:先將SP的內(nèi)容減2,再將SRC的內(nèi)容存入SP指示的棧頂存儲(chǔ)單元。編輯ppt2.出棧指令格式:POPDST功能:先將SP指示的棧頂內(nèi)容存入DST,再將SP的內(nèi)容加2,指示當(dāng)前棧頂?shù)拇鎯?chǔ)單元。編輯ppt注意:堆棧操作指令只能做字操作。堆棧操作指令不允許使用立即尋址方式。堆棧操作指令可以使用段寄存器,但出棧指令不允許使用CS寄存器。入棧指令和出棧指令不影響標(biāo)志位。編輯ppt【例3-13】已知:(SS)=3000H,(SP)=1000H,(AX)=1122H,(31000H)=1234H。執(zhí)行指令:
PUSHAXPOPBX指令執(zhí)行情況如圖3-12所示。
編輯ppt編輯ppt堆棧在子程序調(diào)用和中斷調(diào)用中起著很重要的作用。另外,如果程序中要使用某些寄存器,但這些寄存器的內(nèi)容以后還要用,就可以先用入棧指令將其保存,之后再用出棧指令恢復(fù)原來(lái)的內(nèi)容。編輯ppt3.2.3交換指令格式:XCHGOPR1,OPR2功能:兩個(gè)操作數(shù)中的內(nèi)容進(jìn)行交換。例如:
XCHGAX,BXXCHGBX,[1234H]編輯ppt注意:兩個(gè)操作數(shù)中必須有一個(gè)在寄存器中,即不允許兩個(gè)存儲(chǔ)器之間進(jìn)行交換。不允許使用段寄存器和立即數(shù)。交換指令不影響標(biāo)志位。編輯ppt【例3-14】已知:(BX)=1122H,(DS)=3000H,(31000H)=1234H。執(zhí)行指令:
XCHGBX,[1000H]源操作數(shù)的物理地址為:
(DS)×16+1000H=31000H。指令執(zhí)行的結(jié)果為:(BX)=1234H,(31000H)=1122H。編輯ppt小技巧要實(shí)現(xiàn)兩個(gè)存儲(chǔ)單元X與Y之間的數(shù)據(jù)交換,可以執(zhí)行如下指令:
XCHGAX,XXCHGAX,YXCHGAX,X編輯ppt3.2.4目的地址傳送指令目的地址傳送指令用于將地址送到指定寄存器中。編輯ppt1.有效地址傳送指令格式:LEAREG,MEM功能:將存儲(chǔ)器MEM的有效地址(偏移地址)送到指定寄存器中。編輯ppt2.指針?biāo)图拇嫫骱虳S指令格式:LDSREG,MEM功能:將存儲(chǔ)器MEM中存放的4個(gè)連續(xù)字節(jié)中的內(nèi)容(包括偏移地址和段地址)分別送到指定寄存器和DS中。其中,前2個(gè)字節(jié)送入指定寄存器中,后2個(gè)字節(jié)送入DS中。編輯ppt3.指針?biāo)图拇嫫骱虴S指令格式:LESREG,MEM功能:將存儲(chǔ)器MEM中存放的4個(gè)連續(xù)字節(jié)中的內(nèi)容(包括偏移地址和段地址)分別送到指定寄存器和ES中。其中,前2個(gè)字節(jié)送入指定寄存器中,后2個(gè)字節(jié)送入ES中。編輯ppt注意:目的地址傳送指令中的目的操作數(shù)必須是16位通用寄存器,源操作數(shù)必須是存儲(chǔ)器。目的地址傳送指令不影響標(biāo)志位。編輯ppt【例3-15】已知:(DS)=3000H,(32000H)=12H,(32001H)=34H,(32002H)=56H,(32003H)=78H。執(zhí)行指令:
LDSSI,[2000H]指令執(zhí)行情況如圖3-13所示編輯ppt編輯ppt3.2.5輸入輸出指令輸入輸出指令用于在I/O端口與CPU之間傳送數(shù)據(jù)。編輯ppt1.輸入指令長(zhǎng)格式:INAL,PORTINAX,PORT短格式:INAL,DXINAX,DX功能:從指定的I/O端口輸入一個(gè)字節(jié)或一個(gè)字的數(shù)據(jù)送入AL或AX。編輯ppt2.輸出指令長(zhǎng)格式:OUTPORT,ALOUTPORT,AX短格式:OUTDX,ALOUTDX,AX功能:將AL或AX中的內(nèi)容輸出到指定的I/O端口。編輯ppt注意:輸入輸出指令只能使用累加器AX或AL來(lái)輸入或輸出數(shù)據(jù)。PORT和DX的內(nèi)容均為I/O端口地址。PORT表示8位端口地址(00H-FFH)。當(dāng)端口地址為16位時(shí),必須使用短格式,使用前先把端口號(hào)放到DX中。輸入輸出指令不影響標(biāo)志位。編輯ppt【例3-16】將端口1200H的一個(gè)字送入累加器中。指令為:
MOVDX,1200HINAX,DX編輯ppt3.2.6換碼指令格式:XLAT功能:把一種代碼轉(zhuǎn)換成另一種代碼。實(shí)現(xiàn)方法:通常先建立一個(gè)字節(jié)表格;將首地址放入BX中;相對(duì)于首地址的偏移量存入AL中;根據(jù)AL和BX的內(nèi)容找到轉(zhuǎn)換后的代碼送到AL中。編輯ppt注意:換碼指令只能使用AL和BX兩個(gè)寄存器。換碼指令不影響標(biāo)志位。編輯ppt【例3-17】在數(shù)據(jù)區(qū)ASC開(kāi)始的存儲(chǔ)區(qū)依次存放著A~Z的ASCII碼,將字母的順序號(hào)變?yōu)閷?duì)應(yīng)字母的ASCII碼值。程序段如下:
ASCDB‘ABCDEFG……Z’ ;定義數(shù)據(jù)區(qū)ASCMOVBX,OFFSETASC;將ASC的偏移地址送入BXMOVAL,6XLAT ;指令執(zhí)行后,AL中的內(nèi)容為字母G的ASCII碼值編輯ppt3.2.7標(biāo)志位寄存器傳送指令標(biāo)志位寄存器傳送指令主要用于對(duì)標(biāo)志位寄存器的操作。編輯ppt1.LAHF格式:LAHF功能:將標(biāo)志位寄存器的低8位送入AH。編輯ppt2.SAHF格式:SAHF功能:將AH的內(nèi)容送入標(biāo)志位寄存器的低8位。編輯ppt3.PUSHF格式:PUSHF功能:將標(biāo)志位寄存器的內(nèi)容壓入堆棧。編輯ppt4.POPF格式:POPF功能:將棧頂?shù)膬?nèi)容送入標(biāo)志位寄存器。注意:指令LAHF和PUSHF不影響標(biāo)志位。編輯ppt實(shí)訓(xùn)3-2將十六進(jìn)制數(shù)據(jù)串轉(zhuǎn)換為ASCII碼利用查表法將一個(gè)十六進(jìn)制數(shù)1AB3轉(zhuǎn)換為對(duì)應(yīng)的4個(gè)字符,并將其在屏幕上顯示出來(lái)。要想在屏幕上顯示一個(gè)十六進(jìn)制數(shù),關(guān)鍵是將各位十六進(jìn)制數(shù)轉(zhuǎn)換成對(duì)應(yīng)的ASCII碼。為此,我們?cè)诔绦虻臄?shù)據(jù)段建立了一個(gè)字節(jié)表格ASC,其中保存了0~9、A~F的ASCII碼。在代碼段,編輯ppt首先將表格的首地址存入BX,將要顯示的十六進(jìn)制數(shù)值送入DX,并在CX中設(shè)置循環(huán)次數(shù)4。接下來(lái)通過(guò)循環(huán)移位操作,將各位十六進(jìn)制數(shù)值(即相對(duì)于首地址偏移量)存入AL。最后,根據(jù)AL和BX的內(nèi)容,使用換碼指令將其對(duì)應(yīng)的ASCII碼送入AL,并在屏幕上顯示出來(lái)。編輯ppt【源程序】DSEGSEGMENT;數(shù)據(jù)段,給變量指定數(shù)據(jù),分配存儲(chǔ)空間
ASCDB30H,31H,32H,33H,34H,35H,36H,37H,38H,39HDB41H,42H,43H,44H,45H,46HDSEGENDSSSEGSEGMENTSTACK;堆棧段
DB100DUP(?)SSEGENDS編輯pptCSEGSEGMENT ;代碼段
ASSUMECS:CSEG,DS:DSEG,SS:SSEGSTART:MOVAX,DSEG ;給數(shù)據(jù)段寄存器裝初值
MOVDS,AX LEABX,ASC ;將ASC表格的首地址放入BX MOVDX,1AB3H;將一個(gè)十六進(jìn)制數(shù)放入DX MOVCX,4 ;將循環(huán)計(jì)數(shù)值存入CX編輯pptLOP:PUSHCX ;執(zhí)行入棧指令,保存CX中的數(shù)據(jù)
MOVCL,4 ;指定循環(huán)左移的位數(shù)
ROLDX,CL ;將十六進(jìn)制數(shù)循環(huán)左移4位,將
;DX中的高4位移至低4位
POPCX ;執(zhí)行出棧指令,恢復(fù)CX原來(lái)的內(nèi)容
MOVAL,DL ;將十六進(jìn)制數(shù)的低8位存入AL ANDAL,0FH ;清除AL中高4位
XLAT;執(zhí)行換碼指令,將對(duì)應(yīng)數(shù)值的ASCII碼送入AL MOVDL,AL ;DOS功能調(diào)用,將DL中保存的字符
;在屏幕上顯示
MOVAH,02H INT21H LOOPLOP ;執(zhí)行循環(huán)編輯ppt MOVAH,4CH;系統(tǒng)功能調(diào)用,結(jié)束程序返回DOS INT21HCSEGENDSENDSTART編輯ppt3.3算術(shù)運(yùn)算與邏輯運(yùn)算類指令算術(shù)運(yùn)算指令也是程序中經(jīng)常使用的一組指令,它包括對(duì)二進(jìn)制數(shù)或十進(jìn)制數(shù)的加、減、乘、除等運(yùn)算指令,可以對(duì)字或字節(jié)進(jìn)行運(yùn)算。所有的算術(shù)運(yùn)算指令都會(huì)影響到標(biāo)志位。邏輯運(yùn)算指令也是經(jīng)常使用的一組重要指令,它包括邏輯與、邏輯或、邏輯非和異或指令等。移位指令包括邏輯移位指令、算術(shù)移位指令和循環(huán)移位指令等。編輯ppt3.3.1加法指令編輯ppt1.不帶進(jìn)位的加法指令格式:ADDDST,SRC功能:將目的操作數(shù)和源操作數(shù)相加,運(yùn)算結(jié)果送回目的操作數(shù)。編輯ppt注意:源操作數(shù)和目的操作數(shù)不允許同時(shí)為存儲(chǔ)器。立即數(shù)只允許作為源操作數(shù)。不允許使用段寄存器。受影響的標(biāo)志位有:OF、SF、ZF、AF、PF和CF。編輯ppt2.帶進(jìn)位的加法指令格式:ADCDST,SRC功能:將目的操作數(shù)和源操作數(shù)相加,再加上進(jìn)位標(biāo)志位CF的值,運(yùn)算結(jié)果送回目的操作數(shù)。注意:與ADD指令類似,受影響的標(biāo)志位有:OF、SF、ZF、AF、PF和CF。ADC指令主要用于多字節(jié)的加法運(yùn)算,通過(guò)ADC指令可以處理低字節(jié)產(chǎn)生的進(jìn)位。編輯ppt3.加1指令格式:INCOPR功能:將操作數(shù)加1,再送回操作數(shù)。INC指令常用于對(duì)地址指針和計(jì)數(shù)器的修改。編輯ppt注意:操作數(shù)可以為寄存器或存儲(chǔ)器,例如:
INCBYTEPTR[BX]。不允許使用段寄存器。受影響的標(biāo)志位有:OF、SF、ZF、AF、PF,不影響CF。編輯ppt【例3-18】設(shè)兩個(gè)四字節(jié)的數(shù)(DX,CX)=12345678H,(BX,AX)=9ABCDEF0H,它們相加的指令序列:
ADDCX,AXADCDX,BX編輯pptSF=0:最高位為0;ZF=0:結(jié)果不為0;CF=1:最高位產(chǎn)生進(jìn)位;AF=0;低4位沒(méi)有向高4位產(chǎn)生進(jìn)位;PF=0:低8位中1的個(gè)數(shù)為奇數(shù)個(gè);OF=0:未產(chǎn)生溢出。編輯pptSF=1:最高位為1;ZF=0:結(jié)果不為0;CF=0:最高位沒(méi)有產(chǎn)生進(jìn)位;AF=1;低4位向高4位產(chǎn)生進(jìn)位;PF=0:低8位中1的個(gè)數(shù)為奇數(shù)個(gè);OF=0:未產(chǎn)生溢出。編輯ppt3.3.2減法指令
編輯ppt1.不帶借位的減法指令格式:SUBDST,SRC功能:目的操作數(shù)減去源操作數(shù),結(jié)果送回目的操作數(shù)。與ADD類似。編輯ppt2.帶借位的減法指令格式:SBBDST,SRC功能:目的操作數(shù)減去源操作數(shù),再減去CF的值,結(jié)果送回目的操作數(shù)。與ADC類似。SBB指令主要用于多字節(jié)的減法運(yùn)算,通過(guò)SBB指令可以處理低字節(jié)產(chǎn)生的借位。編輯ppt3.減1指令格式:DECOPR功能:將操作數(shù)減1,再送回操作數(shù)。與INC類似。DEC指令常用于對(duì)地址指針和計(jì)數(shù)器的修改。編輯ppt4.求補(bǔ)指令格式:NEGOPR功能:對(duì)操作數(shù)取補(bǔ),即各位取反后末位加1,結(jié)果送回操作數(shù)。受影響的標(biāo)志位有:OF、SF、ZF、AF、PF和CF。編輯ppt5.比較指令格式:CMPOPR1,OPR2功能:操作數(shù)1減去操作數(shù)2,結(jié)果不送回操作數(shù)。受影響的標(biāo)志位有:OF、SF、ZF、AF、PF和CF,對(duì)標(biāo)志位的影響如表3-2所示。編輯ppt注意考慮:1、A=127,B=-50時(shí)A>B的情況;2、A=-50,B=127時(shí)A<B的情況;編輯ppt【例3-19】已知三個(gè)四字節(jié)的數(shù)A、B和C,分別存放在地址X、Y、Z開(kāi)始的存儲(chǔ)單元中,編寫實(shí)現(xiàn)A+B-C的指令序列,并將結(jié)果存在地址W開(kāi)始的存儲(chǔ)單元中。編輯ppt指令序列為:MOVAX,X ;取被加數(shù)AMOVDX,X+2ADDAX,Y ;計(jì)算(A+B)ADCDX,Y+2SUBAX,Z ;計(jì)算(A+B-C)SBBDX,Z+2MOVW,AX ;結(jié)果存入W開(kāi)始的內(nèi)存單元中MOVW+2,DX編輯ppt3.3.3乘法指令
1.無(wú)符號(hào)數(shù)乘法指令2.帶符號(hào)數(shù)乘法指令編輯ppt1.無(wú)符號(hào)數(shù)乘法指令格式:MULSRC功能:如果SRC是字節(jié)型操作數(shù),則將AL中的數(shù)與SRC相乘的結(jié)果送入AX中;如果SRC是字型操作數(shù),則將AX中的數(shù)與SRC相乘的結(jié)果分別送入DX和AX中。
編輯ppt2.帶符號(hào)數(shù)乘法指令格式:IMULSRC功能:與MUL指令相同,不同之處在于,IMUL指令中的SRC為帶符號(hào)操作數(shù),得到的乘積也為帶符號(hào)數(shù)。編輯ppt注意:不允許使用立即數(shù)作為操作數(shù)。乘法指令只影響標(biāo)志位CF和OF,其他標(biāo)志位無(wú)定義。如果MUL指令執(zhí)行后,高半部分(即字節(jié)型操作數(shù)相乘的AH或字型操作數(shù)相乘的DX中的內(nèi)容)為0,則CF=OF=0;否則,CF=OF=1。如果IMUL指令執(zhí)行后,高半部分是低半部分的符號(hào)擴(kuò)展,則CF=OF=0;否則,CF=OF=1。編輯ppt【例3-20】已知(AL)=0B4H,(BL)=11H,執(zhí)行指令MULBL和IMULBL后,標(biāo)志位的值。(AL)=0B4H為無(wú)符號(hào)數(shù)時(shí),數(shù)值為180D,為帶符號(hào)數(shù)時(shí),數(shù)值為-76D。(BL)=11H為無(wú)符號(hào)數(shù)時(shí),數(shù)值為17D,為帶符號(hào)數(shù)時(shí),數(shù)值為+17D。執(zhí)行MUL指令后,(AX)=0BF4H=3060D,CF=OF=1。執(zhí)行IMUL指令后,(AX)=0FAF4H=-050CH=-1292D,CF=OF=1。編輯ppt3.3.4除法指令
1.無(wú)符號(hào)數(shù)除法指令DIV2.帶符號(hào)數(shù)除法指令I(lǐng)DIV編輯ppt1.無(wú)符號(hào)數(shù)除法指令格式:DIVSRC功能:如果SRC是字節(jié)型操作數(shù),則用AX中的數(shù)除以SRC,得到的商和余數(shù)分別送入AL和AH中;如果SRC是字型操作數(shù),則用DX和AX中的數(shù)除以SRC,得到的商和余數(shù)分別送入AX和DX中。編輯ppt2.帶符號(hào)數(shù)除法指令格式:IDIVSRC功能:與DIV指令相同,不同之處在于,IDIV指令中的SRC為帶符號(hào)操作數(shù),得到的商和余數(shù)也為帶符號(hào)數(shù)。編輯ppt注意:不允許使用立即數(shù)作為操作數(shù)。除法指令對(duì)所有標(biāo)志位均無(wú)定義。如果SRC是字節(jié)型操作數(shù),那么被除數(shù)必須是16位二進(jìn)制數(shù);如果SRC是字型操作數(shù),那么被除數(shù)必須是32位二進(jìn)制數(shù)。當(dāng)被除數(shù)位數(shù)不夠時(shí),則需要用符號(hào)擴(kuò)展的方法將其擴(kuò)展到所需要的位數(shù)。編輯ppt3.符號(hào)擴(kuò)展指令(1)字節(jié)轉(zhuǎn)換為字指令(2)字轉(zhuǎn)換為雙字指令編輯ppt(1)字節(jié)轉(zhuǎn)換為字指令格式:CBW功能:將AL中數(shù)據(jù)的符號(hào)位擴(kuò)展到AH中。如果AL的最高有效位為0,則(AH)=00H;如果AL的最高有效位為1,則(AH)=0FFH。編輯ppt(2)字轉(zhuǎn)換為雙字指令格式:CWD功能:將AX中數(shù)據(jù)的符號(hào)位擴(kuò)展到DX中。如果AX的最高有效位為0,則(DX)=0000H;如果AX的最高有效位為1,則(DX)=0FFFFH。編輯ppt注意:符號(hào)擴(kuò)展指令是無(wú)操作數(shù)指令。符號(hào)擴(kuò)展指令不影響標(biāo)志位。編輯ppt【例3-21】編寫計(jì)算(﹣112)×9÷30的指令序列。指令序列如下:MOVAL,90H ;(﹣112)->(AL)MOVBL,9 ;9->(BL)IMULBL ;(﹣112)×9->(AX)MOVBL,1EH ;30->(BL)IDIVBL運(yùn)算結(jié)果:商(AL)=DFH=﹣33D,余數(shù)(AH)=EEH=﹣18D。編輯ppt3.3.5十進(jìn)制調(diào)整指令十進(jìn)制調(diào)整指令分為壓縮的BCD碼調(diào)整指令和非壓縮的BCD碼調(diào)整指令。其中,壓縮的BCD碼指用4位二進(jìn)制數(shù)表示一位十進(jìn)制數(shù),即用一個(gè)字節(jié)表示兩位十進(jìn)制。非壓縮的BCD碼指用8位二進(jìn)制數(shù)表示一位十進(jìn)制數(shù)。編輯ppt1.壓縮的BCD碼調(diào)整指令
(1)壓縮的BCD碼加法調(diào)整指令(2)壓縮的BCD碼減法調(diào)整指令編輯ppt(1)壓縮的BCD碼加法調(diào)整指令格式:DAA功能:兩個(gè)壓縮的BCD碼執(zhí)行加法指令后,將AL中的和調(diào)整為壓縮BCD碼。如果AL的低4位大于9或AF=1,則(AL)←(AL)+06H,AF←1;如果AL的高4位大于9或CF=1,則(AL)←(AL)+60H,CF←1。編輯ppt【例3-22】用十進(jìn)制計(jì)算29+88的程序段如下:MOVAL,29HMOVBL,88HADDAL,BLDAA編輯ppt(2)壓縮的BCD碼減法調(diào)整指令格式:DAS功能:兩個(gè)壓縮的BCD碼執(zhí)行減法指令后,將AL中的差調(diào)整為壓縮BCD碼。如果AL的低4位大于9或AF=1,則(AL)←(AL)-06H,AF←1;如果AL的高4位大于9或CF=1,則(AL)←(AL)-60H,CF←1。編輯ppt2.非壓縮的BCD碼調(diào)整指令(1)非壓縮的BCD碼加法調(diào)整指令(2)非壓縮的BCD碼減法調(diào)整指令(3)非壓縮的BCD碼乘法調(diào)整指令(4)非壓縮的BCD碼除法調(diào)整指令編輯ppt(1)非壓縮的BCD碼加法調(diào)整指令格式:AAA功能:兩個(gè)非壓縮的BCD碼執(zhí)行加法指令后,將AL中的和調(diào)整為非壓縮BCD碼。如果AL的低4位大于9或AF=1,則(AH)←(AH)+01H,(AL)←(AL)+06H,清除AL的高4位,AF←1,CF←1;否則,清除AL的高4位,AF←0,CF←0。編輯ppt【例3-23】用十進(jìn)制計(jì)算5+6的程序段如下:MOVAX,05HMOVBL,06HADDAL,BLAAA編輯ppt(2)非壓縮的BCD碼減法調(diào)整指令格式:AAS功能:兩個(gè)非壓縮的BCD碼執(zhí)行減法指令后,將AL中的差調(diào)整為非壓縮BCD碼。如果AL的低4位大于9或AF=1,則(AH)←(AH)-01H,(AL)←(AL)-06H,清除AL的高4位,AF←1,CF←1;否則,清除AL的高4位,AF←0,CF←0。編輯ppt【例3-24】用十進(jìn)制計(jì)算15-6的程序段如下:MOVAX,0105H ;非壓縮的BCD碼15送入AXMOVBL,06H ;非壓縮的BCD碼6送入BLSUBAL,BLAAS編輯ppt(3)非壓縮的BCD碼乘法調(diào)整指令格式:AAM功能:兩個(gè)非壓縮的BCD碼執(zhí)行MUL指令后,將AX中的乘積調(diào)整為非壓縮BCD碼。(AH)←(AL)/0AH,AL←(AL)%0AH。編輯ppt【例3-25】用十進(jìn)制計(jì)算3×6的程序段如下:MOVAL,03HMOVBL,06HMULBLAAM編輯ppt(4)非壓縮的BCD碼除法調(diào)整指令格式:AAD功能:執(zhí)行除法指令前,將AL(個(gè)位數(shù))和AH(十位數(shù))中的非壓縮BCD碼調(diào)整為二進(jìn)制數(shù),并存放在AL中。(AL)←(AH)×0AH+(AL),(AH)←0。編輯ppt【例3-26】用十進(jìn)制計(jì)算31÷7的程序段如下:MOVAX,0301HMOVBL,07HAADDIVBL編輯ppt3.3.6邏輯運(yùn)算指令
編輯ppt1.邏輯與運(yùn)算指令格式:ANDDST,SRC功能:對(duì)兩個(gè)操作數(shù)按位進(jìn)行邏輯與運(yùn)算,結(jié)果送入目的操作數(shù)。編輯ppt2.邏輯或運(yùn)算指令格式:ORDST,SRC功能:對(duì)兩個(gè)操作數(shù)按位進(jìn)行邏輯或運(yùn)算,結(jié)果送入目的操作數(shù)。
編輯ppt3.邏輯非運(yùn)算指令格式:NOTOPR功能:將操作數(shù)按位取反,結(jié)果送回操作數(shù)。編輯ppt4.邏輯異或運(yùn)算指令格式:XORDST,SRC功能:對(duì)兩個(gè)操作數(shù)按位進(jìn)行異或運(yùn)算,結(jié)果送入目的操作數(shù)。異或運(yùn)算又稱為“模2加”,即以2為模的加法運(yùn)算。編輯ppt5.測(cè)試指令格式:TESTOPR1,OPR2功能:對(duì)兩個(gè)操作數(shù)按位進(jìn)行邏輯與運(yùn)算,結(jié)果不保存,只反映在標(biāo)志位上。編輯ppt注意:NOT指令不允許使用立即數(shù)作為操作數(shù),其他指令的目的操作數(shù)不允許使用立即數(shù),兩個(gè)操作數(shù)不允許同時(shí)是存儲(chǔ)器。NOT指令不影響標(biāo)志位,其他指令影響到的標(biāo)志位有:CF、OF、PF、SF和ZF,對(duì)AF無(wú)定義。編輯ppt3.3.7移位指令編輯ppt1.算術(shù)左移指令格式:SALOPR,CNT功能:將操作數(shù)向左移若干位,每次移動(dòng)時(shí),最低位補(bǔ)0,最高位移入CF中,如圖3-14所示。其中,CNT決定左移的位數(shù)。當(dāng)左移一位時(shí),使用指令“SALOPR,1”;當(dāng)左移的位數(shù)大于1時(shí),先將移動(dòng)的位數(shù)送入CL,再使用指令“SALOPR,CL”即可。編輯ppt編輯ppt【例3-27】將十六進(jìn)制數(shù)0A5H算術(shù)左移1位的程序段如下:
MOVDL,0A5SALDL,
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025西藏昌都瀾滄江投資有限責(zé)任公司招聘1人考試重點(diǎn)題庫(kù)及答案解析
- 房屋買斷權(quán)協(xié)議書
- 廢品轉(zhuǎn)讓協(xié)議書
- 工廠投資合同范本
- 床子出租協(xié)議書
- 學(xué)生拜師協(xié)議書
- 延期留用協(xié)議書
- 小店股權(quán)協(xié)議書
- 誤傷同伴的協(xié)議書
- 項(xiàng)目打印機(jī)合同范本
- 2025年四級(jí)營(yíng)養(yǎng)師考試題庫(kù)(含答案)
- 2025團(tuán)員教育評(píng)議大會(huì)
- 服裝店入股協(xié)議合同
- 汽車金融公司培訓(xùn)
- (正式版)JBT 9229-2024 剪叉式升降工作平臺(tái)
- 公司委托法人收款到個(gè)人賬戶范本
- 《楓丹白露宮苑景觀分析》課件
- 中國(guó)石油大學(xué)(華東)自動(dòng)控制課程設(shè)計(jì) 雙容水箱系統(tǒng)的建模、仿真于控制-2
- 潘謝礦區(qū)西淝河、泥河、濟(jì)河、港河水體下安全開(kāi)采可行性論證報(bào)告
- 創(chuàng)業(yè)人生(上海大學(xué))【超星爾雅學(xué)習(xí)通】章節(jié)答案
- GB/T 4957-2003非磁性基體金屬上非導(dǎo)電覆蓋層覆蓋層厚度測(cè)量渦流法
評(píng)論
0/150
提交評(píng)論