版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
微機(jī)原理知識點(diǎn)1.按照定義,設(shè)n為字長,則原碼能表示的整數(shù)范圍是:-(2n-1–1)~+(2n-1–1);例如8位二進(jìn)制原碼表示的整數(shù)范圍是-127D~+127D;16位二進(jìn)制原碼表示的整數(shù)范圍是-32767D~+32767D。2.反碼表示法:一個正數(shù)的反碼和原碼相同;一個負(fù)數(shù)的反碼的符號位與其原碼的符號位相同,其余位通過將其原碼的數(shù)值部分按位求反得到。按照定義,設(shè)n為字長,則反碼能表示的整數(shù)范圍是:-(2n-1–1)~+(2n-1–1);例如:8位二進(jìn)制反碼表示的整數(shù)范圍是-127D~+127D;16位二進(jìn)制反碼表示的整數(shù)范圍是-32767D~+32767D。3.補(bǔ)碼表示法:一個正數(shù)的補(bǔ)碼和反碼、原碼相同;一個負(fù)數(shù)的補(bǔ)碼的符號位與其原碼的符號位相同,其余位可通過將其反碼數(shù)值部分加1得到。按照定義,設(shè)n為字長,則補(bǔ)碼能表示的整數(shù)范圍是:-2n-1~+(2n-1–1);例如:8位二進(jìn)制補(bǔ)碼表示的整數(shù)范圍是-128D~+127D;16位二進(jìn)制補(bǔ)碼表示的整數(shù)范圍是-32768D~+32767D。補(bǔ)碼比原碼、反碼所能表示的數(shù)的范圍大,數(shù)0的補(bǔ)碼只有一種表示形式,是計算機(jī)中采用的帶符號數(shù)的編碼方式。利用符號位判別補(bǔ)碼溢出若兩個同號數(shù)相加,結(jié)果的符號位與之相反,則溢出;若兩個異號數(shù)相減,結(jié)果的符號位與減數(shù)相同,則溢出;若兩個異號數(shù)相加或兩個同號數(shù)相減,則不溢出。字符的ASCII值可以看作字符的碼值,如字符“A”的ASCII值為41H,“Z”的ASCII值為5AH,字符“a”的ASCII值為61H,數(shù)字“0~9”的ASCII值為0110000~011001,利用這個值的大小可以將字符排序,以后我們會遇到字符串大小比較,實(shí)際上是比較ASCII碼值的大小。5.8086由執(zhí)行部件EU(ExecutionUnit)和總線接口部件BIU(BusInterfaceUnit)兩部分組成,這兩個部件的操作是并行的。EU負(fù)責(zé)指令的執(zhí)行;BIU負(fù)責(zé)CPU與存儲器、I/O設(shè)備之間的數(shù)據(jù)傳送。6.EU組成:算術(shù)邏輯單元(ALU),可完成8位或16位操作數(shù)進(jìn)行算術(shù)或邏輯運(yùn)算;8個16位通用寄存器(AX、BX、CX、DX、SI、DI、SP和BP);標(biāo)志寄存器;控制電路。EU功能:負(fù)責(zé)指令的執(zhí)行,即:從總線接口部件BIU的指令隊(duì)列取得指令,執(zhí)行之后向BIU送回運(yùn)算結(jié)果,并把運(yùn)算結(jié)果的狀態(tài)特征保存到標(biāo)志寄存器中。7.BIU組成:4個16位段寄存器(DS、CS、ES、SS);指令指針寄存器(IP);20位的地址加法器;6字節(jié)指令隊(duì)列緩沖器;內(nèi)部暫存器和總線控制邏輯。BIU功能:負(fù)責(zé)CPU與存儲器、I/O設(shè)備之間的數(shù)據(jù)傳送。具體包括:取指令送指令隊(duì)列,配合EU從指定的內(nèi)存單元或者外設(shè)端口中取數(shù)據(jù),將數(shù)據(jù)傳送給EU,或者把EU的操作結(jié)果傳送到指定的內(nèi)存單元或外設(shè)端口中。CF進(jìn)位標(biāo)志:指令執(zhí)行后,如果運(yùn)算結(jié)果在最高位上產(chǎn)生了一個進(jìn)位或借位,則CF=1;否則,CF=0。PF奇偶標(biāo)志:如果運(yùn)算結(jié)果低八位1的個數(shù)為偶數(shù),則PF=1;否則,PF=0。AF輔助進(jìn)位標(biāo)志:如果運(yùn)算結(jié)果低4位產(chǎn)生了進(jìn)位,則AF=1;否則,AF=0。ZF零標(biāo)志:如果運(yùn)算結(jié)果為0,則ZF=1;否則,ZF=0。SF符號標(biāo)志:如果運(yùn)算結(jié)果為正數(shù),則SF=0;否則,SF=1。OF溢出標(biāo)志:如果運(yùn)算過程產(chǎn)生了溢出,則OF=1;否則,OF=0。9.8086的工作模式由硬件設(shè)計決定:引腳連電源(+5V),則8086處在最小模式;引腳接地,則8086處在最大模式。最小模式也稱為單處理器模式,是指系統(tǒng)中只有一片8086微處理器,所連的存儲器容量不大、片子不多,所要連的I/O端口也不多,系統(tǒng)的控制總線就直接由CPU的控制線供給,從而使得系統(tǒng)中的總線控制電路被減到最少。最小模式適用于較小規(guī)模的系統(tǒng)。最大模式是相對于最小模式而言的,適用于中、大型規(guī)模的系統(tǒng)。在最大模式的系統(tǒng)中有多個微處理器,其中一個是主處理器8086,其他的處理器稱為協(xié)處理器,承擔(dān)某方面專門的工作。和8086配合的協(xié)處理器有數(shù)值運(yùn)算協(xié)處理器8087,和輸入/輸出協(xié)處理器8089。8086通過一個總線控制器8288來形成各種總線周期,控制信號由8288供給。兩種工作模式的公共引腳BHE/S7(三態(tài)、輸出)高8位數(shù)據(jù)總線允許/狀態(tài)的復(fù)用引腳線,BHE與A0結(jié)合使用.READY(輸入)準(zhǔn)備就緒信號,高電平時有效,有效時表示存儲器或I/O設(shè)備準(zhǔn)備就緒.INTR(輸入)可屏蔽中斷請求信號,高電平時有效,標(biāo)志寄存器中IF位:IF=1,允許中斷;IF=0,禁止中斷.NMI(輸入)非屏蔽中斷請求信號;上升沿有效;不受IF位影響.8086只有NMI和INTR可以引入外部中斷。MN/MX最小/最大模式信號,輸入。10.存儲器的分段管理盡管8086CPU提供20位地址,但8086中可用來存放地址的寄存器如IP、SP、BX、SI等都是16位的,只能直接尋址64KB;為了對1M個存儲單元進(jìn)行管理,8086CPU采用了典型的存儲器分段技術(shù)。將整個存儲器空間分為許多邏輯段每個邏輯段的容量≤64KB字節(jié);各個邏輯段之間可以緊密相連,也可以互相重疊;對存儲器的尋址操作采用段地址加段內(nèi)偏移地址的二級尋址方式;對于任何一個物理地址,可以唯一地被包含在一個邏輯段中,也可包含在多個相互重疊的邏輯段中,只要有段地址和段內(nèi)偏移地址就可以訪問到這個物理地址所對應(yīng)的存儲空間。分段后,對存儲器的尋址操作不再直接用20位的物理地址,而是采用段地址+段內(nèi)偏移地址的二級尋址方式。段地址在8086存儲空間中,把16個字節(jié)的存儲空間稱作一節(jié)(Paragraph),通常分段時要求各個邏輯段從節(jié)的整數(shù)邊界開始,這樣段首地址低4位應(yīng)該是“0000”,因此就把段首地址的高16位稱為“段基址(段地址)”段地址是無符號的16位二進(jìn)制數(shù),存放在段寄存器DS、CS、SS或ES中,這些段分別稱為數(shù)據(jù)段、代碼段、堆棧段和附加段。偏移地址我們把某一存儲單元相對于段首地址的偏移量稱為偏移地址(也稱有效地址EA)。偏移地址也是無符號的16位二進(jìn)制數(shù),存放在IP、SP、BX、SI、DI、BP中或直接出現(xiàn)在指令中。邏輯地址采用分段結(jié)構(gòu)的存儲器中,把通過段地址和偏移地址來表示的存儲單元的地址稱為邏輯地址,記為:段地址:偏移地址邏輯地址是物理地址的一種表示方式,不是唯一的。例如:邏輯地址2000H:1300H、2120H:0100H和2100H:0300H表示的是同一個存儲單元21300H。物理地址物理地址(PA)是存儲單元的絕對地址,20位,是CPU訪問存儲器的唯一的實(shí)際地址,每個存儲單元對應(yīng)一個物理地址;8086的存儲空間物理地址范圍是00000H~FFFFFH。物理地址由邏輯地址形成物理地址=段地址×10H+偏移地址CPU中,這個過程由地址加法器完成;例如,邏輯地址2000H:1300H,所代表的物理地址為:PA=2000H×10H+1300H=20000H+1300H=21300H11.CPU執(zhí)行指令時涉及三種周期:時鐘周期,總線周期,指令周期。計算機(jī)是一個復(fù)雜的時序邏輯電路,時序邏輯電路都有“時鐘”信號。計算機(jī)的“時鐘”是由振蕩源產(chǎn)生的、幅度和周期不變的節(jié)拍脈沖,每個脈沖周期稱為時鐘周期(ClockCycle),又稱為T狀態(tài)。時鐘周期是微機(jī)系統(tǒng)工作的最小時間單元,取決于系統(tǒng)的主頻率,系統(tǒng)完成任何操作所需要的時間,均是時鐘周期的整數(shù)倍。把CPU通過總線進(jìn)行某種操作的過程稱為總線周期(BusCycle),表示從M或I/O端口存取一個數(shù)據(jù)所需的時間。根據(jù)總線操作功能的不同,分為:存儲器讀周期存儲器寫周期I/O讀周期I/O寫周期一個基本的總線周期由4個時鐘周期組成(T1、T2、T3、T4)。在有些情況下,外設(shè)或存儲器速度較慢,不能及時地配合CPU傳送數(shù)據(jù)。這時,外設(shè)或存儲器會通過“READY”信號線在T3狀態(tài)啟動之前向CPU發(fā)一個“數(shù)據(jù)未準(zhǔn)備好”信號,于是CPU會在T3之后插入1個或多個附加的時鐘周期等待狀態(tài)Tw。只有在CPU和內(nèi)存或I/O接口之間傳輸數(shù)據(jù),以及填充指令隊(duì)列時,CPU才執(zhí)行總線周期??梢?,如果在一個總線周期之后,不立即執(zhí)行下一個總線周期,那么,系統(tǒng)總線就處在空閑狀態(tài),此時,執(zhí)行空閑周期TI。每條指令的執(zhí)行包括取指令(fetch)、譯碼(decode)和執(zhí)行(execute)。指令周期是指執(zhí)行一條指令所用的時間。指令周期是由1個或多個總線周期組合而成?;蛘哒f,指令周期可以被劃分為若干個總線周期。8086中不同指令的指令周期是不等長的。對于8086CPU來說,在EU執(zhí)行指令的時候,BIU可以取下一條指令。由于EU和BIU可以并行工作,8086指令的最短執(zhí)行時間可以是兩個時鐘周期,一般的加、減、比較、邏輯操作是幾十個時鐘周期,最長的為16位乘除法約要200個時鐘周期。12.8086的七種基本的數(shù)據(jù)尋址方式:(1)立即尋址;(2)寄存器尋址;(3)直接尋址;(4)寄存器間接尋址;(5)寄存器相對尋址;(6)基址變址尋址;(7)相對基址變址尋址。立即尋址:操作數(shù)直接出現(xiàn)在指令中,此時的操作數(shù)也叫立即數(shù)。立即數(shù)緊跟在操作碼后面,一起存放在代碼段中。例如:MOVAX,2010H在該指令格式中,AX是目標(biāo)操作數(shù),2010H是源操作數(shù)。在所有的指令中,立即數(shù)只能作源操作數(shù),不能作目標(biāo)操作數(shù)。立即數(shù)應(yīng)與目標(biāo)操作數(shù)的長度一致。立即數(shù)默認(rèn)采用十進(jìn)制形式,以十六進(jìn)制形式出現(xiàn)的立即數(shù)應(yīng)以字母H為后綴,以八進(jìn)制形式出現(xiàn)的立即數(shù)應(yīng)以字母Q為后綴。以十六進(jìn)制形式出現(xiàn)的立即數(shù),若以字母開頭,則必須以數(shù)字0為前綴。立即數(shù)還可以用表示+、-、×、/表示的算術(shù)表達(dá)式,也可以用圓括號改變運(yùn)算順序。立即數(shù)只能是整數(shù),不能是小數(shù)、變量或其它類型的數(shù)據(jù)。寄存器尋址:操作數(shù)在寄存器中,在指令中指定寄存器號。由于寄存器號短,因此,采用寄存器尋址方式的指令的機(jī)器碼長度短。操作數(shù)在寄存器中,指令執(zhí)行時,操作就在CPU的內(nèi)部進(jìn)行,不需要通過訪問存儲器來取得操作數(shù),因而指令的執(zhí)行速度快。在編程中,如有可能,應(yīng)盡量在指令中使用這種尋址方式。例如:MOVAX,2010H對于16位操作數(shù),寄存器可以是:AX,BX,CX,DXSI,DI,SP,BPCS,DS,SS和ES對8位操作數(shù),寄存器可以是:AH,ALBH,BLCH,CLDH,DL在一條指令中,寄存器尋址方式既可用于源操作數(shù),也可用于目標(biāo)操作數(shù),還可以兩者都用寄存器尋址方式。源操作數(shù)與目標(biāo)操作數(shù)的長度應(yīng)一致。例如,不能將寄存器AX的內(nèi)容傳送到寄存器BH中,也不能將寄存器BH的內(nèi)容傳送到寄存器AX中。兩個操作數(shù)不能同時為段寄存器。目標(biāo)操作數(shù)不能是代碼段寄存器。直接尋址:操作數(shù)在存儲器中,指令中以具體數(shù)值的形式直接給出操作數(shù)所在存儲單元的有效地址EA。為了與立即數(shù)區(qū)別,該有效地址必須用[]括起。例如:MOVAX,[2010H]該指令的源操作數(shù)采用直接尋址方式。若(DS)=2000H,那么指令執(zhí)行后,(AX)=1225H。采用直接尋址方式時,如果指令中沒有用前綴說明操作數(shù)存放在哪個段,則操作數(shù)默認(rèn)存放在數(shù)據(jù)段。8086系統(tǒng)允許操作數(shù)存放在代碼段、堆棧段或附加段。此時,就需要在指令中指明段超越。例如:MOVES:[1225H],AX該指令的目標(biāo)操作數(shù)采用直接尋址方式。操作數(shù)存放在由ES指示的附加段中。物理地址=ES×10H+1225H。在匯編語言指令中,可以用符號地址代替數(shù)值地址。例如:MOVAX,NUMA此時,NUMA是存放操作數(shù)的內(nèi)存單元的符號地址。上面這條指令還可以寫成如下的形式:MOVAX,[NUMA]如DATA1數(shù)據(jù)存放在附加段,則可以用如下的形式指定段跨越前綴:MOVAX,ES:NUMA或MOVAX,ES:[NUMA]寄存器間接尋址:操作數(shù)的有效地址EA存放在基址寄存器BX、BP或變址寄存器SI、DI中。為了區(qū)別于寄存器尋址方式,指令中指定的寄存器名要用[]括起來。指令中使用SI、DI、BX寄存器時,操作數(shù)默認(rèn)存放在數(shù)據(jù)段中;使用BP寄存器時,操作數(shù)默認(rèn)存放在堆棧段中,允許段超越。操作數(shù)的物理地址=(DS)×10H+(SI)/(DI)/(BX)或(SS)×10H+(BP)例如:MOVAX,[SI]該指令的源操作數(shù)采用寄存器間接尋址方式。若(DS)=2000H,(SI)=2010H,那么指令執(zhí)行后,(AX)=1225H。如操作數(shù)不存放在間址寄存器默認(rèn)的段,則指定段超越的指令可采用如下形式。MOVAX,ES:[SI]此時,操作數(shù)的物理地址=ES×10H+SI。寄存器相對尋址:操作數(shù)的有效地址EA是指令中指定的基址或變址寄存器的值與位移量之和。指令中使用SI、DI、BX寄存器時,操作數(shù)默認(rèn)存放在數(shù)據(jù)段中;使用BP寄存器時,操作數(shù)默認(rèn)存放在堆棧段中,允許段超越。操作數(shù)的物理地址=(DS)×10H+(SI)/(DI)/(BX)+8位或16位位移量或=(SS)×10H+(BP)+8位或16位位移量例如:MOVAX,8[BX]該指令的源操作數(shù)采用寄存器相對尋址方式。若(DS)=2000H,(BX)=2008H,那么指令執(zhí)行后,(AX)=1225H。寄存器相對尋址說明:偏移量是符號數(shù),8位偏移量的取值范圍為:00~0FFH(即+127D~-128D);16位偏移量的取值范圍為:0000~0FFFFH(即+32767D~-32768D)。8086匯編允許用下面三種形式表示相對尋址,它們是等效的。MOVAX,[BX]+8MOVAX,8[BX]MOVAX,[BX+8]基址變址尋址:操作數(shù)的有效地址EA是指令中指定的基址寄存器的值與變址寄存器的值之和。指令中使用基址寄存器BX時,操作數(shù)默認(rèn)存放在數(shù)據(jù)段中;使用基址寄存器BP時,操作數(shù)默認(rèn)存放在堆棧段中,允許段超越。操作數(shù)的物理地址=(DS)×10H+(SI)/(DI)+(BX)或=(SS)×10H+(SI)/(DI)+(BP)例如:MOVAX,[BX][SI]該指令的源操作數(shù)采用基址變址尋址方式。若(DS)=2000H,(BX)=2008H,(SI)=8H,那么指令執(zhí)行后,(AX)=1225H。相對基址變址尋址:操作數(shù)的有效地址EA是指令中指定的基址寄存器的值與變址寄存器的值以及8位或16位位移量之和。指令中使用基址寄存器BX時,操作數(shù)默認(rèn)存放在數(shù)據(jù)段中;使用基址寄存器BP時,操作數(shù)默認(rèn)存放在堆棧段中,允許段超越。操作數(shù)的物理地址=(DS)×10H+(SI)/(DI)+(BX)+8位或16位位移量或=(SS)×10H+(SI)/(DI)+(BP)+8位或16位位移量例如:MOVAX,3[BX][SI]該指令的源操作數(shù)采用寄存器相對尋址方式。若(DS)=2000H,(BX)=2008H,(SI)=5H,那么指令執(zhí)行后,(AX)=1225H。13.8086指令系統(tǒng)包括六大類指令:數(shù)據(jù)傳送指令;算術(shù)運(yùn)算指令;邏輯運(yùn)算和移位指令;串操作指令;控制轉(zhuǎn)移指令;處理器控制指令。數(shù)據(jù)傳送指令是將數(shù)據(jù)或地址傳送到寄存器、存儲單元或I/O端口中。分為5類:通用數(shù)據(jù)傳送指令[MOV,XCHG,PUSH,POP];累加器專用傳送指令[XLAT,IN,OUT];地址傳送指令[LEA,LDS,LES];標(biāo)志傳送指令[LAHF,SAHF,PUSHF,POPF];數(shù)據(jù)類型轉(zhuǎn)換指令[CBW,CWD]。除了POPF和SAHF指令外,其他的數(shù)據(jù)傳送指令的執(zhí)行結(jié)果都不影響標(biāo)志位。指令中如果列出兩個操作數(shù),則指令的執(zhí)行過程是:目標(biāo)操作數(shù)←源操作數(shù)。指令中如果僅列出一個操作數(shù),則另一個操作數(shù)為隱含操作數(shù)。通用數(shù)據(jù)傳送指令:1)傳送指令格式:MOV目標(biāo)操作數(shù),源操作數(shù)功能:將源操作數(shù)的內(nèi)容(一個字或一個字節(jié))傳送到目標(biāo)操作數(shù)指定的寄存器或內(nèi)存單元,源操作數(shù)內(nèi)容不變。例如:MOVAL,5;字節(jié)傳送,立即數(shù)送通用寄存器MOVAX,BX;字傳送,通用寄存器送通用寄存器MOVDS,AX ;字傳送,通用寄存器送段寄存器源操作數(shù)可以是立即數(shù)、寄存器或內(nèi)存操作數(shù)。目標(biāo)操作數(shù)可以是寄存器或內(nèi)存操作數(shù)。立即數(shù)和CS寄存器只能作為源操作數(shù),不允許作為目標(biāo)操作數(shù)。IP和PSW都不可作為源操作數(shù)或是目標(biāo)操作數(shù)。立即數(shù)不允許直接傳送至DS、ES或SS寄存器。源操作數(shù)和目標(biāo)操作數(shù)不允許同時是內(nèi)存操作數(shù),也不允許同時是段寄存器。源操作數(shù)和目標(biāo)操作數(shù)的類型必須相同,即同為字節(jié)類型或字類型。2)數(shù)據(jù)交換指令格式:XCHG 目標(biāo)操作數(shù),源操作數(shù)功能:源操作數(shù)的內(nèi)容(一個字或字節(jié))與目標(biāo)操作數(shù)的內(nèi)容(一個字或字節(jié))互換。例如:XCHGBL,AH ;字節(jié)交換,寄存器與寄存器的內(nèi)容交換XCHGAX,[BX][SI];字交換,寄存器與內(nèi)存單元的內(nèi)容交換源操作數(shù)和目標(biāo)操作數(shù)都可以是寄存器或內(nèi)存操作數(shù)。源操作數(shù)和目標(biāo)操作數(shù)不可同時是內(nèi)存操作數(shù)。源操作數(shù)和目標(biāo)操作數(shù)不可以同時是寄存器(累加器)AX。段寄存器、寄存器IP或立即數(shù)不可以作為源操作數(shù)或目標(biāo)操作數(shù)。例如:XCHGAX,2011H;╳源操作數(shù)不能是立即數(shù)XCHGCS,5[SI];╳CS不能作為操作數(shù)XCHGAX,AX;╳源操作數(shù)和目標(biāo)操作數(shù)不可同是AX堆棧是一塊按照“后進(jìn)先出”原則工作的內(nèi)存區(qū)域。把數(shù)據(jù)從棧頂存入堆棧中的操作稱為入棧(或壓入);把數(shù)據(jù)通過棧頂從堆棧中取出的操作稱為出棧(或彈出)。堆棧常被用于數(shù)據(jù)的暫存、交換、子程序的參數(shù)傳遞等場合。在調(diào)用子程序或轉(zhuǎn)入中斷服務(wù)程序時,堆棧是默認(rèn)的被用于保存返回地址的內(nèi)存區(qū)域。為了實(shí)現(xiàn)子程序或中斷嵌套,也必須使用堆棧技術(shù)。在8086系統(tǒng)中,堆棧所在的段就是堆棧段,它可以占用的最大空間是64KB。堆棧段的段地址由SS寄存器指示。堆棧指針寄存器SP始終指示棧頂?shù)钠频刂凡㈦S著入棧和出棧操作而自動變化。當(dāng)進(jìn)行壓入操作后堆棧指針達(dá)到定義值,表明堆棧滿;當(dāng)執(zhí)行彈出操作后堆棧指針回到初值,表明堆棧空。當(dāng)棧滿時,再壓入數(shù)據(jù),稱為“堆棧溢出”。3)堆棧操作指令8086指令系統(tǒng)中:堆棧操作指令中操作數(shù)的類型只能是字,不能是字節(jié)。立即數(shù)不能作為操作數(shù)。格式:PUSH源操作數(shù)功能:源操作數(shù)入棧。指令的執(zhí)行如下操作:①(SP)←(SP)-2②(SS:SP)←源操作數(shù)說明:源操作數(shù)可以是寄存器或是內(nèi)存操作數(shù)。格式:POP目標(biāo)操作數(shù)功能:數(shù)據(jù)出棧,存入目標(biāo)操作數(shù)。指令的執(zhí)行如下操作:①目標(biāo)操作數(shù)←(SS:SP)②(SP)←(SP)+2說明:目標(biāo)操作數(shù)可以是段寄存器、16位寄存器或內(nèi)存操作數(shù)。當(dāng)目標(biāo)操作數(shù)是段寄存器時,不能是CS寄存器?!纠?-2】設(shè)(SS)=2011H,(SP)=0020H,依次執(zhí)行下列匯編指令后,分析堆棧中的數(shù)據(jù)和寄存器AX、BX、SP的變化情況。MOVAX,0103HMOVBX,1228HPUSHAXPUSHBXPOPBX累加器專用傳送指令1)換碼指令格式一:XLAT格式二:XLAT表格首地址功能:將內(nèi)存表格中某一單元的值傳送至寄存器AL,實(shí)現(xiàn)一種編碼到另一種編碼的轉(zhuǎn)換。例如,把字符的掃描碼轉(zhuǎn)換成ASCII碼。指令的執(zhí)行如下操作:把數(shù)據(jù)段中偏移地址為BX+AL的內(nèi)存單元的內(nèi)容送到AL中,即:(AL)←(BX+AL)。源操作數(shù)、目標(biāo)操作數(shù)均隱含。該指令隱含說明:寄存器BX保存內(nèi)存表格的首地址;寄存器AL保存表格中某單元在此表格中的偏移量。因此,在使用該指令之前,必須先初始化BX和AL這兩個寄存器。該指令能訪問的內(nèi)存表格中的數(shù)據(jù)只能是字節(jié)類型的。該指令能訪問的內(nèi)存表格的最大容量是256字節(jié)。格式二中的表格首地址部分,只是為了提高程序的可讀性而設(shè)置的。指令執(zhí)行時,使用BX的值作為表格首地址。(2)輸入指令格式一:INAL,端口地址格式二:INAX,端口地址格式三:INAL,DX格式四:INAX,DX(3)輸出指令功能:從指令中指定的I/O端口讀入一字節(jié)數(shù)據(jù)到AL或一個字?jǐn)?shù)據(jù)到AX。格式一:OUT端口地址,AL格式二:OUT端口地址,AX格式三:OUTDX,AL格式四:OUTDX,AX功能:將AL或AX的內(nèi)容輸出到一個8位I/O端口或16位I/O端口。采用格式一和格式二時,端口地址的取值范圍是:0~FFH,可以尋址256個I/O端口。當(dāng)端口地址值超過255D時,只能采用格式三或格式四,把端口地址保存到寄存器DX中,此時,端口地址的取值范圍是:0~FFFFH,可以尋址65536個I/O端口。當(dāng)端口是8位時,目標(biāo)操作數(shù)選用AL寄存器;當(dāng)端口是16位時,目標(biāo)操作數(shù)選AX寄存器。MOVDX,60H ;端口地址送DX寄存器中INAL,DX ;從60H端口寫入一個8位數(shù)OUT90H,AX ;將16位數(shù)輸出到90H端口地址傳送指令:在匯編程序中,地址是一種特殊操作數(shù),區(qū)別于一般數(shù)據(jù)操作數(shù),它無符號,長度為16位。在8086系統(tǒng)中,有專門的指令進(jìn)行地址傳送。取有效地址指令LEA格式:LEAr16,mem功能:取內(nèi)存單元mem的有效地址,送到16位寄存器r16中,即:r16←EA(mem)。例如,設(shè)DS=2100H,BX=100H,SI=10H,(DS:110H)=1234H,則指令:LEABX,[BX+SI]執(zhí)行后,(BX)=(BX)+(SI)=110H。(2)地址指針裝入DS指令LDS格式:LDSr16,m32功能:把內(nèi)存中的32位源操作數(shù)中的低16位送到指定寄存器r16中,高16位送到段寄存器DS中。即:r16←m32低16位;DS←m32高16位。(3)地址指針裝入ES指令LES把上述指令中的DS換成ES,即成為LES指令。數(shù)據(jù)類型轉(zhuǎn)換指令:(1)字節(jié)轉(zhuǎn)換為字指令格式:CBW功能:把寄存器AL中數(shù)據(jù)的符號位擴(kuò)到AH寄存器中,使字節(jié)轉(zhuǎn)換為字。指令的執(zhí)行如下操作:當(dāng)AL<80H時,AH←00H;當(dāng)AL≥80H時,AH←FFH。說明:該指令中的源操作數(shù)隱含為寄存器AL,目標(biāo)操作數(shù)隱含為寄存器AX。一個用補(bǔ)碼表示的數(shù)經(jīng)CBW指令進(jìn)行符號位擴(kuò)展后,數(shù)值大小不變。(2)字轉(zhuǎn)換為雙字指令格式:CWD功能:把寄存器AX中數(shù)據(jù)的符號位擴(kuò)到DX寄存器中,使字轉(zhuǎn)換為雙字。指令的執(zhí)行如下操作:當(dāng)AL<8000H時,DX←0000H;當(dāng)AL≥8000H時,DX←FFFFH。說明:該指令中的源操作數(shù)隱含為寄存器AX,目標(biāo)操作數(shù)隱含為寄存器DX,AX。一個用補(bǔ)碼表示的數(shù)經(jīng)CWD指令進(jìn)行符號位擴(kuò)展后,數(shù)值大小不變。例如:(1)MOVAL,75HCBW ;執(zhí)行結(jié)果為:AX=0075H(2)MOVAX,0A085HCWD ;執(zhí)行結(jié)果為:DX=0FFFFH,AX=0A085H算術(shù)運(yùn)算指令:算術(shù)運(yùn)算指令用來執(zhí)行算術(shù)運(yùn)算,完成的操作有5種:加法、減法、乘法、除法和十進(jìn)制調(diào)整。算術(shù)運(yùn)算指令中的操作數(shù)有:一個或兩個。雙操作數(shù)指令中,除了源操作數(shù)是立即數(shù)這種情況外,其余情況下,必須有一個操作數(shù)在寄存器中。單操作數(shù)指令中的操作數(shù)不允許是立即數(shù)。所有的算術(shù)運(yùn)算指令都遵守這個規(guī)則。加法指令:1)不帶進(jìn)位的加法指令格式:ADDdest,src功能:(dest)←(dest)+(src) 說明:源操作數(shù)可以是立即數(shù)、通用寄存器或存儲器操作數(shù),目標(biāo)操作數(shù)只能是通用寄存器或存儲器操作數(shù)。該指令執(zhí)行后,影響標(biāo)志:CF、PF、AF、ZF、SF和OF。例如:ADDCX,DIADD[BP],CLADDCL,TEMPADDBYTEPTR[DI],3 2)帶進(jìn)位的加法指令格式:ADCdest,src功能:(dest)←(dest)+(src)+CF,用于多字節(jié)或多字加法運(yùn)算。源操作數(shù)可以是立即數(shù)、通用寄存器或存儲器操作數(shù),目標(biāo)操作數(shù)只能是通用寄存器或存儲器操作數(shù)。該指令執(zhí)行后,影響標(biāo)志:CF、PF、AF、ZF、SF和OF。例如:ADCCX,DI ;CX←CX+DI+CF例4-5】編寫匯編程序段,計算11112222H+33334444H。MOVAX,2222HADDAX,4444HMOVBX,1111HADCBX,3333H3)加1指令格式:INCdest功能:(dest)←(dest)+1 說明:目標(biāo)操作數(shù)可以是通用寄存器或存儲器操作數(shù)。該指令執(zhí)行后,影響標(biāo)志:PF、AF、ZF、SF和OF。減法指令:1)不帶進(jìn)位減法指令格式:SUBdest,src功能:(dest)←(dest)-(src)說明:源操作數(shù)可以是立即數(shù)、通用寄存器或存儲器操作數(shù),目標(biāo)操作數(shù)只能是通用寄存器或存儲器操作數(shù)。該指令執(zhí)行后,影響標(biāo)志:CF、PF、AF、ZF、SF和OF。例如:SUBAX,0CCCCH ;AX←AX-0CCCCHSUB[DI],CH ;由DI尋址的數(shù)據(jù)段字節(jié)單元的值減去CH后,回存結(jié)果2)帶進(jìn)位減法指令格式:SBBdest,src功能:(dest)←(dest)-(src)-CF,常用于多字節(jié)或多字減法運(yùn)算。說明:源操作數(shù)可以是立即數(shù)、通用寄存器或存儲器操作數(shù),目標(biāo)操作數(shù)只能是通用寄存器或存儲器操作數(shù)。該指令執(zhí)行后,影響標(biāo)志:CF、PF、AF、ZF、SF和OF。例如:SUBAX,DI ;(AX)←(AX)-(DI)SBBBX,SI ;(BX)←(BX)-(SI)-CF3)減1指令格式:DECdest功能:(dest)←(dest)-1 目標(biāo)操作數(shù)可以是通用寄存器或存儲器操作數(shù)。指令執(zhí)行后,影響標(biāo)志:PF、AF、ZF、SF和OF。例如:MOVAL,0DECAL ;AL=0FFH,OF=1,SF=1,ZF=0,AF=1,PF=1,CF=1DECNUM ;由定義NUM的方法來確定這是字節(jié)減1還是字減1CPU運(yùn)算時統(tǒng)一使用補(bǔ)碼運(yùn)算規(guī)則。加、減運(yùn)算指令中,不區(qū)分符號數(shù)與無符號數(shù),即符號數(shù)與無符號數(shù)使用相同的加、減指令。實(shí)際應(yīng)用中,操作數(shù)是符號數(shù)還是無符號數(shù),由編程人員看問題的視角來定。相同的編碼,不同的視角,值不同,對運(yùn)算結(jié)果的溢出判斷標(biāo)準(zhǔn)也不同。將操作數(shù)看作符號數(shù)時,若OF=1,則結(jié)果溢出;若OF=0,則結(jié)果不溢出。將操作數(shù)看作無符號數(shù)時,若CF=1,則結(jié)果溢出;若CF=0,則結(jié)果不溢出。4)比較指令格式:CMPdest,src功能:(dest)-(src)源操作數(shù)可以是立即數(shù)、通用寄存器或存儲器操作數(shù),目標(biāo)操作數(shù)只能是通用寄存器或存儲器操作數(shù)。指令執(zhí)行后,影響:CF、PF、AF、ZF、SF和OF。CMP指令通過減操作(dest)-(src),對標(biāo)志寄存器的標(biāo)志產(chǎn)生影響,不保留結(jié)果。后續(xù)指令可以通過標(biāo)志值,來判別目標(biāo)操作數(shù)與源操作數(shù)之間的大小關(guān)系。例如:CMPAL,0 ;(AL)-0由于無符號數(shù)與符號數(shù)表示規(guī)則不同(符號數(shù)的最高位為符號位,無符號數(shù)各位均為數(shù)字位),使得無符號數(shù)與符號數(shù)大小判定依據(jù)不同。無符號數(shù)相減,不可能有溢出,與大小相關(guān)的標(biāo)志位是:ZF與CF。符號數(shù)相減,不僅考慮正、負(fù),并且可能存在溢出,與大小相關(guān)的標(biāo)志位有:SF、ZF和OF。符號數(shù)A減去符號數(shù)B時,不發(fā)生溢出(OF=1)時,如果SF=0,則A>B;如果SF=1,則A<B。發(fā)生溢出(OF=1)時,如果SF=1,則A>B;如果SF=0,則A<B。5)求補(bǔ)指令格式:NEGdest 功能:(dest)←0-(dest) 該指令執(zhí)行后,把操作數(shù)按位求反,末位加1后送回操作數(shù)。目標(biāo)操作數(shù)可以是通用寄存器或存儲器操作數(shù)。該指令執(zhí)行后,影響標(biāo)志:CF、PF、AF、ZF、SF和OF。若操作數(shù)是-128D或-32768D,則OF=1。若操作數(shù)是非0值,則CF=1;若操作數(shù)是0,則CF=0。例如:MOVDL,01111000B ;DL=120DNEGDL;DL=0-01111000=10001000B=-120D乘法指令:8086/8088可完成字節(jié)與字節(jié)乘、字與字乘。指令中給出乘數(shù),被乘數(shù)隱含。乘數(shù)可以是寄存器或內(nèi)存操作數(shù),不能為立即數(shù)。字節(jié)乘時,乘積的高8位存于寄存器AH中,低8位存于寄存器AL中。字乘時,被乘數(shù)隱含為寄存器AX,乘積的高16位存于寄存器DX中,低16位存于寄存器AX中。1)無符號數(shù)乘法指令格式:MULsrc功能:當(dāng)src為字節(jié)時,AX←ALsrc;當(dāng)src為字時,(DX,AX)←AXsrc說明:乘法指令僅影響標(biāo)志位OF,CF,對其他標(biāo)志位無意義。字節(jié)乘時,如果AH=0,則OF=CF=0;如果AH0,OF=CF=1。字乘時,如果DX=0,則OF=CF=0;DX0,OF=CF=1。例如:MULWORDPTR[SI];無符號乘法,AX乘以由SI尋址的數(shù)據(jù)段存儲單元的字內(nèi)容,積在DX-AX中2)符號乘法指令格式:IMULsrc 功能:當(dāng)src為字節(jié)時,AX←ALsrc;當(dāng)src為字時,(DX,AX)←AXsrc說明:乘法指令僅影響標(biāo)志位OF,CF,對其他標(biāo)志位無意義。符號數(shù)乘時,當(dāng)積的高8位(字節(jié)乘)或積的高16位(字乘)是低字節(jié)(字節(jié)乘)或低字(字乘)的符號擴(kuò)展時,OF=CF=0;否則,OF=CF=1。例如:IMULCL ;符號乘法,AL乘以CL,積在AX中除法指令:8086/8088可完成除數(shù)為字節(jié)和除數(shù)為字的兩種除法。指令中給出除數(shù),被除數(shù)隱含。除數(shù)可以是寄存器或內(nèi)存操作數(shù),不能為立即數(shù)。除數(shù)為字節(jié)時,被除數(shù)必須為16位,隱含為寄存器AX,商存于寄存器AL中,余數(shù)存于寄存器AH中;除數(shù)為字時,被除數(shù)必須為32位,隱含為寄存器DX,AX,商存于寄存器AX中,余數(shù)存于寄存器DX中。除法指令說明:所有標(biāo)志位在除法運(yùn)算無溢出時沒有意義。除法“溢出”,是指除數(shù)為字節(jié)時,商大于0FFH或除數(shù)為字時,商大于0FFFFH。當(dāng)發(fā)生除法溢出時,OF=1,并產(chǎn)生0型中斷(溢出中斷)。1)無符號除法指令格式:DIVsrc功能:當(dāng)src為字節(jié)時,AL←AX(src)的商,AH←AX(src)的余數(shù);當(dāng)src為字時,AX←DXAX(src)的商,DX←DXAX(src)的余數(shù)。說明:src可以為寄存器或內(nèi)存操作數(shù)。例如:DIVBYTEPTR[BP];AL←AX(SS:BP)的商,AH←AX(SS:BP)的余數(shù)2)符號除法指令格式:IDIVsrc功能:當(dāng)src為字節(jié)時,AL←AX(src)的商,AH←AX(src)的余數(shù);當(dāng)src為字時,AX←DXAX(src)的商,DX←DXAX(src)的余數(shù)。
src可以為寄存器或內(nèi)存操作數(shù)。符號數(shù)除法中,商的符號遵循除法法則,余數(shù)的符號與被除數(shù)一致。例如:IDIVBL;AL←AX(BL)的有符號商,AH←AX(BL)的余數(shù)位運(yùn)算指令分為:邏輯運(yùn)算指令;移位指令;循環(huán)移位指令.邏輯運(yùn)算指令:邏輯非(NOT);邏輯與(AND);邏輯測試(TEST);邏輯或(OR);邏輯異或(XOR)指令.這些邏輯運(yùn)算指令的操作數(shù)可以是8位、16位,運(yùn)算按位進(jìn)行。對操作數(shù)的規(guī)定與MOV指令相同。(1)邏輯非指令格式:NOTdest 功能:(dest)←(dest)說明:不影響標(biāo)志位。(2)邏輯與指令格式:ANDdest,src功能:(dest)←(dest)(src) 說明:對標(biāo)志位的影響是:CF、OF清零;影響SF、ZF、PF;AF的值不定。(3)邏輯測試指令格式:TESTdest,src 功能:(dest)(src) 說明:執(zhí)行相與操作,以便影響標(biāo)志位,但不保留結(jié)果。對標(biāo)志位的影響是:CF、OF清零;影響SF、ZF、PF;AF的值不定。(4)邏輯或指令格式:ORdest,src 功能:(dest)←(dest)(src) 說明:對標(biāo)志位的影響是:CF、OF清零;影響SF、ZF、PF;AF的值不定。(5)邏輯異或指令格式:XORdest,src功能:(dest)←(dest)⊕(src) 說明:對標(biāo)志位的影響是:CF、OF清零;影響SF、ZF、PF;AF的值不定。例如:ANDAL,BL ;AL←ALBLXORAX,[DI]ORBX,0FF02H ;(BX)←(BX)FF02HNOTBYTEPTR[BX] ;字節(jié)內(nèi)容求反TESTAH,4;AH4,AH不變,只改變標(biāo)志移位指令:移位指令可以對寄存器或存儲單元的內(nèi)容按字節(jié)或字進(jìn)行操作。(1)邏輯左移指令格式:SHLdest,CNT 功能:目標(biāo)操作數(shù)左移CNT次,最低位補(bǔ)0,最高位移至標(biāo)志位CF中。說明:CNT代表移動次數(shù)。當(dāng)CNT>1時,必須由寄存器CL說明。CF、ZF、SF、PF的值由運(yùn)算結(jié)果定。CNT=1時,若移位后符號位發(fā)生變化,則標(biāo)志位OF=1,否則OF=0。CNT>1時,對OF無定義。(2)邏輯右移指令格式:SHRdest,CNT 功能:目標(biāo)操作數(shù)右移CNT次,最低位移至標(biāo)志位CF中,最高位補(bǔ)0。說明:CNT代表移動次數(shù)。當(dāng)CNT>1時,必須由寄存器CL說明。CF、ZF、SF、PF的值由運(yùn)算結(jié)果定。CNT=1時,若移位后符號位發(fā)生變化,則標(biāo)志位OF=1,否則OF=0。CNT>1時,對OF無定義。(3)算術(shù)左移指令格式:SALdest,CNT 功能:目標(biāo)操作數(shù)左移CNT次,最低位補(bǔ)0,最高位移至標(biāo)志位CF中。 說明:CNT代表移動次數(shù)。當(dāng)CNT>1時,必須由寄存器CL說明。CF、ZF、SF、PF的值由運(yùn)算結(jié)果定。CNT=1時,若移位后符號位發(fā)生變化,則標(biāo)志位OF=1,否則OF=0。CNT>1時,對OF無定義。(4)算術(shù)右移指令格式:SARdest,CNT 功能:目標(biāo)操作數(shù)右移CNT次,最低位移至標(biāo)志位CF中,最高位不變。說明:CNT代表移動次數(shù)。當(dāng)CNT>1時,必須由寄存器CL說明。CF、ZF、SF、PF的值由運(yùn)算結(jié)果定。CNT=1時,若移位后符號位發(fā)生變化,則標(biāo)志位OF=1,否則OF=0。CNT>1時,對OF無定義。例如,分別給出下列移位指令執(zhí)行結(jié)果。設(shè)AL=0B4H=10110100B,CF=1,CL=4。SALAL,1 ;AL=01101000B,CF=1,OF=1SARAL,1 ;AL=11011010B,CF=0,OF=0SHLAL,1 ;AL=01101000B,CF=1,OF=1SHRAL,CL ;AL=00001011B,CF=0,OF無定義移位指令的使用說明:這組指令除了可以實(shí)現(xiàn)基本的移位操作外,還可以用于實(shí)現(xiàn)數(shù)倍增(左移)或倍減(右移),使用這種方法比直接使用乘、除法效率要高得多。在不溢出的情況下,可用邏輯移位指令實(shí)現(xiàn)無符號數(shù)的乘、除,算術(shù)移位指令實(shí)現(xiàn)符號數(shù)的乘、除。循環(huán)移位指令:(1)不帶進(jìn)位位循環(huán)左移指令格式:ROLdest,CNT 功能:目標(biāo)操作數(shù)循環(huán)左移CNT次,最高位移至最低位的同時移至標(biāo)志位CF中。說明:CNT代表移動次數(shù)。CNT>1時,必須由寄存器CL說明。CF由運(yùn)算結(jié)果定;不影響SF、ZF、AF、PF;對OF的影響同SHL。(2)不帶進(jìn)位位循環(huán)右移指令格式:RORdest,CNT 功能:目標(biāo)操作數(shù)循環(huán)右移CNT次,最低位移至最高位的同時移至標(biāo)志位CF中。
說明:CNT代表移動次數(shù),CNT>1時,必須由寄存器CL說明。CF由運(yùn)算結(jié)果定;不影響SF、ZF、AF、PF;對OF的影響同SHL。(3)帶進(jìn)位位循環(huán)左移指令格式:RCLdest,CNT功能:目標(biāo)操作數(shù)及標(biāo)志位CF一起循環(huán)左移CNT次,最高位移至標(biāo)志位中,標(biāo)志位移至最低位。 說明:CNT代表移動次數(shù),CNT>1時,必須由寄存器CL說明。CF由運(yùn)算結(jié)果定;不影響SF、ZF、AF、PF;對OF的影響同SHL。(4)帶進(jìn)位位循環(huán)右移指令格式:RCRdest,CNT功能:目標(biāo)操作數(shù)及標(biāo)志位CF一起循環(huán)右移CNT次,最低位移至標(biāo)志位中,標(biāo)志位移至最高位。說明:CNT代表移動次數(shù),CNT>1時,必須由寄存器CL說明。CF由運(yùn)算結(jié)果定;不影響SF、ZF、AF、PF;對OF的影響同SHL。例如,設(shè)AL=01010100B,CF=1,CL=4,則:ROLAL,1 ;AL=10101000B,CF=0,OF=1RORAL,1 ;AL=00101010B,CF=0,OF=0RCLAL,1 ;AL=10101001B,CF=0,OF=1RCRAL,CL ;AL=10010101B,CF=0,OF無定義串操作指令:所謂“串”是指一組數(shù)據(jù)。串操作指令的操作對象不是一字節(jié)或一個字,而是內(nèi)存中地址連續(xù)的一組字節(jié)或一組字。在默認(rèn)的情況下,串操作指令的源串存于數(shù)據(jù)段,目標(biāo)串存于附加段。在每一次基本操作后,能夠自動修改源及目標(biāo)地址為下一次操作做好準(zhǔn)備。串操作指令前通常加上重復(fù)前綴,此時,基本操作在滿足條件的情況下得到重復(fù),直至完成預(yù)設(shè)次數(shù)?;敬僮髦噶?(1)串傳送指令格式一:MOVSdest,src格式二:MOVSB格式三:MOVSW功能:(ES:DI)←(DS:SI);SI←SI+1/2;DI←DI+1/2說明:格式一中的dest,src僅為了增加程序的可讀性。字節(jié)操作時,使用格式二,地址調(diào)整量是1;字操作時,使用格式三,地址調(diào)整量是2。地址是增或減由標(biāo)志位DF決定:DF=0,地址增;DF=1,地址減。尋址方式規(guī)定為寄存器間接尋址:源操作數(shù)隱含為數(shù)據(jù)段,偏移地址由寄存器SI指明,允許段超越。目標(biāo)操作數(shù)隱含為附加段,偏移地址由寄存器DI指明,不允許段超越。(2)串比較指令格式一:CMPSsrc,dest格式二:CMPSB格式三:CMPSW 功能:(DS:SI)-(ES:DI);SI←SI+1/2;DI←DI+1/2重復(fù)前綴指令:基本串操作指令完成一個數(shù)據(jù)的操作,如果要操作一組數(shù)據(jù),就需要在基本串操作指令前加上重復(fù)前綴。重復(fù)前綴指明該指令的基本操作是否被重復(fù)、重復(fù)的條件是什么?;静僮鞯闹貜?fù)次數(shù)隱含在寄存器CX中。(1)無條件重復(fù)前綴指令格式:REP功能:REP前綴加在串指令MOVS、STOS之前,控制串指令重復(fù)執(zhí)行。串指令重復(fù)執(zhí)行的次數(shù)保存在寄存器CX中。每執(zhí)行一次串指令,CX←(CX)-1,直到CX=0為止。(2)相等重復(fù)前綴指令格式一:REPE格式二:REPZ功能:REPZ或REPE前綴加在串指令CMPS、SCAS指令前,控制串指令重復(fù)執(zhí)行。當(dāng)(CX)≠0且ZF=1時,串指令重復(fù)執(zhí)行;當(dāng)(CX)=0或ZF=0時,串指令重復(fù)執(zhí)行結(jié)束。(3)不相等重復(fù)前綴REPNE或REPNZ格式一:REPNE格式二:REPNZ功能:REPNZ或REPNE前綴加在串指令CMPS、SCAS指令前,控制串指令重復(fù)執(zhí)行。當(dāng)(CX)≠0且ZF=0時,串指令重復(fù)執(zhí)行;當(dāng)(CX)=0或ZF=1時,串指令重復(fù)執(zhí)行結(jié)束。說明:帶前綴的串操作指令執(zhí)行后,CX-1操作不影響標(biāo)志位??刂妻D(zhuǎn)移指令:8086程序的執(zhí)行順序由代碼段寄存器CS和指令指針寄存器IP的值決定。程序可以按順序執(zhí)行,也可以根據(jù)情況改變程序的執(zhí)行順序??刂妻D(zhuǎn)移指令就是通過改變CS和IP的值來實(shí)現(xiàn)程序的轉(zhuǎn)移??刂妻D(zhuǎn)移指令根據(jù)程序轉(zhuǎn)移地址的不同,分為段內(nèi)轉(zhuǎn)移和段間轉(zhuǎn)移。段內(nèi)轉(zhuǎn)移是指程序在同一代碼段內(nèi)轉(zhuǎn)移,這時只要改變IP的值。段間轉(zhuǎn)移指程序?qū)⑥D(zhuǎn)移到其他段,此時CS和IP的值同時改變。//無條件轉(zhuǎn)移指令:無條件轉(zhuǎn)移指令執(zhí)行后,程序無條件轉(zhuǎn)移到段內(nèi)由指令中給出的目標(biāo)地址處。(1)段內(nèi)直接轉(zhuǎn)移指令格式一:JMP標(biāo)號格式二:JMP立即數(shù)指令完成的操作:IP←(IP)+以標(biāo)號或立即數(shù)給出的偏移量,(CS)不變。例如:JMP2010H ;IP←2010HJMPSHORT L ;IP←(IP)+8位移量JMPNEAR NEXT ;IP←(IP)+16位移量(2)段內(nèi)間接轉(zhuǎn)移指令格式一:JMP寄存器格式二:JMP存儲單元指令完成的操作:(IP)←寄存器或存儲單元的值,(CS)不變。例如:JMPBX ;IP←(BX)JMPWORDPTR[SI] ;IP←(DS:SI)(3)段間直接轉(zhuǎn)移格式:JMP FAR PTR標(biāo)號指令完成的操作:(IP)←標(biāo)號所在存儲單元的偏移地址,(CS)←標(biāo)號所在存儲單元的段地址。例如:JMPFARPTRNEXT ;(IP)←標(biāo)號NEXT的偏移地址 ;(CS)←標(biāo)號NEXT的段地址(4)段間間接轉(zhuǎn)移格式:JMPDWORDPTR存儲單元指令完成的操作:(IP)←標(biāo)號指出的雙字存儲單元的低16位,(CS)←標(biāo)號給出的雙字存儲單元的高16位。例如:JMPDWORDPTR[SI] ;IP←(DS:SI),CS←(DS:SI+2)//條件轉(zhuǎn)移指令:格式:Jcc標(biāo)號功能:以標(biāo)志位的狀態(tài)作為轉(zhuǎn)移依據(jù)。如果滿足轉(zhuǎn)移條件,則轉(zhuǎn)移到標(biāo)號指示的指令處;否則,順序執(zhí)行下一條指令。說明:cc代表跳轉(zhuǎn)條件,short-label表明該指令只能實(shí)現(xiàn)段內(nèi)短轉(zhuǎn)移,參數(shù)形式通常為符號地址。根據(jù)單個標(biāo)志位的狀態(tài)判斷的轉(zhuǎn)移指令根據(jù)兩個無符號數(shù)的比較結(jié)果判斷的轉(zhuǎn)移指令(3)根據(jù)兩個帶符號數(shù)的比較結(jié)果判斷的轉(zhuǎn)移指令(4)若CX為0則轉(zhuǎn)移的轉(zhuǎn)移指令格式:JCXZ目標(biāo)地址功能:當(dāng)(CX)=0時,程序轉(zhuǎn)移至目標(biāo)地址處。例如:CMPCX,0JCXZZ
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程建設(shè)招標(biāo)投標(biāo)合同范本
- 防水項(xiàng)目招標(biāo)文件范本格式
- 混凝土分包工程勞務(wù)分包合同
- 裝卸作業(yè)服務(wù)協(xié)議樣本
- 公共設(shè)施消防改造協(xié)議
- 怎樣正確簽訂勞務(wù)分包合同
- 安全技術(shù)支持招標(biāo)
- 標(biāo)準(zhǔn)個人無抵押貸款合同協(xié)議書
- 鍋爐房安全評估招標(biāo)案例
- 云端服務(wù)訂閱合同
- 手機(jī)音腔設(shè)計指南
- 某機(jī)械廠降壓變電所的電氣設(shè)計參考(電氣工程課程設(shè)計)
- 鋼結(jié)構(gòu)基本原理試習(xí)題及答案
- 同分異構(gòu)現(xiàn)象和同分異構(gòu)體
- 公安局輔警人員登記表
- 賽事活動閉幕式及頒獎儀式流程及執(zhí)行腳本
- (完整word版)網(wǎng)絡(luò)優(yōu)化測試報告
- 《金字塔原理》
- 無機(jī)材料科學(xué)基礎(chǔ)教程(第二版)課后答案
- 第《6》章層壓成型工藝
- 海船工作時間表及休息記錄表
評論
0/150
提交評論