版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第3章80X86/Pentuim指令系統(tǒng)3-180X86/Pentium指令格式和尋址方式3-28086/8088指令系統(tǒng)3-380X86/Pentium指令系統(tǒng)第3章80X86/Pentuim指令系統(tǒng)3-180X1指令是計算機執(zhí)行某種操作的命令。計算機為了完成不同的功能而要執(zhí)行不同的指令。一臺計算機能夠識別和執(zhí)行的全部指令稱為該計算機的指令系統(tǒng)或指令集。不同的微處理器有不同的指令系統(tǒng),80X86/Pentium系列微處理器的指令集是在8086/8088CPU指令系統(tǒng)上發(fā)展起來的。第3章80X86/Pentuim指令系統(tǒng)指令是計算機執(zhí)行某種操作的命令。計算機為了完成不同的功能而要2
指令的組成:操作碼字段--標明計算機要執(zhí)行什么操作操作數(shù)字段--指出指令在執(zhí)行過程中所需要的操作數(shù)(值為多少或者放在什么地方),以及操作結(jié)果送到哪里3-180X86/Pentium指令格式和尋址方式
指令的組成:3-180X86/Pentium指令格式3指令的一般格式操作數(shù)字段可以有一個,二個或三個操作數(shù),通常稱為“一地址”,“二地址”或“三地址”指令操作碼操作數(shù)。。。操作數(shù)指令的一般格式操作數(shù)字段可以有一個,二個或三個操作數(shù),通常稱4示例加1指令I(lǐng)NCAX
只需要指出加1的操作數(shù),它是“一地址”指令。
雙操作數(shù)指令A(yù)DDAX,BX
大多數(shù)運算型指令都是雙操作數(shù)指令,對這種指令,有的機器(大中型)使用“三地址”指令:除給出參加運算的兩個操作數(shù)外,還要指出運算結(jié)果的存放地址示例加1指令I(lǐng)NCAX5現(xiàn)代微型計算機中多采用二地址指令,兩個操作數(shù)分別稱為“源操作數(shù)”和“目的操作數(shù)”,指令執(zhí)行后,把運算結(jié)果放到目的操作數(shù)的地址之中。指令的操作碼在機器中的表示比較簡單,只要對每一種操作指定相應(yīng)的二進制代碼即可;而指令的操作數(shù)字段的情形就比較復(fù)雜現(xiàn)代微型計算機中多采用二地址指令,兩個操作數(shù)分別稱為“源操作6尋址方式指令通常應(yīng)提供的信息1.做什么操作2.操作數(shù)從哪里來3.操作結(jié)果放在哪里4.對于調(diào)用和轉(zhuǎn)移指令,還要涉及轉(zhuǎn)移或調(diào)用地址的提供方式尋址方式指令通常應(yīng)提供的信息7
尋址方式
操作數(shù)類型:(1)立即數(shù)立即數(shù)是作為指令代碼的一部分出現(xiàn)在指令中。(2)寄存器操作數(shù)寄存器操作數(shù)是把操作數(shù)存放在寄存器中。尋址方式操作數(shù)類型:8(3)存儲器操作數(shù)
存儲器操作數(shù)是把操作數(shù)放在存儲器中。存儲器操作數(shù)所在的存儲器地址應(yīng)該是物理地址,即由段地址和偏移量(把相對于段首地址的偏移量稱為有效地址EA)所決定的。在匯編指令中,通常只給出有效地址EA(以各種尋址方式給出),而段地址(在段寄存器中)是通過隱含方式使用的。(3)存儲器操作數(shù)98086/8088指令系統(tǒng)中對段地址有個基本規(guī)定:在正常情況下,由尋址方式中有效地址規(guī)定的基地址寄存器來確定段寄存器,即只要尋址方式中出現(xiàn)BP寄存器作為基地址,段寄存器一定采用堆棧段SS,其余的情況都采用數(shù)據(jù)段DS。8086/8088指令系統(tǒng)中對段地址有個基本規(guī)定:10段超越:指令中的操作數(shù)也可以不在基本規(guī)定的段區(qū)內(nèi),必須在指令中指定段寄存器,這就是段超越。例如:MOVAL,[2000H]MOVAL,ES:[2000H]段超越:118086的尋址方式1、固定尋址2、立即數(shù)尋址3、寄存器尋址直接尋址4、存儲器尋址間接尋址5、其它尋址基址尋址變址尋址基址+變址尋址8086的尋址方式1、固定尋址基址尋址變址尋址基址+變址尋121、固定尋址又稱隱含尋址
在8086/8088系統(tǒng)中,有一部分指令的操作數(shù)沒有給出任何說明,但計算機根據(jù)操作碼即可確定要操作的對象。例如:AAA;隱含對AL操作1、固定尋址又稱隱含尋址132、立即數(shù)尋址方式立即數(shù)尋址方式尋找的操作數(shù)緊跟在指令操作碼之后。CPU直接從指令隊列中取得立即數(shù),不必執(zhí)行總線周期。例:MOVAL,04HMOVAX,1234HMOVAX,0004H
2、立即數(shù)尋址方式立即數(shù)尋址方式尋找的操作數(shù)緊跟在指令14目的
源exampleMOVAL,80H;低地址存儲器
AXMOVAX,3064H;
ADDAL,20H;ADDAX,1090H;高地址OP6430目的源example15注意:8位或16位只能是整數(shù)類型的源操作數(shù)主要用來給存儲器或寄存器賦初值速度快注意:8位或16位163、寄存器尋址方式寄存器尋址是指尋找的操作數(shù)在某個通用寄存器中(8位或16位)。不需使用總線周期。
例MOVAX,BXMOVCL,AH3、寄存器尋址方式寄存器尋址是指尋找的操作數(shù)在某個通用寄存器174、存儲器尋址方式當EU需要讀/寫位于存儲器的操作數(shù)時:①根據(jù)尋址方式,由EU計算出操作數(shù)地址的偏移量,即有效地址EA.②將EA送至BIU單元,同時請求BIU執(zhí)行一個總線周期。③BIU將某個段寄存器的內(nèi)容左移4位,加上EU送來的EA,得到20位的物理地址PA.④執(zhí)行總線周期,讀/寫指令所需的操作數(shù)。4、存儲器尋址方式當EU需要讀/寫位于存儲器的操作數(shù)時:184-1、直接尋址直接尋址方式是指尋找的操作數(shù)的地址(EA)在指令中直接給出。例:MOVAX,[2000H]MOVAL,[2000H]段超越例:MOVAX,ES:[2001H]4-1、直接尋址直接尋址方式是指尋找的操作數(shù)的地址(EA)在19
例1.MOVAX,[2000H];如(DS)=3000H,則指令的執(zhí)行情況如下圖所示:
20
代存儲器碼段
數(shù)據(jù)3000H段
執(zhí)行結(jié)果:(AX)=3050HOP0020503032000H代存儲器OP0214-2、間接尋址要尋址的操作數(shù)在存儲器中,它的地址(EA/16位偏移量)在寄存器中。(1)基址尋址:BX、BP+位移量(2)變址尋址:SI、DI+位移量(3)基址+變址:BX、BP+SI、DI+位移量4-2、間接尋址要尋址的操作數(shù)在存儲器中,它的地址(EA/122例:設(shè)DS=1200H,BX=05A6H,SS=5000H,BP=40A0H,SI=2000H,DI=3000H,位移量disp=1618H試判斷下列指令的尋址方式,并求出在各種尋址方式下的EA和PA,并說明指令執(zhí)行的結(jié)果。例:設(shè)DS=1200H,BX=05A6H,23
設(shè)DS=1200H,BX=05A6H,SS=5000H,
BP=40A0H,SI=2000H,DI=3000H,
位移量disp=1618H
MOVAX,[0618H]EA=0618HPA=DSx16+EA=12000H+0618H=12618H執(zhí)行結(jié)果:將數(shù)據(jù)段12618H和12619H兩單元的內(nèi)容取出送至AX。
設(shè)DS=1200H,BX=05A6H,S24
設(shè)DS=1200H,BX=05A6H,SS=5000H,
BP=40A0H,SI=2000H,DI=3000H,
位移量disp=1618H
MOVAX,[BX]EA=05A6HPA=DSx16+EA=12000H+05A6H=125A6H執(zhí)行結(jié)果:將數(shù)據(jù)段125A6H和125A7H兩單元的內(nèi)容取出送至AX。
設(shè)DS=1200H,BX=05A6H,S25
設(shè)DS=1200H,BX=05A6H,SS=5000H,
BP=40A0H,SI=2000H,DI=3000H,
位移量disp=1618H
MOVAX,[BP]EA=40A0HPA=SSx16+EA=50000H+40A0H=540A0H執(zhí)行結(jié)果:將堆棧段540A0H和540A1H兩單元的內(nèi)容取出送至AX。
設(shè)DS=1200H,BX=05A6H,S26
設(shè)DS=1200H,BX=05A6H,SS=5000H,
BP=40A0H,SI=2000H,DI=3000H,
位移量disp=1618H
MOVAX,[DI]EA=3000HPA=DSx16+EA=12000H+3000H=15000H執(zhí)行結(jié)果:將數(shù)據(jù)段15000H和15001H兩單元的內(nèi)容取出送至AX。
設(shè)DS=1200H,BX=05A6H,S27
設(shè)DS=1200H,BX=05A6H,SS=5000H,
BP=40A0H,SI=2000H,DI=3000H,
位移量disp=1618H
MOVAX,[BX+DI]EA=BX+DI=05A6H+3000H=35A6HPA=DSx16+EA=12000H+35A6H=155A6H執(zhí)行結(jié)果:將數(shù)據(jù)段155A6H和155A7H兩單元的內(nèi)容取出送至AX。
設(shè)DS=1200H,BX=05A6H,S28
設(shè)DS=1200H,BX=05A6H,SS=5000H,
BP=40A0H,SI=2000H,DI=3000H,
位移量disp=1618H
MOVAX,[BP+SI+disp]EA=BP+SI+disp=40A0H+2000H+1618H=76B8HPA=SSx16+EA=50000H+76B8H=576B8H執(zhí)行結(jié)果:將堆棧段576B8H和576B9H兩單元的內(nèi)容取出送至AX。
設(shè)DS=1200H,BX=05A6H,S295、其它尋址方式串操作指令尋址方式I/O端口尋址方式轉(zhuǎn)移類指令尋址方式5、其它尋址方式串操作指令尋址方式30串操作指令尋址方式串操作指令使用隱含變址寄存器尋址。源串操作數(shù)用SI變址寄存器,段基址由數(shù)據(jù)段寄存器DS決定。目的串操作數(shù)用DI變址寄存器,段基址由附加段寄存器ES決定。在字符串操作指令中,自動增減SI和DI的內(nèi)容。串操作指令尋址方式串操作指令使用隱含變址寄存器尋址。31I/O端口尋址方式
在尋址外設(shè)端口時,使用端口尋址。(1)直接端口尋址:端口地址為8位立即數(shù)(0~255)。(2)間接端口尋址:端口地址放在DX寄存器中(16位數(shù),0~65535)。OUT21H,AL;AL內(nèi)容送21H端口輸出OUTDX,AL;I/O端口尋址方式
在尋址外設(shè)端口時,使用端口尋址。32轉(zhuǎn)移類指令尋址方式條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令和調(diào)用指令轉(zhuǎn)移類指令尋址方式條件轉(zhuǎn)移指令333-28086/8088指令系統(tǒng)
數(shù)據(jù)傳送指令
算術(shù)運算指令
邏輯運算和移位指令
字符串處理指令
控制轉(zhuǎn)移指令
處理器控制指令3-28086/8088指令系統(tǒng)數(shù)據(jù)傳送指令34關(guān)注以下三個方面:功能FR結(jié)果關(guān)注以下三個方面:35數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令MOVPUSHPOPXCHGXLAT字或字節(jié)的傳送入棧指令出棧指令交換字或字節(jié)表轉(zhuǎn)換輸入輸出指令I(lǐng)NOUT輸入輸出地址目標傳送指令LEALDSLES裝入有效地址裝入數(shù)據(jù)段寄存器裝入附加段寄存器標志傳送指令LAHFSAHFPUSHFPOPF標志寄存器低字節(jié)裝入AHAH內(nèi)容裝入標志寄存器低字節(jié)標志寄存器入棧指令出棧,并送入標志寄存器MOVPUSHPOPXCHGXLAFINOUTLEALDSLESLAHFSAHFPUSHFPOPF數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令MOV字或字節(jié)的傳送輸入輸出指36數(shù)據(jù)傳送類:寄存器與寄存器、寄存器與存儲器、寄存器與I/O間字節(jié)、字的傳送。
除SAHF和POPF外,其它傳送類指令都不影響FR.數(shù)據(jù)傳送類:37指令格式:MOV目的,源
指令功能:將源操作數(shù)傳送至目的操作數(shù)CSDS、SS、ES通用寄存器AX、BX、CX、DX、SI、DI、BP、SP立即數(shù)存儲器數(shù)MOV指令指令格式:MOV目的,源
指令功能:將源操作數(shù)傳送38注意:兩操作數(shù),必用1個寄存器,不能同為存儲單元。不能用CS和IP作目的操作數(shù)。不允許段寄存器之間直接數(shù)據(jù)傳送。不允許立即數(shù)作目的操作數(shù)。不能向段寄存器送立即數(shù)。注意:兩操作數(shù),必用1個寄存器,不能同為存儲單元。39例:MOVAX,0MOVAX,BXMOVAX,[SI]MOVSI,ES:[BP]例:MOVAX,040把存儲單元中ALFA1單元的內(nèi)容送ALFA2單元中,ALFA1和ALFA2是同一數(shù)據(jù)段的兩個變量。MOVAL,ALFA1MOVALFA2,AL把存儲單元中ALFA1單元的內(nèi)容送ALFA2單元中,ALF41練習1用MOV指令實現(xiàn)兩內(nèi)存字節(jié)單元內(nèi)容的交換2035H2045H01H….02H練習1用MOV指令實現(xiàn)兩內(nèi)存字節(jié)單元內(nèi)容的交換01H42用直接尋址方式實現(xiàn)MOVBL,[2035H];MOVCL,[2045H];MOV[2045H],BL;MOV[2035H],CL;HLT用直接尋址方式實現(xiàn)MOVBL,[20343用寄存器間接尋址方式實現(xiàn)
MOVSI,2035H;MOVDI,2045H;MOVAH,[SI];MOVAL,[DI];MOV[2035H],AL;MOV[2045H],AH;用寄存器間接尋址方式實現(xiàn)MOVSI,44入棧出棧指令入棧指令格式:PUSH源指令功能:將源操作數(shù)推入堆棧源:通用寄存器、段寄存器、存儲器*非立即數(shù)出棧指令格式:POP目的指令功能:目的:通用寄存器、段寄存器(非CS)、存儲器入棧出棧指令入棧出棧45堆棧是在存儲器(內(nèi)存)中開辟出一個特定的存儲區(qū)位于堆棧段中,作為堆棧操作存入數(shù)據(jù)或地址和取出數(shù)據(jù)或地址的存儲區(qū)。堆棧是以“后進先出”的原則進行數(shù)據(jù)操作的。堆棧是在存儲器(內(nèi)存)中開辟出一個特定的存儲區(qū)位于堆棧段中,46堆棧操作遵循以下的原則:(1)堆棧的存取每次必須是一個字(16位)(2)向堆棧中存放數(shù)據(jù)時,總是從高地址向低地址方向增長,而不像內(nèi)存中的其他段,是從低地址開始向高地址存放數(shù)據(jù),從堆棧中取數(shù)據(jù)時正好相反。(3)堆棧指令中的操作數(shù)只能是寄存器或存儲器操作數(shù),不能是立即數(shù)。(4)對堆棧的操作遵循“后進先出(LIFO)”的原則,最后壓入堆棧的數(shù)據(jù)會最先被彈出。(5)堆棧段在內(nèi)存中的位置由SS決定,堆棧指針SP總是指向棧頂即SP的內(nèi)容等于當前棧頂?shù)钠频刂?,所謂棧頂是指當前可用堆棧操作指令進行數(shù)據(jù)交換的存儲單元。堆棧操作遵循以下的原則:473412入棧PUSHAXAX12MSPSP=SP-2低高棧底34出棧POPBXBX1234SPSP=SP+23412入棧12MSPSP=SP-2低高棧底34出棧123448
壓入標志:PUSHF
彈出標志:POPF
堆棧操作對標志位的影響只有POPF指令影響所有的標志位,其它堆棧指令均不影響任何標志位。
壓入標志:PUSHF
彈出標志:POPF
堆棧操作49XCHG交換指令指令格式:XCHG目的,源指令功能:交換字或字節(jié)操作數(shù):寄存器間、寄存器和存儲器間*段寄存器不可*不影響標志位*存儲器不能直接交換XCHG交換指令指令格式:XCHG目的,源50例:實現(xiàn)存儲器單元BET1和BET2間的內(nèi)容交換
MOVAX,BET1XCHGAX,BET2MOVBET1,AXPUSHBET1PUSHBET2POPBET1POPBET2
MOVAX,BET1MOVBX,BET2MOVBET1,BXMOVBET2,AX例:實現(xiàn)存儲器單元BET1和BET2間的內(nèi)容交換51XLAT表轉(zhuǎn)換指令指令格式:XLAT轉(zhuǎn)換表指令功能:表轉(zhuǎn)換本指令執(zhí)行前,應(yīng)先將表首地址送入BX中,要換碼的字節(jié)在表中的位移量(據(jù)表首地址的距離)送AL中。結(jié)果:在AL中得到該項的內(nèi)容。本指令不影響標志位。XLAT表轉(zhuǎn)換指令指令格式:XLAT轉(zhuǎn)換表52XLAT表轉(zhuǎn)換指令又稱換碼指令指令格式:XLAT轉(zhuǎn)換表指令功能:表轉(zhuǎn)換完成一個字節(jié)的查表轉(zhuǎn)換。它將數(shù)據(jù)段中偏移地址為BX與AL寄存器之和的存儲器單元的內(nèi)容送入AL寄存器,即:[BX+AL]-AL。使用此指令前,應(yīng)首先在數(shù)據(jù)段中建立一個長度小于256個字節(jié)的表格,表的首地址置于BX中,AL中存放查找對象在表中的下標。指令執(zhí)行后,所查找的對象存于AL中,BX內(nèi)容保持不變。
XLAT表轉(zhuǎn)換指令又稱換碼指令53例:將數(shù)字0~9的BCD碼轉(zhuǎn)換為7段LED顯示器的顯示代碼。40H,79H,24H,30H,19H,12H,02H,78H,00H,18H。將它們依次存放在偏移地址為0800H開始的內(nèi)存區(qū)域。若待轉(zhuǎn)換的BCD碼為0100B,則實現(xiàn)的程序為:MOVBX,0800HMOVAL,4XLAT;AL中位0100B對應(yīng)的7段代碼19H。例:將數(shù)字0~9的BCD碼轉(zhuǎn)換為7段LED顯示器的顯示代碼。54輸入輸出指令I(lǐng)N輸入指令指令格式:INAL,PORTINAX,PORTINAX,DXINAL,DXOUT輸出指令指令格式:OUTPORT,ALOUTPORT,AXOUTDX,ALOUTDX,AX輸入輸出指令I(lǐng)N輸入指令OUT輸出指令55地址目標傳送指令LEA指令格式:LEA目的,源功能:將源操作數(shù)給出的有效地址(EA)傳送到指定的寄存器中。LEA指令處理的是變量地址(偏移量),不是變量的值。地址目標傳送指令LEA56例:
MOVDI,TABLE;將變量TABLE的內(nèi)容傳送至DILEADI,TABLE;將變量TABLE的地址偏移量傳送至DILEADX,[1000H];將1000H傳送至DX例:57LDS指令格式:LDS目的,源功能:將存儲器地址指針所指向的雙字的低地址中的字送到給定的通用寄存器中。把雙字的高地址中的字送到DS寄存器中。LDS58LES指令格式:LES目的,源功能:將存儲器地址指針所指向的雙字的低地址中的字送到給定的通用寄存器中。把雙字的高地址中的字送到ES寄存器中。LES59標志傳送指令LAHF指令格式:LAHF指令功能:PSW(L)送入AHSAHFPUSHF指令格式:PUSHF指令功能:PSW送入棧POPF標志傳送指令LAHF60算術(shù)運算指令加法減法ADDADCINCAAADAA加法帶進位加法增量加法的ASCII調(diào)整加法的十進制調(diào)整SUBSBBDECNEGCMPAASDAS減法帶借位減法減量取負比較減法的ASCII調(diào)整減法的十進制調(diào)整乘法除法MULIMULAAM無符號數(shù)乘法整數(shù)乘法乘法的ASCII調(diào)整DIVIDIVAADCBWCWD無符號除法整數(shù)除法除法的ASCII調(diào)整把字節(jié)轉(zhuǎn)換成字把字轉(zhuǎn)換成字節(jié)加法減法乘法除法算術(shù)運算指令加法減法ADD加法SUB減法乘法除法MUL無符號61算術(shù)運算指令共有20條,除數(shù)據(jù)寬度變換指令CBW,CWD外,其余指令的執(zhí)行結(jié)果都影響標志。算術(shù)運算指令共有20條,除數(shù)據(jù)寬度變換指令CBW,CWD外,62標志寄存器的格式及各位的含義1514131211109876543210OFDFIFTFSFZFAFPFCF狀態(tài)標志方向標志中斷標志跟蹤標志TraceFlag控制標志進位標志奇偶標志半進位標志零標志符號標志溢出標志標志寄存器的格式及各位的含義151413121110987663加法指令格式指令功能備注ADD目的,源目的←源+目的寄存器間寄存器和存儲器間儲器和立即數(shù)間寄存器和立即數(shù)間CF、OF、PF、SF、ZF、AF源和目的不可同時為存儲器,類型必須一致ADC目的,源目的←源+目的+CFINC目的目的←目的+1寄存器、存儲器AF、OF、PF、SF、ZFINCBYTEPTR[BX]存儲器需指定字或字節(jié)AAA調(diào)整非壓縮BCD數(shù)DAA調(diào)整壓縮BCD數(shù)加法指令格式指令功能641.二進制加法和減法指令名稱格式操作
加法ADDDST,SRCDSTSRC+DST帶進位加法ADCDST,SRCDSTSRC+DST+CF減法SUBDST,SRCDSTDST-SRC帶借位減法SBBDST,SRCDSTDST-SRC-CF
所有狀態(tài)標志都受影響1.二進制加法和減法指令65Example編寫實現(xiàn)下列二進制運算的程序段WX+Y+24-Z(X.Y.Z均為字變量)MOVAX,X;ADDAX,Y;ADDAX,24;SUBAX,Z;MOVW,AX;
Example編寫實現(xiàn)下列二進制運算的程序段66Example雙倍精度運算(操作數(shù)的長度為雙字--兩個16位)2000H3000H低16位低16位
高16位高16位
把2000H地址開始的兩個字(低字在前)和3000H地址開始的兩個字相加,和存放在2000H開始處。Example雙倍精度運算(操作數(shù)的長度為雙字-67程序段MOVSI,2000H;取第一個數(shù)的首地址MOVAX,[SI];將第一個數(shù)的低16位送AXMOVDI,3000H;取第二個數(shù)的首地址ADDAX,[DI];第一個數(shù)的低16位和第2個數(shù)的低16位相加.(不加CF,但此條指令的執(zhí)行影響CF)MOV[SI],AX;存低16位相加結(jié)果MOVAX,[SI+2];ADCAX,[DI+2];兩個高16位連同CF(低16位相加形成的)相加.MOV[SI+2],AX;存高16位相加結(jié)果.程序段MOVSI,2000H;取第一個數(shù)的首地址68增量和減量指令I(lǐng)NC/DECINC/DEC指令完成對指定的操作數(shù)加1/減1,然后送回此操作數(shù)。這兩條指令主要用于循環(huán)程序中修改地址指針和循環(huán)次數(shù)等。使用DEC指令時,把操作數(shù)作為一個無符號二進制數(shù)來對待。例:INCCXDEC[BX]增量和減量指令I(lǐng)NC/DEC69減法指令格式指令功能備注SUB目的,源目的←目的-源寄存器間寄存器和存儲器間儲器和立即數(shù)間寄存器和立即數(shù)間CF、OF、PF、SF、ZF、AF源和目的不可同時為存儲器,類型必須一致SBB目的,源目的←目的-源-CFDEC目的目的←目的-1寄存器、存儲器同INC存儲器需指定字或字節(jié)NEG目的目的←0-目的同SUB、SBBCMP目的,源目的-源同SUB、SBB結(jié)果不存AAS調(diào)整非壓縮BCD數(shù)DAS調(diào)整壓縮BCD數(shù)減法指令格式指令功能備70求補指令NEGNEGOPRD功能:對操作數(shù)求補。即用零減去操作數(shù),再把結(jié)果送回操作數(shù)。該指令執(zhí)行的效果是改變操作數(shù)的符號即將正數(shù)變成負數(shù)或?qū)⒇摂?shù)變成正數(shù),但絕對值不變。所以又稱為取負指令。例:NEGALADDAL,100求補指令NEGNEGOPRD71比較指令CMPCMPOPRD1,OPRD2比較指令除了執(zhí)行后不改變源操作數(shù)和目的操作數(shù)外,其余方面和SUB指令相同。即將OPRD1-OPRD2,運算結(jié)果不送回OPRD1,僅僅影響標志位而不改變操作數(shù)本身。參加比較的可以是立即數(shù)、寄存器或存儲器操作數(shù)。比較指令CMPCMPOPRD1,OPRD272乘法指令格式指令功能備注MUL源AX←AL×源(DX,AX)←(AX)×源寄存器存儲器(類型)CF、OF符號擴展判斷IMUL源(帶符號)同上AAM調(diào)整非壓縮BCD數(shù)AH:商AL:余SF、ZF、PF乘法指令格式指令功能備注73除法指令格式指令功能備注DIV源AL←AX/源的商AH←AX/源的余數(shù)AX←(DX、AX)/源的商DX←(DX、AX)/源的余寄存器存儲器(類型)溢出(商大于除數(shù))IDIV源(帶符號)同上溢出符號擴展CBW符號擴展CWD符號擴展AADBCD調(diào)整SF、ZF、PF除法前除法指令格式指令功能74邏輯運算和移位指令邏輯運算NOTANDORXORTEST取反邏輯與邏輯或異或測試算術(shù)邏輯移位SHL/SALSHRSAR邏輯/算術(shù)左移邏輯右移算術(shù)右移循環(huán)移位ROLRORRCLRCR循環(huán)左移循環(huán)右移帶進位位循環(huán)左移帶進位位循環(huán)右移邏輯運算算邏移位循環(huán)移位邏輯運算和移位指令邏輯運算NOT取反算術(shù)邏輯移位SHL/SA75邏輯運算指令格式指令功能備注NOT目的目的←目的寄存器存儲器(類型AND目的,源目的←目的∧源寄存器間寄存器和存儲器間儲器和立即數(shù)間寄存器和立即數(shù)間ZF、SF、PF清CF、OFOR目的,源目的←目的∨源同上XOR目的,源目的←目的∨源TEST目的,源目的∧源邏輯運算指令格式指令功能76算術(shù)邏輯移位和循環(huán)移位指令格式:SAL目的,計數(shù)值(1或CL)(a)MSBLSBCF(c)(e)LSBMSBCF0LSBMSBCF(g)MSBLSBCF0SHLSALROLRCLMSBLSBCF0(b)(d)(f)MSBLSBCFMSBLSBCF(h)LSBMSBCFSHRSARRORRCRCF、OF、SF、ZF、PF算術(shù)邏輯移位和循環(huán)移位指令格式:SAL目的,計數(shù)值(1或77字符串處理指令指令名稱字/字節(jié)操作字節(jié)操作字操作字符串傳送字符串比較字符串掃描字符串裝入字符串存儲MOVS目的,源CMPS目的,源SCAS目的LODS源STOS目的MOVSBCMPSBSCASBLODSBSTOSBMOVSWCMPSWSCASWLODSWSTOSW隱含約定1、源:DS:SI,可段超越2、目的:ES:DI,不可段超越3、SI、DI自動加減14、DF控制方向5、長度存于CX重復(fù)前綴REPREPE/REPZREPNE/REPNZ字符串處理指令指令名稱字/字節(jié)操作字節(jié)操作字操作字符串傳送M78控制轉(zhuǎn)移指令無條件轉(zhuǎn)移和過程調(diào)用條件轉(zhuǎn)移JMPCALLRET無條件轉(zhuǎn)移過程調(diào)用過程返回JZ/JE等10條JA/JNBE等8條直接標志轉(zhuǎn)移間接標志轉(zhuǎn)移條件循環(huán)控制中斷LOOPAGAINLOOPE/LOOPZLOOPNE/LOOPNZJCXZCX/=0循環(huán)CX/=0&ZF=1循環(huán)CX/=0&ZF=0循環(huán)CX=0循環(huán)INTnINTOIRET中斷溢出中斷中斷返回JMPCALLRETJZ/JEJA/JNBELOOPINT控制轉(zhuǎn)移指令無條件轉(zhuǎn)移和過程調(diào)用條件轉(zhuǎn)移JMP無條件轉(zhuǎn)移JZ79無條件轉(zhuǎn)移類型方式尋址目標指令格式段內(nèi)轉(zhuǎn)移直接直接立即短轉(zhuǎn)移(8)立即近轉(zhuǎn)移(16)JMPSHORTPJMPNEARPTRP間接間接寄存器(16)存儲器(16)JMPBXJMPWORDPTRP段間轉(zhuǎn)移直接間接立即轉(zhuǎn)移(32)存儲器(32)JMPFARPTRPJMPDWORDPTRP說明1、NEARPTR可省略2、地址形成無條件轉(zhuǎn)移類型方式尋址目標指令格式直接立即短轉(zhuǎn)移(8)J80過程調(diào)用和返回類型方式指令格式段內(nèi)調(diào)用直接CALLP間接CALLBXJMPWORDPTR[SI]段間調(diào)用直接間接CALLFARPTRPCALLDWORDPTR[BX]說明1、NEARPTR可省略2、執(zhí)行過程3、RETn過程調(diào)用和返回類型方式指令格式直接CALLP間接CA81直接標志轉(zhuǎn)移指令格式測試條件指令功能JCPJNCJZ/JEJNZ/JNEJSJNSJOJNOJP/JPEJNP/JPOCF=1CF=0ZF=1ZF=0SF=1SF=0OF=1OF=0PF=1PF=0有進位轉(zhuǎn)移無進位結(jié)果為零/相等結(jié)果不為零負正溢出無溢出奇偶為1/偶奇偶為0/奇說明1、短轉(zhuǎn)移直接標志轉(zhuǎn)移指令格式測試條件指令功能JCPCF=1有進位82間接標志轉(zhuǎn)移類別指令格式測試條件指令功能無符號數(shù)比較測試JA/JNBEPJAE/JNBJB/JNAEJBE/JNACF∨ZF=0CF=0CF=1CF∨ZF=1高于/不低于等于轉(zhuǎn)移不低于/高于等于低于/不高于等于不高于/低于或等于帶符號數(shù)比較測試JG/JNLEJGE/JNLJL/JNGEJLE/JNG(SF∨OF)∨ZF=0SF∨OF=0SF∨OF=1(SF∨OF)∨ZF=1大于/不小于等于轉(zhuǎn)移不小于/大于等于小于/不大于等于不大于/小于等于說明1、短轉(zhuǎn)移間接標志轉(zhuǎn)移類別指令格式測試條件指令功能無符號數(shù)JA/JNB83中斷
中斷概念
1、含義2、中斷源:外、內(nèi)3、中斷響應(yīng)4、專用中斷:0-4中斷指令
1、INTn2、INTO3、IRET中斷中斷概念84處理器控制指令類型指令操作含義標志操作指令CLCCMCSTCCLDSTDCLISTICF=0CF=/CFCF=1DF=0DF=1IF=0IF=1進位位清零進位位取反進位位置1方向位清零方向位置1中斷標志清零中斷標志置1外部同步指令ESC外部碼,源WAITLOCK停機空操作HLTNOP暫停復(fù)位或中斷喚醒處理器控制指令類型指令操作含義標志CLCCF=0進位位清零外85第3章80X86/Pentuim指令系統(tǒng)3-180X86/Pentium指令格式和尋址方式3-28086/8088指令系統(tǒng)3-380X86/Pentium指令系統(tǒng)第3章80X86/Pentuim指令系統(tǒng)3-180X86指令是計算機執(zhí)行某種操作的命令。計算機為了完成不同的功能而要執(zhí)行不同的指令。一臺計算機能夠識別和執(zhí)行的全部指令稱為該計算機的指令系統(tǒng)或指令集。不同的微處理器有不同的指令系統(tǒng),80X86/Pentium系列微處理器的指令集是在8086/8088CPU指令系統(tǒng)上發(fā)展起來的。第3章80X86/Pentuim指令系統(tǒng)指令是計算機執(zhí)行某種操作的命令。計算機為了完成不同的功能而要87
指令的組成:操作碼字段--標明計算機要執(zhí)行什么操作操作數(shù)字段--指出指令在執(zhí)行過程中所需要的操作數(shù)(值為多少或者放在什么地方),以及操作結(jié)果送到哪里3-180X86/Pentium指令格式和尋址方式
指令的組成:3-180X86/Pentium指令格式88指令的一般格式操作數(shù)字段可以有一個,二個或三個操作數(shù),通常稱為“一地址”,“二地址”或“三地址”指令操作碼操作數(shù)。。。操作數(shù)指令的一般格式操作數(shù)字段可以有一個,二個或三個操作數(shù),通常稱89示例加1指令I(lǐng)NCAX
只需要指出加1的操作數(shù),它是“一地址”指令。
雙操作數(shù)指令A(yù)DDAX,BX
大多數(shù)運算型指令都是雙操作數(shù)指令,對這種指令,有的機器(大中型)使用“三地址”指令:除給出參加運算的兩個操作數(shù)外,還要指出運算結(jié)果的存放地址示例加1指令I(lǐng)NCAX90現(xiàn)代微型計算機中多采用二地址指令,兩個操作數(shù)分別稱為“源操作數(shù)”和“目的操作數(shù)”,指令執(zhí)行后,把運算結(jié)果放到目的操作數(shù)的地址之中。指令的操作碼在機器中的表示比較簡單,只要對每一種操作指定相應(yīng)的二進制代碼即可;而指令的操作數(shù)字段的情形就比較復(fù)雜現(xiàn)代微型計算機中多采用二地址指令,兩個操作數(shù)分別稱為“源操作91尋址方式指令通常應(yīng)提供的信息1.做什么操作2.操作數(shù)從哪里來3.操作結(jié)果放在哪里4.對于調(diào)用和轉(zhuǎn)移指令,還要涉及轉(zhuǎn)移或調(diào)用地址的提供方式尋址方式指令通常應(yīng)提供的信息92
尋址方式
操作數(shù)類型:(1)立即數(shù)立即數(shù)是作為指令代碼的一部分出現(xiàn)在指令中。(2)寄存器操作數(shù)寄存器操作數(shù)是把操作數(shù)存放在寄存器中。尋址方式操作數(shù)類型:93(3)存儲器操作數(shù)
存儲器操作數(shù)是把操作數(shù)放在存儲器中。存儲器操作數(shù)所在的存儲器地址應(yīng)該是物理地址,即由段地址和偏移量(把相對于段首地址的偏移量稱為有效地址EA)所決定的。在匯編指令中,通常只給出有效地址EA(以各種尋址方式給出),而段地址(在段寄存器中)是通過隱含方式使用的。(3)存儲器操作數(shù)948086/8088指令系統(tǒng)中對段地址有個基本規(guī)定:在正常情況下,由尋址方式中有效地址規(guī)定的基地址寄存器來確定段寄存器,即只要尋址方式中出現(xiàn)BP寄存器作為基地址,段寄存器一定采用堆棧段SS,其余的情況都采用數(shù)據(jù)段DS。8086/8088指令系統(tǒng)中對段地址有個基本規(guī)定:95段超越:指令中的操作數(shù)也可以不在基本規(guī)定的段區(qū)內(nèi),必須在指令中指定段寄存器,這就是段超越。例如:MOVAL,[2000H]MOVAL,ES:[2000H]段超越:968086的尋址方式1、固定尋址2、立即數(shù)尋址3、寄存器尋址直接尋址4、存儲器尋址間接尋址5、其它尋址基址尋址變址尋址基址+變址尋址8086的尋址方式1、固定尋址基址尋址變址尋址基址+變址尋971、固定尋址又稱隱含尋址
在8086/8088系統(tǒng)中,有一部分指令的操作數(shù)沒有給出任何說明,但計算機根據(jù)操作碼即可確定要操作的對象。例如:AAA;隱含對AL操作1、固定尋址又稱隱含尋址982、立即數(shù)尋址方式立即數(shù)尋址方式尋找的操作數(shù)緊跟在指令操作碼之后。CPU直接從指令隊列中取得立即數(shù),不必執(zhí)行總線周期。例:MOVAL,04HMOVAX,1234HMOVAX,0004H
2、立即數(shù)尋址方式立即數(shù)尋址方式尋找的操作數(shù)緊跟在指令99目的
源exampleMOVAL,80H;低地址存儲器
AXMOVAX,3064H;
ADDAL,20H;ADDAX,1090H;高地址OP6430目的源example100注意:8位或16位只能是整數(shù)類型的源操作數(shù)主要用來給存儲器或寄存器賦初值速度快注意:8位或16位1013、寄存器尋址方式寄存器尋址是指尋找的操作數(shù)在某個通用寄存器中(8位或16位)。不需使用總線周期。
例MOVAX,BXMOVCL,AH3、寄存器尋址方式寄存器尋址是指尋找的操作數(shù)在某個通用寄存器1024、存儲器尋址方式當EU需要讀/寫位于存儲器的操作數(shù)時:①根據(jù)尋址方式,由EU計算出操作數(shù)地址的偏移量,即有效地址EA.②將EA送至BIU單元,同時請求BIU執(zhí)行一個總線周期。③BIU將某個段寄存器的內(nèi)容左移4位,加上EU送來的EA,得到20位的物理地址PA.④執(zhí)行總線周期,讀/寫指令所需的操作數(shù)。4、存儲器尋址方式當EU需要讀/寫位于存儲器的操作數(shù)時:1034-1、直接尋址直接尋址方式是指尋找的操作數(shù)的地址(EA)在指令中直接給出。例:MOVAX,[2000H]MOVAL,[2000H]段超越例:MOVAX,ES:[2001H]4-1、直接尋址直接尋址方式是指尋找的操作數(shù)的地址(EA)在104
例1.MOVAX,[2000H];如(DS)=3000H,則指令的執(zhí)行情況如下圖所示:
105
代存儲器碼段
數(shù)據(jù)3000H段
執(zhí)行結(jié)果:(AX)=3050HOP0020503032000H代存儲器OP01064-2、間接尋址要尋址的操作數(shù)在存儲器中,它的地址(EA/16位偏移量)在寄存器中。(1)基址尋址:BX、BP+位移量(2)變址尋址:SI、DI+位移量(3)基址+變址:BX、BP+SI、DI+位移量4-2、間接尋址要尋址的操作數(shù)在存儲器中,它的地址(EA/1107例:設(shè)DS=1200H,BX=05A6H,SS=5000H,BP=40A0H,SI=2000H,DI=3000H,位移量disp=1618H試判斷下列指令的尋址方式,并求出在各種尋址方式下的EA和PA,并說明指令執(zhí)行的結(jié)果。例:設(shè)DS=1200H,BX=05A6H,108
設(shè)DS=1200H,BX=05A6H,SS=5000H,
BP=40A0H,SI=2000H,DI=3000H,
位移量disp=1618H
MOVAX,[0618H]EA=0618HPA=DSx16+EA=12000H+0618H=12618H執(zhí)行結(jié)果:將數(shù)據(jù)段12618H和12619H兩單元的內(nèi)容取出送至AX。
設(shè)DS=1200H,BX=05A6H,S109
設(shè)DS=1200H,BX=05A6H,SS=5000H,
BP=40A0H,SI=2000H,DI=3000H,
位移量disp=1618H
MOVAX,[BX]EA=05A6HPA=DSx16+EA=12000H+05A6H=125A6H執(zhí)行結(jié)果:將數(shù)據(jù)段125A6H和125A7H兩單元的內(nèi)容取出送至AX。
設(shè)DS=1200H,BX=05A6H,S110
設(shè)DS=1200H,BX=05A6H,SS=5000H,
BP=40A0H,SI=2000H,DI=3000H,
位移量disp=1618H
MOVAX,[BP]EA=40A0HPA=SSx16+EA=50000H+40A0H=540A0H執(zhí)行結(jié)果:將堆棧段540A0H和540A1H兩單元的內(nèi)容取出送至AX。
設(shè)DS=1200H,BX=05A6H,S111
設(shè)DS=1200H,BX=05A6H,SS=5000H,
BP=40A0H,SI=2000H,DI=3000H,
位移量disp=1618H
MOVAX,[DI]EA=3000HPA=DSx16+EA=12000H+3000H=15000H執(zhí)行結(jié)果:將數(shù)據(jù)段15000H和15001H兩單元的內(nèi)容取出送至AX。
設(shè)DS=1200H,BX=05A6H,S112
設(shè)DS=1200H,BX=05A6H,SS=5000H,
BP=40A0H,SI=2000H,DI=3000H,
位移量disp=1618H
MOVAX,[BX+DI]EA=BX+DI=05A6H+3000H=35A6HPA=DSx16+EA=12000H+35A6H=155A6H執(zhí)行結(jié)果:將數(shù)據(jù)段155A6H和155A7H兩單元的內(nèi)容取出送至AX。
設(shè)DS=1200H,BX=05A6H,S113
設(shè)DS=1200H,BX=05A6H,SS=5000H,
BP=40A0H,SI=2000H,DI=3000H,
位移量disp=1618H
MOVAX,[BP+SI+disp]EA=BP+SI+disp=40A0H+2000H+1618H=76B8HPA=SSx16+EA=50000H+76B8H=576B8H執(zhí)行結(jié)果:將堆棧段576B8H和576B9H兩單元的內(nèi)容取出送至AX。
設(shè)DS=1200H,BX=05A6H,S1145、其它尋址方式串操作指令尋址方式I/O端口尋址方式轉(zhuǎn)移類指令尋址方式5、其它尋址方式串操作指令尋址方式115串操作指令尋址方式串操作指令使用隱含變址寄存器尋址。源串操作數(shù)用SI變址寄存器,段基址由數(shù)據(jù)段寄存器DS決定。目的串操作數(shù)用DI變址寄存器,段基址由附加段寄存器ES決定。在字符串操作指令中,自動增減SI和DI的內(nèi)容。串操作指令尋址方式串操作指令使用隱含變址寄存器尋址。116I/O端口尋址方式
在尋址外設(shè)端口時,使用端口尋址。(1)直接端口尋址:端口地址為8位立即數(shù)(0~255)。(2)間接端口尋址:端口地址放在DX寄存器中(16位數(shù),0~65535)。OUT21H,AL;AL內(nèi)容送21H端口輸出OUTDX,AL;I/O端口尋址方式
在尋址外設(shè)端口時,使用端口尋址。117轉(zhuǎn)移類指令尋址方式條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令和調(diào)用指令轉(zhuǎn)移類指令尋址方式條件轉(zhuǎn)移指令1183-28086/8088指令系統(tǒng)
數(shù)據(jù)傳送指令
算術(shù)運算指令
邏輯運算和移位指令
字符串處理指令
控制轉(zhuǎn)移指令
處理器控制指令3-28086/8088指令系統(tǒng)數(shù)據(jù)傳送指令119關(guān)注以下三個方面:功能FR結(jié)果關(guān)注以下三個方面:120數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令MOVPUSHPOPXCHGXLAT字或字節(jié)的傳送入棧指令出棧指令交換字或字節(jié)表轉(zhuǎn)換輸入輸出指令I(lǐng)NOUT輸入輸出地址目標傳送指令LEALDSLES裝入有效地址裝入數(shù)據(jù)段寄存器裝入附加段寄存器標志傳送指令LAHFSAHFPUSHFPOPF標志寄存器低字節(jié)裝入AHAH內(nèi)容裝入標志寄存器低字節(jié)標志寄存器入棧指令出棧,并送入標志寄存器MOVPUSHPOPXCHGXLAFINOUTLEALDSLESLAHFSAHFPUSHFPOPF數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令MOV字或字節(jié)的傳送輸入輸出指121數(shù)據(jù)傳送類:寄存器與寄存器、寄存器與存儲器、寄存器與I/O間字節(jié)、字的傳送。
除SAHF和POPF外,其它傳送類指令都不影響FR.數(shù)據(jù)傳送類:122指令格式:MOV目的,源
指令功能:將源操作數(shù)傳送至目的操作數(shù)CSDS、SS、ES通用寄存器AX、BX、CX、DX、SI、DI、BP、SP立即數(shù)存儲器數(shù)MOV指令指令格式:MOV目的,源
指令功能:將源操作數(shù)傳送123注意:兩操作數(shù),必用1個寄存器,不能同為存儲單元。不能用CS和IP作目的操作數(shù)。不允許段寄存器之間直接數(shù)據(jù)傳送。不允許立即數(shù)作目的操作數(shù)。不能向段寄存器送立即數(shù)。注意:兩操作數(shù),必用1個寄存器,不能同為存儲單元。124例:MOVAX,0MOVAX,BXMOVAX,[SI]MOVSI,ES:[BP]例:MOVAX,0125把存儲單元中ALFA1單元的內(nèi)容送ALFA2單元中,ALFA1和ALFA2是同一數(shù)據(jù)段的兩個變量。MOVAL,ALFA1MOVALFA2,AL把存儲單元中ALFA1單元的內(nèi)容送ALFA2單元中,ALF126練習1用MOV指令實現(xiàn)兩內(nèi)存字節(jié)單元內(nèi)容的交換2035H2045H01H….02H練習1用MOV指令實現(xiàn)兩內(nèi)存字節(jié)單元內(nèi)容的交換01H127用直接尋址方式實現(xiàn)MOVBL,[2035H];MOVCL,[2045H];MOV[2045H],BL;MOV[2035H],CL;HLT用直接尋址方式實現(xiàn)MOVBL,[203128用寄存器間接尋址方式實現(xiàn)
MOVSI,2035H;MOVDI,2045H;MOVAH,[SI];MOVAL,[DI];MOV[2035H],AL;MOV[2045H],AH;用寄存器間接尋址方式實現(xiàn)MOVSI,129入棧出棧指令入棧指令格式:PUSH源指令功能:將源操作數(shù)推入堆棧源:通用寄存器、段寄存器、存儲器*非立即數(shù)出棧指令格式:POP目的指令功能:目的:通用寄存器、段寄存器(非CS)、存儲器入棧出棧指令入棧出棧130堆棧是在存儲器(內(nèi)存)中開辟出一個特定的存儲區(qū)位于堆棧段中,作為堆棧操作存入數(shù)據(jù)或地址和取出數(shù)據(jù)或地址的存儲區(qū)。堆棧是以“后進先出”的原則進行數(shù)據(jù)操作的。堆棧是在存儲器(內(nèi)存)中開辟出一個特定的存儲區(qū)位于堆棧段中,131堆棧操作遵循以下的原則:(1)堆棧的存取每次必須是一個字(16位)(2)向堆棧中存放數(shù)據(jù)時,總是從高地址向低地址方向增長,而不像內(nèi)存中的其他段,是從低地址開始向高地址存放數(shù)據(jù),從堆棧中取數(shù)據(jù)時正好相反。(3)堆棧指令中的操作數(shù)只能是寄存器或存儲器操作數(shù),不能是立即數(shù)。(4)對堆棧的操作遵循“后進先出(LIFO)”的原則,最后壓入堆棧的數(shù)據(jù)會最先被彈出。(5)堆棧段在內(nèi)存中的位置由SS決定,堆棧指針SP總是指向棧頂即SP的內(nèi)容等于當前棧頂?shù)钠频刂罚^棧頂是指當前可用堆棧操作指令進行數(shù)據(jù)交換的存儲單元。堆棧操作遵循以下的原則:1323412入棧PUSHAXAX12MSPSP=SP-2低高棧底34出棧POPBXBX1234SPSP=SP+23412入棧12MSPSP=SP-2低高棧底34出棧1234133
壓入標志:PUSHF
彈出標志:POPF
堆棧操作對標志位的影響只有POPF指令影響所有的標志位,其它堆棧指令均不影響任何標志位。
壓入標志:PUSHF
彈出標志:POPF
堆棧操作134XCHG交換指令指令格式:XCHG目的,源指令功能:交換字或字節(jié)操作數(shù):寄存器間、寄存器和存儲器間*段寄存器不可*不影響標志位*存儲器不能直接交換XCHG交換指令指令格式:XCHG目的,源135例:實現(xiàn)存儲器單元BET1和BET2間的內(nèi)容交換
MOVAX,BET1XCHGAX,BET2MOVBET1,AXPUSHBET1PUSHBET2POPBET1POPBET2
MOVAX,BET1MOVBX,BET2MOVBET1,BXMOVBET2,AX例:實現(xiàn)存儲器單元BET1和BET2間的內(nèi)容交換136XLAT表轉(zhuǎn)換指令指令格式:XLAT轉(zhuǎn)換表指令功能:表轉(zhuǎn)換本指令執(zhí)行前,應(yīng)先將表首地址送入BX中,要換碼的字節(jié)在表中的位移量(據(jù)表首地址的距離)送AL中。結(jié)果:在AL中得到該項的內(nèi)容。本指令不影響標志位。XLAT表轉(zhuǎn)換指令指令格式:XLAT轉(zhuǎn)換表137XLAT表轉(zhuǎn)換指令又稱換碼指令指令格式:XLAT轉(zhuǎn)換表指令功能:表轉(zhuǎn)換完成一個字節(jié)的查表轉(zhuǎn)換。它將數(shù)據(jù)段中偏移地址為BX與AL寄存器之和的存儲器單元的內(nèi)容送入AL寄存器,即:[BX+AL]-AL。使用此指令前,應(yīng)首先在數(shù)據(jù)段中建立一個長度小于256個字節(jié)的表格,表的首地址置于BX中,AL中存放查找對象在表中的下標。指令執(zhí)行后,所查找的對象存于AL中,BX內(nèi)容保持不變。
XLAT表轉(zhuǎn)換指令又稱換碼指令138例:將數(shù)字0~9的BCD碼轉(zhuǎn)換為7段LED顯示器的顯示代碼。40H,79H,24H,30H,19H,12H,02H,78H,00H,18H。將它們依次存放在偏移地址為0800H開始的內(nèi)存區(qū)域。若待轉(zhuǎn)換的BCD碼為0100B,則實現(xiàn)的程序為:MOVBX,0800HMOVAL,4XLAT;AL中位0100B對應(yīng)的7段代碼19H。例:將數(shù)字0~9的BCD碼轉(zhuǎn)換為7段LED顯示器的顯示代碼。139輸入輸出指令I(lǐng)N輸入指令指令格式:INAL,PORTINAX,PORTINAX,DXINAL,DXOUT輸出指令指令格式:OUTPORT,ALOUTPORT,AXOUTDX,ALOUTDX,AX輸入輸出指令I(lǐng)N輸入指令OUT輸出指令140地址目標傳送指令LEA指令格式:LEA目的,源功能:將源操作數(shù)給出的有效地址(EA)傳送到指定的寄存器中。LEA指令處理的是變量地址(偏移量),不是變量的值。地址目標傳送指令LEA141例:
MOVDI,TABLE;將變量TABLE的內(nèi)容傳送至DILEADI,TABLE;將變量TABLE的地址偏移量傳送至DILEADX,[1000H];將1000H傳送至DX例:142LDS指令格式:LDS目的,源功能:將存儲器地址指針所指向的雙字的低地址中的字送到給定的通用寄存器中。把雙字的高地址中的字送到DS寄存器中。LDS143LES指令格式:LES目的,源功能:將存儲器地址指針所指向的雙字的低地址中的字送到給定的通用寄存器中。把雙字的高地址中的字送到ES寄存器中。LES144標志傳送指令LAHF指令格式:LAHF指令功能:PSW(L)送入AHSAHFPUSHF指令格式:PUSHF指令功能:PSW送入棧POPF標志傳送指令LAHF145算術(shù)運算指令加法減法ADDADCINCAAADAA加法帶進位加法增量加法的ASCII調(diào)整加法的十進制調(diào)整SUBSBBDECNEGCMPAASDAS減法帶借位減法減量取負比較減法的ASCII調(diào)整減法的十進制調(diào)整乘法除法MULIMULAAM無符號數(shù)乘法整數(shù)乘法乘法的ASCII調(diào)整DIVIDIVAADCBWCWD無符號除法整數(shù)除法除法的ASCII調(diào)整把字節(jié)轉(zhuǎn)換成字把字轉(zhuǎn)換成字節(jié)加法減法乘法除法算術(shù)運算指令加法減法ADD加法SUB減法乘法除法MUL無符號146算術(shù)運算指令共有20條,除數(shù)據(jù)寬度變換指令CBW,CWD外,其余指令的執(zhí)行結(jié)果都影響標志。算術(shù)運算指令共有20條,除數(shù)據(jù)寬度變換指令CBW,CWD外,147標志寄存器的格式及各位的含義1514131211109876543210OFDFIFTFSFZFAFPFCF狀態(tài)標志方向標志中斷標志跟蹤標志TraceFlag控制標志進位標志奇偶標志半進位標志零標志符號標志溢出標志標志寄存器的格式及各位的含義1514131211109876148加法指令格式指令功能備注ADD目的,源目的←源+目的寄存器間寄存器和存儲器間儲器和立即數(shù)間寄存器和立即數(shù)間CF、OF、PF、SF、ZF、AF源和目的不可同時為存儲器,類型必須一致ADC目的,源目的←源+目的+CFINC目的目的←目的+1寄存器、存儲器AF、OF、PF、SF、ZFINCBYTEPTR[BX]存儲器需指定字或字節(jié)AAA調(diào)整非壓縮BCD數(shù)DAA調(diào)整壓縮BCD數(shù)加法指令格式指令功能1491.二進制加法和減法指令名稱格式操作
加法ADDDST,SRCDSTSRC+DST帶進位加法ADCDST,SRCDSTSRC+DST+CF減法SUBDST,SRCDSTDST-SRC帶借位減法SBBDST,SRCDSTDST-SRC-CF
所有狀態(tài)標志都受影響1.二進制加法和減法指令150Example編寫實現(xiàn)下列二進制運算的程序段WX+Y+24-Z(X.Y.Z均為字變量)MOVAX,X;ADDAX,Y;ADDAX,24;SUBAX,Z;MOVW,AX;
Example編寫實現(xiàn)下列二進制運算的程序段151Example雙倍精度運算(操作數(shù)的長度為雙字--兩個16位)2000H3000H低16位低16位
高16位高16位
把2000H地址開始的兩個字(低字在前)和3000H地址開始的兩個字相加,和存放在2000H開始處。Ex
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 法院安檢人員管理制度匯編(3篇)
- 客戶露營活動策劃方案(3篇)
- 甘肅泵房施工方案(3篇)
- 景區(qū)票務(wù)系統(tǒng)管理制度
- 罕見自身免疫病的免疫耐受誘導策略
- 2026廣東佛山榮山中學面向社會招聘臨聘教師4人備考題庫及答案詳解(考點梳理)
- 2026云南玉溪市峨山縣教育體育系統(tǒng)招聘畢業(yè)生6人備考題庫及參考答案詳解
- 2026江西贛州市人力資源有限公司招聘勞務(wù)派遣制工作人員1人備考題庫含答案詳解
- 罕見腫瘤的個體化治療特殊人群治療考量因素
- 新公司會計財務(wù)制度
- 2025年浙江高考物理試題答案詳解解讀及備考指導
- 急性肝衰竭的護理研究進展
- DB45-T 2883-2024 健康體檢機構(gòu)護理質(zhì)量管理規(guī)范
- GB/T 45870.1-2025彈簧測量和試驗參數(shù)第1部分:冷成形圓柱螺旋壓縮彈簧
- 智慧教育生態(tài)的協(xié)同發(fā)展機制及其實踐案例研究
- 行為面試法培訓課件
- 征信培訓管理辦法
- 宮頸機能不全超聲診斷與治療
- 倉庫物品丟失管理辦法
- 工藝管線焊后熱處理施工技術(shù)方案
- 無人機行業(yè)研究報告
評論
0/150
提交評論