




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、An Introduction to Database System微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用廣西廣西師范師范學(xué)院學(xué)院職業(yè)職業(yè)技術(shù)技術(shù)教育教育學(xué)院學(xué)院廣西師范學(xué)院職業(yè)技術(shù)教育學(xué)院廣西師范學(xué)院職業(yè)技術(shù)教育學(xué)院 第三章第三章80868086指令系統(tǒng)指令系統(tǒng)第三章第三章 8086/80888086/8088的指令系統(tǒng)的指令系統(tǒng)3.1 8086的尋址方式3.2 指令的機(jī)器碼表示方式3.3 8086的指令系統(tǒng)3.1 80863.1 8086的尋址方式的尋址方式一、立即尋址二、寄存器尋址三、直接尋址四、寄存器間接尋址五、變址尋址六、基址加變址尋址 計(jì)算機(jī)的指令一般由操作碼和操作數(shù)組成,操作碼
2、規(guī)定了指令的功能;而操作數(shù)則規(guī)定了指令操作的對象。操作數(shù)可以以立即數(shù)的形式存放在指令中,但在大多數(shù)情況下,操作數(shù)是以地址的形式存放在指令(指示操作數(shù)在哪兒)。用于說明操作數(shù)所在地址的方法稱為尋址方式。 在微機(jī)中,操作數(shù)存放在: 1、在指令中;2、在CPU的某一內(nèi)部寄存器中;3、在內(nèi)存的數(shù)據(jù)區(qū)中;4、I/O端口。 在8086CPU中,內(nèi)存地址是由數(shù)據(jù)段地址和段內(nèi)偏移量組成。而指令中規(guī)定的地址即為段內(nèi)偏移量(邏輯地址)有效地址EA,有效地址EA構(gòu)成的方法不同,則為不同的尋址方式。80868086的尋址方式的尋址方式 操作數(shù)操作數(shù)(8位或位或16的的常數(shù))常數(shù))直接包含在指令直接包含在指令中,緊跟在
3、操作碼后面中,緊跟在操作碼后面,與操作碼一起放在代,與操作碼一起放在代碼段區(qū)域中。操作數(shù)碼段區(qū)域中。操作數(shù)im既可是既可是8位的,也可是位的,也可是16位的。位的。例:MOV AX,im MOV AL,26H一、立即尋址方式一、立即尋址方式(Immediate Addreing)Immediate Addreing)操作碼imLimH碼段M AXAH ALimHimL二、寄存器尋址二、寄存器尋址(Register Addreing)Register Addreing)例:MOV DS,AXAXDS操作數(shù)放在指令規(guī)定的寄存器中。操作數(shù)放在指令規(guī)定的寄存器中。 操作數(shù)的有效地址EA是指令的一部分,
4、它與操作碼一起放在代碼段區(qū)域中。 操作數(shù)的物理地址為數(shù)據(jù)段寄存器DS加上16位地址偏移量。例:若(DS)=3000H MOV AX,2000H指令中存儲單元的地址也可用符號地址表示。例:AREA1 DW 0867H MOV AX,AREA1注意區(qū)分: AREA1 EQU 0867H MOV AX,AREA1502000操作碼30300003200032001碼段數(shù)據(jù)段AHAL3050三、直接尋址方式三、直接尋址方式(Direct Addreing)(Direct Addreing) 操作數(shù)在存儲單元中。操作數(shù)的有效地址EA在指令碼所指定的寄存器中。可作為間址的寄存器有SI、DI、BX、BP,若
5、:1、操作數(shù)在數(shù)據(jù)段DS中:則以寄存器BX、SI或DI間接尋址。2、操作數(shù)在堆棧段中:則以寄存器BP間接尋址。例:若(DS)=2000H,(SI)=1000H MOV AX,SIA0操作碼50200002100021001AX碼段數(shù)據(jù)段AH AL50A0四、寄存器間接尋址方式四、寄存器間接尋址方式(Register Indirect Addreing)(Register Indirect Addreing)四、寄存器間接尋址方式四、寄存器間接尋址方式 ( (續(xù)續(xù)) )(Register Indirect Addreing)(Register Indirect Addreing) 3、指令中可以
6、使用段超越前綴。如:MOV BX , DS:BPMOV AX , ES:SI 操作數(shù)在存儲單元中。操作數(shù)的有效地址是以指令指定的寄存器內(nèi)容加上指令中給定的8位或16位位移量。操作碼503000操作碼30300003500035001AX碼段數(shù)據(jù)段例:若(DS)=3000H,(SI)=2000H,COUNT=3000H MOV AX,COUNT SI或 MOV AX, COUNT SI 若指令指定的寄存器是BX、SI或DI,段寄存器使用DS; 若指令指定的寄存器是BP, 則段寄存器使用SS。3050物理地址16DSSICOUNT 30000H+2000H+3000H =35000H五、寄存器相對
7、尋址方式五、寄存器相對尋址方式(Register Relative Addreing)(Register Relative Addreing) 操作數(shù)在存儲單元中。操作數(shù)的有效地址是一個(gè)基址寄存器(BX或BP)和一個(gè)變址寄存器(SI或DI)的內(nèi)容之和,兩個(gè)寄存器均由指令指定。一般由基址寄存器決定所使用的段寄存器。六、基址變址尋址方式六、基址變址尋址方式(Based Indexed Addreing)(Based Indexed Addreing)若指令指定的寄存器是若指令指定的寄存器是BX,段寄存器使用,段寄存器使用DS;若指令指定的寄存器是若指令指定的寄存器是BP, 則段寄存器使用則段寄存器
8、使用SS。物理地址物理地址16DSBX+SI 或或 16DSBX+DI物理地址物理地址16SSBP+SI 或或 16SSBP+DI例:MOV AX ,BXSI若 DS=3000H,SI=2000H,BX=3000H,(35000H)=0ABCDH則:物理地址16DSBX+SI=35000H AX=0ABCDH 操作數(shù)在存儲單元中。操作數(shù)的有效地址是基址寄存器(BX或BP)內(nèi)容加上變址寄存器(SI或DI)的內(nèi)容、再加上指令中指定的8位或16位位移量。一般由基址寄存器決定所使用的段寄存器。七、相對基址變址尋址方式七、相對基址變址尋址方式(Relative Based Indexed Addrein
9、g)(Relative Based Indexed Addreing) 若指令指定的寄存器是BX,段寄存器使用DS; 物理地址16DSBX+SI8位或16位位移量 或 16DSBX+DI 8位或16位位移量若指令指定的寄存器是BP, 則段寄存器使用SS 物理地址16SSBP+SI 8位或16位位移量 或 16SSBP+DI 8位或16位位移量例: MOV AX,COUNT BX SI若:若: DS=3000H,SI=0300H,BX=1500H, COUNT 0200H,(31A00H)=26BFH則:則:物理地址16DSBX+SI COUNT = 31A00H AX=26BFH* 立即數(shù)可以
10、出現(xiàn)在方括號內(nèi),表示直接地址;1 1、指令中使用方括號的地址表達(dá)式必須遵循下列規(guī)則:、指令中使用方括號的地址表達(dá)式必須遵循下列規(guī)則:* 只有SI、BP、DI、BX可以出現(xiàn)在方括號內(nèi),它們可以單獨(dú)出現(xiàn),也可以相加后出現(xiàn),或以寄存器與立即數(shù)相加的形式出現(xiàn),但BX和BP或SI和DI不能同時(shí)出現(xiàn)在同一個(gè) 內(nèi),SI和DI也不能同時(shí)出現(xiàn);* 方括號有相加的含義,下面幾種寫法都是等價(jià)的: 1200BXSI BX+1200SI BX+ SI +1200* 方括號內(nèi)包含BP,則隱含使用SS提供基地址;其余情況均使用DS提供基地址。需說明的幾個(gè)問題需說明的幾個(gè)問題2、段超越:、段超越:在8088系統(tǒng)中,數(shù)據(jù)通常在
11、數(shù)據(jù)段中,但若需要,數(shù)據(jù)也可存放在碼段,堆棧段以及附加段中,這種情況就是段超越。應(yīng)用時(shí),需在指令中加以說明。存儲器操作的類型約定段允許超越段邏輯地址取指令CS無IP堆棧操作SS無SP通用數(shù)據(jù)讀寫DSCS、ES、SSEA源數(shù)據(jù)串DSCS、ES、SSSI目的數(shù)據(jù)串ES無DI用 BP 作為基寄存器SSCS、DS、ESEA例:MOV AX,ES:0500HES表示數(shù)據(jù)在附加段中; : 是修改屬性運(yùn)算符。需說明的幾個(gè)問題需說明的幾個(gè)問題 (續(xù))(續(xù))3 3、其它尋址方式、其它尋址方式(1)隱含尋址:指令中不指明操作數(shù)(2)I/O端口尋址:8086有直接端口尋址和間接端口尋址兩種方式,端口尋址范圍分別為0
12、0FFH和0FFFFH。(3)轉(zhuǎn)移類指令尋址(4)一條指令有幾種尋址方式需說明的幾個(gè)問題需說明的幾個(gè)問題 (續(xù))(續(xù))第三章第三章 8086/80888086/8088的指令系統(tǒng)的指令系統(tǒng)3.1 8086的尋址方式3.2 指令的機(jī)器碼表示方式3.3 8086的指令系統(tǒng)3.2 指令的機(jī)器碼表示方式 匯編語言匯編語言(Assembly Language)是面向機(jī)器的程序設(shè)計(jì)語是面向機(jī)器的程序設(shè)計(jì)語言。在匯編語言中,用助記符言。在匯編語言中,用助記符(Memoni)代替操作碼,用地址代替操作碼,用地址符號符號(Symbol)或標(biāo)號或標(biāo)號(Label)代替地址碼。這樣用符號代替機(jī)代替地址碼。這樣用符號
13、代替機(jī)器語言的二進(jìn)制碼。就把機(jī)器語音變成了匯編語言。于是匯器語言的二進(jìn)制碼。就把機(jī)器語音變成了匯編語言。于是匯編語言亦稱為符號語言。編語言亦稱為符號語言。 使用匯編語言編寫的程序,機(jī)器不能直接識別,要由一使用匯編語言編寫的程序,機(jī)器不能直接識別,要由一種程序?qū)R編語言翻譯成種程序?qū)R編語言翻譯成機(jī)器語言機(jī)器語言,這種起翻譯作用的程序,這種起翻譯作用的程序叫叫匯編程序匯編程序,匯編程序是系統(tǒng)軟件中語言處理系統(tǒng)軟件。,匯編程序是系統(tǒng)軟件中語言處理系統(tǒng)軟件。匯匯編語言把匯編程序翻譯成機(jī)器語言的過程稱為匯編。編語言把匯編程序翻譯成機(jī)器語言的過程稱為匯編。 匯編語言比機(jī)器語言易于讀寫、易于調(diào)試和修改,同
14、時(shí)匯編語言比機(jī)器語言易于讀寫、易于調(diào)試和修改,同時(shí)也具有機(jī)器語言執(zhí)行速度快,占內(nèi)存空間少等優(yōu)點(diǎn),但在編也具有機(jī)器語言執(zhí)行速度快,占內(nèi)存空間少等優(yōu)點(diǎn),但在編寫復(fù)雜程序時(shí)具有明顯的局限性,匯編語言依賴于具體的機(jī)寫復(fù)雜程序時(shí)具有明顯的局限性,匯編語言依賴于具體的機(jī)型,不能通用,也不能在不同機(jī)型之間移植。型,不能通用,也不能在不同機(jī)型之間移植。 第三章第三章 8086/80888086/8088的指令系統(tǒng)的指令系統(tǒng)3.1 8086的尋址方式3.2 指令的機(jī)器碼表示方式3.3 8086的指令系統(tǒng)一、數(shù)據(jù)傳送指令二、算術(shù)運(yùn)算指令三、邏輯運(yùn)算指令四、串操作指令五、控制轉(zhuǎn)移指令六、處理器控制指令3.3 808
15、63.3 8086的指令系統(tǒng)的指令系統(tǒng)3.3 80863.3 8086的指令系統(tǒng)的指令系統(tǒng) 8088的指令系統(tǒng)可以分為六個(gè)功能組:數(shù)據(jù)傳送算術(shù)運(yùn)算邏輯運(yùn)算串操作控制傳送處理器控制一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(一)通用傳送指令(一)通用傳送指令功能:將源操作數(shù)的一個(gè)字節(jié)(功能:將源操作數(shù)的一個(gè)字節(jié)(B)或一個(gè))或一個(gè)字(字(W)傳送到目的操作數(shù)所指的單元。)傳送到目的操作數(shù)所指的單元。說明:說明:* 指令中至少要有一項(xiàng)明確指令中至少要有一項(xiàng)明確指出傳送的是字節(jié)還是字;指出傳送的是字節(jié)還是字; * 可用不同的尋址方式;可用不同的尋址方式; * 不影響標(biāo)志位;不影響標(biāo)志位; * 源操作數(shù)不變;源
16、操作數(shù)不變; *存儲器之間,立即數(shù)與段寄存存儲器之間,立即數(shù)與段寄存器,段寄存器之間不能用一條指令器,段寄存器之間不能用一條指令完成數(shù)據(jù)傳送。完成數(shù)據(jù)傳送。1 1、 MOV OPRD1MOV OPRD1,OPRD2OPRD2源操作數(shù)目的操作數(shù)立即數(shù)存儲器段寄存器DS、ES、SS通 用指 針變 址寄 存器MOVMOV指令允許傳送數(shù)指令允許傳送數(shù)據(jù)的途徑如下圖所示據(jù)的途徑如下圖所示例例 3-24 MOV AL , B 將字符將字符B的的ASC碼碼(42H)(42H)傳送到傳送到ALAL例例 3-25 3-25 MOV AX , DATA MOV AX , DATA MOV DS , AX MOV
17、DS , AX 數(shù)據(jù)段賦值,數(shù)據(jù)段賦值,存儲器之間,立即數(shù)與段寄存儲器之間,立即數(shù)與段寄存器,段寄存器之間不能用一條指令完成數(shù)據(jù)存器,段寄存器之間不能用一條指令完成數(shù)據(jù)傳送。傳送。 一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(一)通用傳送指令(一)通用傳送指令 (續(xù))(續(xù))例例 : MOV BYTE PTR BX , 10H 將將10H傳送到傳送到BX ,字節(jié)傳送字節(jié)傳送 MOV WORD PTR BX , 10H 將將0010H傳送到傳送到BX ,字傳送字傳送 一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(一)通用傳送指令(一)通用傳送指令 (續(xù))(續(xù)) 將立即數(shù)傳送到將立即數(shù)傳送到存儲器時(shí)存儲器時(shí), ,要使用修
18、改屬性要使用修改屬性運(yùn)算符運(yùn)算符PTRPTR,可以通過,可以通過PTRPTR指明存入指明存入字節(jié)還是字。字節(jié)還是字。 數(shù)據(jù)段說明舉例數(shù)據(jù)段說明舉例: : DATA SEGMENT ;數(shù)據(jù)段說明開始AREA1 DB 14H,3BHAREA2 DB 3 DUP(0)ARRAY DW 3100H,01A6HSTRING DB GOODDATA ENDS ;數(shù)據(jù)段說明結(jié)束AREA1 14 3BAREA1 000000ARRAY0031A601STRINGGOOD 一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(一)通用傳送指令(一)通用傳送指令 (續(xù)續(xù))例例3-26:3-26: MOV AX , OFFSET AR
19、RAY其中其中OFFSET 為屬性操作符為屬性操作符該指令的功能是該指令的功能是:ARRAY的值的值(0005H)送送AX 一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(一)通用傳送指令(一)通用傳送指令 (續(xù)續(xù))例例3-27:3-27: MOV AL , AREA1 ;(AREA1) AL MOV AREA2 , AL ;( AL) AREA2 即即0002H單元單元2 2、堆棧操作指令、堆棧操作指令 進(jìn)棧指令 PUSH OPRD功能:將一個(gè)字的源操作數(shù)傳送至由SP所指向的堆棧的頂部.堆棧是以“ 先進(jìn)后出”的方式工作的一個(gè)存儲區(qū),操作:PUSH 操作時(shí),先修改SP 的值,使 SP 2 SP 后,把源操作
20、數(shù)(字)壓入堆棧中 SP 指示的位置上。OPRD可以是16位的通用寄存器,段寄存器,存儲器中的字。例:PUSH AX 指令執(zhí)行過程:指令執(zhí)行后AX=2A8CHSP 2000: 0130H2000: 012EH8CH指令執(zhí)行前AX=2A8CHSP 2000: 0130H2000: 0000H2000: 0000H2AHSP一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令 ( (續(xù)續(xù)) ) 出棧指令 POP OPRD功能:把當(dāng)前 SP 所指向的堆棧頂部的一個(gè)字送到指定的目的操作數(shù)中。(CS不能作為目的操作數(shù))操作:每執(zhí)行一次出棧操作,SP +2 SP ,指向新的棧頂。例:設(shè)SS=2000H,SP = 0130H,
21、(20130H)= 396EH,BX=4FAEH,執(zhí)行指令POP BX的過程如下圖所示:執(zhí)行指令前BX=4FAEH2000: 0000H2000: 0000H2000: 0130H2000: 0130HSP 2000: 0132HSP 執(zhí)行指令后BX=6EH39H72H72H39H6EH6EH39SP 2000: 0131H3 3、交換指令、交換指令指令格式:指令格式:XCHG OPRD1,OPRD2 功能:功能:把一個(gè)字或一個(gè)字節(jié)的源操作數(shù)與目的操作數(shù)交換。把一個(gè)字或一個(gè)字節(jié)的源操作數(shù)與目的操作數(shù)交換。 交換可在寄存器之間、寄存器與存儲器之間交換可在寄存器之間、寄存器與存儲器之間進(jìn)行。但段寄
22、存器不能作為操作數(shù),也不能直接進(jìn)行。但段寄存器不能作為操作數(shù),也不能直接交換兩個(gè)存儲單元中的內(nèi)容。交換兩個(gè)存儲單元中的內(nèi)容。一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(一)通用傳送指令(一)通用傳送指令 (續(xù)續(xù))例:設(shè)AX=31B0H,DS=3000H, BX=1800H,(31800H)= 1995H,執(zhí)行指令 XCHG AX, BX 的過程為:執(zhí)行指令前AX31B0H31800H31801H31800H31801H執(zhí)行指令后AX95H19H31HB0H1995H3 3、交換指令、交換指令( (續(xù)續(xù)) )一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(一)通用傳送指令(一)通用傳送指令 (續(xù)續(xù))一、數(shù)據(jù)傳送指令一、
23、數(shù)據(jù)傳送指令(二)累加器專用傳送指令(二)累加器專用傳送指令 1、輸入指令、輸入指令 IN指令格式:指令格式: IN AL,n 或 IN AX,n ;n為 255 的端口地址 IN AL,DX 或 IN AX,DX;端口地址放在DX中。 第一種格式,端口地址第一種格式,端口地址n n(00FFH00FFH)直接包含在)直接包含在ININ指令指令里,共允許尋址里,共允許尋址256256個(gè)端口。當(dāng)端口地址號大于個(gè)端口。當(dāng)端口地址號大于FFHFFH時(shí),必時(shí),必須用第二種尋址方式,即先將端口號送入須用第二種尋址方式,即先將端口號送入DXDX寄存器,再執(zhí)寄存器,再執(zhí)行輸入操作。行輸入操作。功能:功能:從
24、從8位端口讀入一個(gè)字節(jié)到位端口讀入一個(gè)字節(jié)到AL,或從,或從16位端口讀位端口讀入一個(gè)字到入一個(gè)字到AX。例:用IN指令從輸入端口讀取數(shù)據(jù)(1) IN AL,0E3H E3H端口9DHAL執(zhí)行指令前22H執(zhí)行指令后E3H端口9DHAL9DH(2) IN AX,80H執(zhí)行指令前80H端口81H端口5BH17HAX3355H執(zhí)行指令后80H端口81H端口5BH17HAX17 5BH一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(二)累加器專用傳送指令(二)累加器專用傳送指令 (續(xù)續(xù))1、輸入指令、輸入指令 IN (續(xù)續(xù))一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(二)累加器專用傳送指令(二)累加器專用傳送指令 (續(xù)續(xù))2
25、 2、輸出指令、輸出指令 OUTOUT指令格式:指令格式: OUT n ,AL 或 OUT n ,AX OUT DX,AL 或 OUT DX,AX功能:功能:將將AL中的一個(gè)字節(jié)寫到一個(gè)中的一個(gè)字節(jié)寫到一個(gè)8位端口,或把位端口,或把AX中中的一個(gè)字寫到一個(gè)的一個(gè)字寫到一個(gè)16位端口。位端口。例:用 OUT 指令對輸出端口進(jìn)行操作1) OUT 84H,AX執(zhí)行指令前84H85H66H77H端口AX3F46H執(zhí)行指令后84H85H端口AX3F46H2) MOV DX,300H OUT DX,AL 執(zhí)行指令前AL9AH端口300H 22H執(zhí)行指令后AL9AH端口300H 9AH46H3FH一、數(shù)據(jù)傳
26、送指令一、數(shù)據(jù)傳送指令(二)累加器專用傳送指令(二)累加器專用傳送指令 (續(xù)續(xù))2 2、輸出指令、輸出指令 OUT (OUT (續(xù)續(xù)) )3 3、換碼指令、換碼指令 XLAT ( XLAT (查表指令)查表指令)指令格式:指令格式:XLAT 功能功能:(:(BX)()(AL) AL 該指令執(zhí)行前,先把轉(zhuǎn)換表首地址的偏移量送入該指令執(zhí)行前,先把轉(zhuǎn)換表首地址的偏移量送入BX中,中,而把要查找表內(nèi)單元的偏移量(而把要查找表內(nèi)單元的偏移量(0255)送入)送入AL中。執(zhí)行中。執(zhí)行換碼指令后,把該單元的內(nèi)容送入換碼指令后,把該單元的內(nèi)容送入AL中。中。一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(二)累加器專用傳送
27、指令(二)累加器專用傳送指令 (續(xù)續(xù))例:若十進(jìn)制數(shù)字09 的 LED七段顯示碼對照表已存放在內(nèi)存中,表格的首地址為TABLE,用 XLAT 指令求數(shù)字5的七段顯示碼值程序如下: TABLE DB 40H, 79H, 24H, 30H, 19H DB 12H, 02H, 78H, 00H, 18H ; 建立七段顯示碼表格 5 表格首地址 12H MOV AL,5 ; AL MOV BX,OFFSET TABLE ; BX XLAT ; AL3 3、換碼指令、換碼指令 XLAT ( XLAT (查表指令)查表指令)一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(二)累加器專用傳送指令(二)累加器專用傳送指令
28、(續(xù)續(xù))一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(三)地址目的傳送指令(三)地址目的傳送指令 專用于傳送地址碼的指令,可用來傳送操作數(shù)的段地專用于傳送地址碼的指令,可用來傳送操作數(shù)的段地址和偏移地址,共包含以下三條指令:址和偏移地址,共包含以下三條指令:1 1、LEALEA取有效地址指令取有效地址指令指令格式:指令格式:LEA r , srcLEA r , src功能:功能:把源操作數(shù)的地址偏移量,傳送至目的操作數(shù)。把源操作數(shù)的地址偏移量,傳送至目的操作數(shù)。要求源操作數(shù)必須是一個(gè)內(nèi)存操作數(shù);目的操作數(shù)必須要求源操作數(shù)必須是一個(gè)內(nèi)存操作數(shù);目的操作數(shù)必須是一個(gè)除段寄存器以外的是一個(gè)除段寄存器以外的16位
29、寄存器。位寄存器。例:SI1000H,DS5000H,(51000H)1234H執(zhí)行指令 LEA BX, SI后,BX1000H執(zhí)行指令 MOV BX, SI后,BX1234H1 1、LEALEA取有效地址指令取有效地址指令 ( (續(xù)續(xù)) )一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(三)地址目的傳送指令(三)地址目的傳送指令 (續(xù)續(xù))指令 LEA BX,TABLE與指令 MOV BX,OFFSET TABLE是等價(jià)的執(zhí)行指令 LEA BX, TABLE執(zhí)行指令 MOV BX, OFFSET TABLE1 1、LEALEA取有效地址指令取有效地址指令 ( (續(xù)續(xù)) )例例: :一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳
30、送指令(三)地址目的傳送指令(三)地址目的傳送指令 (續(xù)續(xù)) LEA BX, 6DI1 1、LEALEA取有效地址指令取有效地址指令 ( (續(xù)續(xù)) )例例: :某數(shù)組有某數(shù)組有2020個(gè)元素個(gè)元素, ,每個(gè)元素占一個(gè)字節(jié)每個(gè)元素占一個(gè)字節(jié), ,設(shè)設(shè)DIDI指向數(shù)組的開頭處指向數(shù)組的開頭處. .若將第六個(gè)元素的偏若將第六個(gè)元素的偏移地址送到移地址送到BX,BX,則執(zhí)行指令應(yīng)為則執(zhí)行指令應(yīng)為: :一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(三)地址目的傳送指令(三)地址目的傳送指令 (續(xù)續(xù))2、LDS將雙字指針?biāo)椭噶钪付ǖ募拇嫫骱蛯㈦p字指針?biāo)椭噶钪付ǖ募拇嫫骱虳S指令指令指令格式:指令格式:LDS r,sr
31、c功能:功能:從源操作數(shù)指定的存儲單元中的雙字指針?biāo)偷綇脑床僮鲾?shù)指定的存儲單元中的雙字指針?biāo)偷街钢噶钪付钪付ǖ募拇嫫鳎ǔV付ǖ募拇嫫鳎ǔV付⊿I)及)及DS寄存器中。寄存器中。例:設(shè)例:設(shè)DS=1200H,(,(13450H)=3F46H,(,(13452H)=0A92H 執(zhí)行指令執(zhí)行指令 LDS SI, 1450H 后:后:SI = 3F46H, DS = 0A92H一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(三)地址目的傳送指令(三)地址目的傳送指令 (續(xù)續(xù))3 3、LESLES將雙字指針?biāo)偷郊拇嫫骱蛯㈦p字指針?biāo)偷郊拇嫫骱虴SES指令指令指令格式:指令格式:LES r,src功能:功能:從源操作數(shù)
32、指定的存儲單元中的雙字指針?biāo)偷街笍脑床僮鲾?shù)指定的存儲單元中的雙字指針?biāo)偷街噶钪付ǖ募拇嫫鳎ǔV付钪付ǖ募拇嫫鳎ǔV付―I)及)及ES寄存器中。寄存器中。例:設(shè)DS=0100H, BX=0020H, (01020H) =0300H, (01022H)= 0500H, ES= 3000H. DI = 0300H, ES = 0500H執(zhí)行指令 LES DI, BX 后一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(三)地址目的傳送指令(三)地址目的傳送指令 (續(xù)續(xù))(四)標(biāo)志寄存器傳送指令(四)標(biāo)志寄存器傳送指令1、LAHF 標(biāo)志送到標(biāo)志送到 AH指令指令指令格式:指令格式:LAHFLAHF功能:功能:把標(biāo)志
33、寄存器中的把標(biāo)志寄存器中的 SF、ZF、AF、PF和和CF分別送到分別送到AH寄存器的位寄存器的位7、6、4、2和和 0,位位5、3、1的內(nèi)容未定義。的內(nèi)容未定義。ODITSZAPC 15 12 11 10 9 8 7 6 5 4 3 2 1 0 AHFLAG操作示意圖一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令2 2、SAHF AHSAHF AH送標(biāo)志寄存器指令送標(biāo)志寄存器指令指令格式:指令格式:SAHFSAHF功能:功能:把寄存器把寄存器AH中的中的 7、6、4、2、0位傳送到標(biāo)志寄存器位傳送到標(biāo)志寄存器的的SF、ZF、AF、PF和和 CF位,高位標(biāo)志位,高位標(biāo)志 OF、DF、IF 和和 TF不受影響
34、。不受影響。(四)標(biāo)志寄存器傳送指令(四)標(biāo)志寄存器傳送指令一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令(四)標(biāo)志寄存器傳送指令(四)標(biāo)志寄存器傳送指令一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令3、PUSHF 標(biāo)志入棧指令標(biāo)志入棧指令指令格式:指令格式:PUSHF功能:功能:修改堆棧指針,使修改堆棧指針,使SP 2 SP,把整個(gè)標(biāo)志寄存器的把整個(gè)標(biāo)志寄存器的內(nèi)容壓入堆棧,內(nèi)容壓入堆棧,指令執(zhí)行后對標(biāo)志位無影響。指令執(zhí)行后對標(biāo)志位無影響。4 4、POPF POPF 標(biāo)志出棧指令標(biāo)志出棧指令指指令格式:令格式:POPFPOPF功能:功能:把當(dāng)前堆棧指針把當(dāng)前堆棧指針 SP 所指的一個(gè)字,傳送給標(biāo)志寄存所指的一個(gè)字,傳送
35、給標(biāo)志寄存器,并修改堆棧指針,使器,并修改堆棧指針,使 SP 2 SP 。 在過程(子程序)調(diào)用和中斷服務(wù)程序中,可用在過程(子程序)調(diào)用和中斷服務(wù)程序中,可用PUSHF和和POPF指令來保護(hù)和恢復(fù)標(biāo)志位。另外,這兩條指令也可用來指令來保護(hù)和恢復(fù)標(biāo)志位。另外,這兩條指令也可用來改變追蹤標(biāo)志改變追蹤標(biāo)志 TF (入棧,修改,出棧)(入棧,修改,出棧)(8088無直接改變無直接改變T標(biāo)志的指令)。標(biāo)志的指令)。(四)標(biāo)志寄存器傳送指令(四)標(biāo)志寄存器傳送指令一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令 80888088指令系統(tǒng)提供了加、減、乘、除指令系統(tǒng)提供了加、減、乘、除四種
36、基本運(yùn)算指令,可處理無符號或帶符號四種基本運(yùn)算指令,可處理無符號或帶符號的的8 8位或位或1616位二進(jìn)制數(shù)的算術(shù)運(yùn)算(帶符號位二進(jìn)制數(shù)的算術(shù)運(yùn)算(帶符號數(shù)是用補(bǔ)碼表示)。還提供了各種調(diào)整操作數(shù)是用補(bǔ)碼表示)。還提供了各種調(diào)整操作指令,故可進(jìn)行壓縮的或非壓縮的十進(jìn)制數(shù)指令,故可進(jìn)行壓縮的或非壓縮的十進(jìn)制數(shù)的算術(shù)運(yùn)算。絕大部分的算術(shù)運(yùn)算。絕大部分算術(shù)運(yùn)算指令都影響算術(shù)運(yùn)算指令都影響狀態(tài)標(biāo)志位狀態(tài)標(biāo)志位。(一)加法指令(一)加法指令1 1、ADD OPRD1ADD OPRD1,OPRD2OPRD2功能:將源和目的操作數(shù)相加,結(jié)果送到目的操功能:將源和目的操作數(shù)相加,結(jié)果送到目的操作數(shù)中,作數(shù)中,即
37、即OPRD1OPRD1OPRD2 OPRD2 OPRD1 OPRD1二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令(一)加法指令(一)加法指令 (續(xù)續(xù))2 2、ADC OPRD1ADC OPRD1,OPRD2OPRD2功能:功能:OPRD1OPRD2CF OPRD1 這兩條指令的源操作數(shù)這兩條指令的源操作數(shù)OPRD2可以是寄存器、存儲可以是寄存器、存儲器或立即數(shù),器或立即數(shù), 目的操作數(shù)目的操作數(shù)OPRD1只能用寄存器和存儲只能用寄存器和存儲單元。單元。 注意注意,源操作數(shù)和目的操作數(shù)不能同時(shí)為源操作數(shù)和目的操作數(shù)不能同時(shí)為存儲器存儲器,而且它們的而且它們的類型必須一致類型必須一致,即都是字節(jié)或字。,即都是
38、字節(jié)或字。 它們影響它們影響的標(biāo)志位為:的標(biāo)志位為:CF、OF、PF、SF、ZF和和AF。二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令(一)加法指令(一)加法指令 (續(xù)續(xù))二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令執(zhí)行指令執(zhí)行指令 ADD AX,CX;(;(AX)=5389H ,CF=1 ADC DX,BX;(;(DX)=1128H ,CF=0例:例:設(shè),(設(shè),(AX)= 7365H, (BX)=1025H, (CX)=0E024H (DX)=0102H結(jié)果:結(jié)果: (AX)=5389H , (DX)=1128H,(BX)=1025H,(CX)=0E024H 標(biāo)志位 SF =0, ZF =0, CF =0, OF
39、=0, AF =03、INC OPRD 增量指令(單操作數(shù))增量指令(單操作數(shù))功能:功能:對目的操作數(shù)加對目的操作數(shù)加1,結(jié)果送回目的操作數(shù)。,結(jié)果送回目的操作數(shù)。即即OPRD1 OPRD。目的操作數(shù)可以在通用寄存器或內(nèi)存中。目的操作數(shù)可以在通用寄存器或內(nèi)存中。指令執(zhí)行后影響AF、OF、PF、SF和ZF,但不影響CF。例:INC BL INC CX例:對內(nèi)存單元的內(nèi)容加1必須說明該單元的類型 INC BYTE PTRBX INC WORD PTRBX(一)加法指令(一)加法指令 (續(xù)續(xù))二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令4、AAA 未組合未組合BCD碼加法調(diào)整指令碼加法調(diào)整指令功能:功能:在用
40、在用ADD或或ADC指令對兩個(gè)未組合指令對兩個(gè)未組合BCD碼作加法后,碼作加法后,運(yùn)算結(jié)果已存在運(yùn)算結(jié)果已存在AL中,用中,用AAA指令對指令對AL中的數(shù)據(jù)進(jìn)行中的數(shù)據(jù)進(jìn)行調(diào)整,產(chǎn)生一個(gè)未組合的十進(jìn)制和放在調(diào)整,產(chǎn)生一個(gè)未組合的十進(jìn)制和放在AX中。中。例:實(shí)現(xiàn)兩個(gè)未組合十進(jìn)制數(shù)加法運(yùn)算。例:實(shí)現(xiàn)兩個(gè)未組合十進(jìn)制數(shù)加法運(yùn)算。 設(shè)設(shè)AL = 08H , BL = 07H ADD AL,BL;AAA ;AL = 0FHAX = 0105H未組合十進(jìn)制數(shù)的和放在未組合十進(jìn)制數(shù)的和放在AXAX中中(一)加法指令(一)加法指令 (續(xù)續(xù))二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令5、DAA 組合組合BCD碼加法調(diào)整指
41、令碼加法調(diào)整指令例:實(shí)現(xiàn)兩個(gè)組合十進(jìn)制數(shù)加法運(yùn)算。設(shè)AL =28H, BL =68H執(zhí)行 ADD AL,BL; AL = 90H, CF = 0, AF = 1 DAA ; AL06HAL,AL = 96H結(jié)果 AL = 96H, CF = 0, AF = 0功能:功能:將兩個(gè)組合將兩個(gè)組合BCD碼相加后,存放在碼相加后,存放在AL中的結(jié)果,調(diào)整中的結(jié)果,調(diào)整為正確的組合為正確的組合BCD數(shù)。數(shù)。 DAA指令要緊跟在指令要緊跟在ADD或或ADC指令之后使用,以實(shí)現(xiàn)組合的十進(jìn)制數(shù)加法運(yùn)算。指令之后使用,以實(shí)現(xiàn)組合的十進(jìn)制數(shù)加法運(yùn)算。(一)加法指令(一)加法指令 (續(xù)續(xù))二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)
42、算指令例:求兩個(gè)多字節(jié)無符號數(shù)之和。加數(shù)在DATA1開始的單元中,被加數(shù)在DATA2開始的單元中,字節(jié)長度為5,和存放在DATA2中。設(shè)置循環(huán)計(jì)數(shù)器0送CF,0送SI取加數(shù)送AL結(jié)束被加數(shù)+加數(shù)送DATA2修改循環(huán)次數(shù)及指針加完YN程序框圖:源程序段: MOV CX,5 MOV SI,0 CLCMOV AL,DATA1SILOP:ADC DATA2SI,ALINC SIDEC CXJNZ LOP HLT(二)減法指令二)減法指令 二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令1、SUB OPRD1,OPRD2功能:功能:OPRD1OPRD1 OPRD2 OPRD2 OPRD1 OPRD12、SBB OPRD
43、1,OPRD2 功能:功能:OPRD1 OPRD2 CF OPRD1這兩條指令均影響這兩條指令均影響AF、CF、OF、PF、SF和和ZF3、DEC OPRD 減量指令減量指令功能:OPRD 1OPRD執(zhí)行后執(zhí)行后不影響不影響 CF,但但影響影響 AF、OF、PF、SF和和ZF4、NEG OPRD 取負(fù)指令取負(fù)指令 功能:0 OPRD OPRD 若字節(jié)操作數(shù)為若字節(jié)操作數(shù)為80H80H( 128128),字操作數(shù)為),字操作數(shù)為8000H8000H( 3276832768),執(zhí)行),執(zhí)行NEGNEG指令后操作數(shù)無變化,但指令后操作數(shù)無變化,但OF =1OF =1。 如操作數(shù)為如操作數(shù)為0 0,執(zhí)
44、行該指令后,結(jié)果仍為,執(zhí)行該指令后,結(jié)果仍為0 0,且,且CF CF =0=0,否則,否則CF = 1CF = 1。(二)減法指令(二)減法指令 (續(xù)續(xù)) 二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令 指令執(zhí)行后影響指令執(zhí)行后影響AF、CF、OF、PF、SF和和 ZF。5、比較指令、比較指令 CMP OPRD1,OPRD2 功能:功能: 將目的操作數(shù)減去源操作數(shù),但不送結(jié)果,僅將目的操作數(shù)減去源操作數(shù),但不送結(jié)果,僅將結(jié)果反映在標(biāo)志位上,將結(jié)果反映在標(biāo)志位上, 接著可用條件轉(zhuǎn)移指令接著可用條件轉(zhuǎn)移指令決定程序的流向。決定程序的流向。例例2:已知(:已知(AL)= 80H 執(zhí)行指令執(zhí)行指令 CMP AL ,
45、 80H 執(zhí)行結(jié)果執(zhí)行結(jié)果 (AL)= 80H ZF=1(二)減法指令(二)減法指令 (續(xù)續(xù)) 二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令例例1:設(shè)(:設(shè)(DX)= 3A49H, CF =1 執(zhí)行指令執(zhí)行指令 SBB DX,1850H 執(zhí)行結(jié)果執(zhí)行結(jié)果 (DX)= 21F8H,CF=0 例例2:已知(:已知(AL)= 13H 執(zhí)行指令執(zhí)行指令 NEG AL 執(zhí)行結(jié)果執(zhí)行結(jié)果 (AL)= 0EDH 以上以上5條指令實(shí)際上都做減法操作,而且都可以進(jìn)行字或字條指令實(shí)際上都做減法操作,而且都可以進(jìn)行字或字節(jié)運(yùn)算。對于雙操作數(shù)指令,源操作數(shù)可以是寄存器、存儲器節(jié)運(yùn)算。對于雙操作數(shù)指令,源操作數(shù)可以是寄存器、存儲器
46、或立即數(shù);目的操作數(shù)可以是寄存器或存儲器,但不能立即數(shù),或立即數(shù);目的操作數(shù)可以是寄存器或存儲器,但不能立即數(shù),而且兩個(gè)操作數(shù)不能同時(shí)為儲存器。而且兩個(gè)操作數(shù)不能同時(shí)為儲存器。 對于單操作數(shù)指令,目的操作數(shù)可以是寄存器或存儲器,對于單操作數(shù)指令,目的操作數(shù)可以是寄存器或存儲器,但不能立即數(shù),但不能立即數(shù), 如果操作數(shù)是存儲器,還必須指出其類型。如果操作數(shù)是存儲器,還必須指出其類型。(二)減法指令(二)減法指令 (續(xù)續(xù)) 二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令 比較指令主要用在希望比較兩個(gè)數(shù)之間的關(guān)系,而又不破壞原比較指令主要用在希望比較兩個(gè)數(shù)之間的關(guān)系,而又不破壞原操作數(shù)的場合。即兩者是否相等,或兩
47、個(gè)中哪一個(gè)大。一般有下列操作數(shù)的場合。即兩者是否相等,或兩個(gè)中哪一個(gè)大。一般有下列幾種情況:幾種情況:* 在比較指令之后,根據(jù)在比較指令之后,根據(jù)ZF標(biāo)志即可判斷兩者是否相等。標(biāo)志即可判斷兩者是否相等。若兩者相等,執(zhí)行若兩者相等,執(zhí)行CMP指令后,指令后,ZF=1,否則為,否則為0。* 若是兩個(gè)無符號數(shù)進(jìn)行比較,則在比較指令之后,可根據(jù)若是兩個(gè)無符號數(shù)進(jìn)行比較,則在比較指令之后,可根據(jù)CF的狀態(tài)判斷大小的狀態(tài)判斷大小。* 若是判斷兩個(gè)帶符號數(shù)的大小,可根據(jù)若是判斷兩個(gè)帶符號數(shù)的大小,可根據(jù) SF和和OF進(jìn)行判斷。進(jìn)行判斷。 在執(zhí)行在執(zhí)行CMP AX,BX后后 1、當(dāng)無溢出(當(dāng)無溢出(OF=0)
48、,若),若SF=0,則,則AX BX;否則;否則AXBX。 2、當(dāng)產(chǎn)生溢出(、當(dāng)產(chǎn)生溢出(OF =1),若),若SF =0,則,則AXBX。 即:即:OF “異或異或” SF =0,則,則AXBX; OF “異或異或” SF =1,則,則AXBX轉(zhuǎn)NEXT MOV AX,BX ;小于,則大數(shù)送AXNEXT: INC BX ;修改指針;修改指針 INC BX MOV MAX,AX ;完,則存大數(shù) HLT(三)乘法指令(三)乘法指令 二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令1、無符號數(shù)乘法指令、無符號數(shù)乘法指令 MUL src 功能:完成將功能:完成將AL(字節(jié))或(字節(jié))或AX(字)中的無符號數(shù)與源操(
49、字)中的無符號數(shù)與源操作數(shù)相乘。作數(shù)相乘。 雙倍長度的乘積送回到雙倍長度的乘積送回到AX或或DX:AX。影響標(biāo)志位CF、OF。 若乘積的高半部分(在字節(jié)相乘時(shí)為若乘積的高半部分(在字節(jié)相乘時(shí)為AH,在字相乘時(shí)為,在字相乘時(shí)為DX)不為零,則標(biāo)志不為零,則標(biāo)志CF=1,OF=1; 否則否則CF=0,OF=0。 字節(jié)操作數(shù):字節(jié)操作數(shù):(AL) (src) AX 字操作數(shù):字操作數(shù):(AX) (src) DX:AX例:設(shè)(例:設(shè)(AL)=90H,(,(BL)=04H。執(zhí)行指令執(zhí)行指令MUL BL后,(后,(AX)=0240H,CF =1, OF =1(三)乘法指令(三)乘法指令 (續(xù)續(xù)) 二、算術(shù)
50、運(yùn)算指令二、算術(shù)運(yùn)算指令2、帶符號數(shù)乘法指令、帶符號數(shù)乘法指令I(lǐng)MUL src 功能:完成兩個(gè)帶符號數(shù)相乘,功能:完成兩個(gè)帶符號數(shù)相乘, 操作以及操作以及對標(biāo)志位的影響與對標(biāo)志位的影響與MUL指令完全類似。指令完全類似。3 3、AAMAAM功能:把在功能:把在AX中的兩個(gè)未組合十進(jìn)制數(shù)相乘的結(jié)果中的兩個(gè)未組合十進(jìn)制數(shù)相乘的結(jié)果進(jìn)行十進(jìn)制數(shù)的調(diào)整,使得在進(jìn)行十進(jìn)制數(shù)的調(diào)整,使得在AX中得到正確的未組中得到正確的未組合十進(jìn)制數(shù)的乘積。合十進(jìn)制數(shù)的乘積。指令執(zhí)行后影響標(biāo)志位指令執(zhí)行后影響標(biāo)志位 PF、SF、ZF,對,對AF、CF、OF 未定義。未定義。例:設(shè)(例:設(shè)(AL)= 09H,(,(BL)=
51、06H 執(zhí)行執(zhí)行 MUL BL;(;(AL)= 36HAAM;調(diào)整得;調(diào)整得 (AH)= 05H,(AL)= 04H 即即 (AX)= 0504H 為未組合十進(jìn)為未組合十進(jìn)制數(shù)制數(shù)09和和06相乘的結(jié)果相乘的結(jié)果54(三)乘法指令(三)乘法指令 (續(xù)續(xù)) 二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令(四)除法指令(四)除法指令 二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令功能:對兩個(gè)功能:對兩個(gè)無符號無符號數(shù)數(shù)進(jìn)行除法運(yùn)算。源操作進(jìn)行除法運(yùn)算。源操作數(shù)可以是字節(jié)或字。數(shù)可以是字節(jié)或字。字節(jié)操作數(shù):字節(jié)操作數(shù):(AXAX)/ /( srcsrc )(字節(jié))(字節(jié))商商 AL AL(最大為(最大為FFHFFH),余數(shù)),
52、余數(shù)AHAH字操作數(shù)字操作數(shù): :(DXDX:AXAX)/ /( srcsrc )(字)(字)商商AXAX(最大為(最大為FFFFHFFFFH),余數(shù)),余數(shù)DXDX在在字節(jié)字節(jié)操作中,若被除數(shù)只有位,則必須將操作中,若被除數(shù)只有位,則必須將位被除數(shù)送位被除數(shù)送A A,并將,并將A A清清0 0,然后相除。,然后相除。在在字字操作中,若被除數(shù)只有操作中,若被除數(shù)只有1616位,除數(shù)也是位,除數(shù)也是1616位,則必須將位,則必須將1616位被除數(shù)送位被除數(shù)送AXAX,并將,并將DXDX清清0 0,然后相除。然后相除。DIVDIV指令執(zhí)行后,所有標(biāo)志位均無定義。指令執(zhí)行后,所有標(biāo)志位均無定義。 1
53、、無符號數(shù)除法指令、無符號數(shù)除法指令 DIV src(四)除法指令(四)除法指令 (續(xù)續(xù)) 二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令2、帶符號數(shù)除法指令:、帶符號數(shù)除法指令:IDIV src 功能:功能:執(zhí)行的操作與執(zhí)行的操作與DIV相同,但操作數(shù)都必須是帶符相同,但操作數(shù)都必須是帶符號數(shù),商和余數(shù)也都是帶符號數(shù),號數(shù),商和余數(shù)也都是帶符號數(shù),而且規(guī)定余數(shù)的符號而且規(guī)定余數(shù)的符號和被除數(shù)的相同,且所有標(biāo)志位均無定義。和被除數(shù)的相同,且所有標(biāo)志位均無定義。 對于對于IDIV指令,字節(jié)操作時(shí)要求被除數(shù)為指令,字節(jié)操作時(shí)要求被除數(shù)為16位,位,字操作時(shí)要求被除數(shù)為字操作時(shí)要求被除數(shù)為32位。如果被除數(shù)不滿足
54、這個(gè)位。如果被除數(shù)不滿足這個(gè)條件,不能簡單地將高位置條件,不能簡單地將高位置0,而應(yīng)該先用下面的符,而應(yīng)該先用下面的符號擴(kuò)展指令將被除數(shù)轉(zhuǎn)換成除法指令所要求的格式,號擴(kuò)展指令將被除數(shù)轉(zhuǎn)換成除法指令所要求的格式,再執(zhí)行除法指令。再執(zhí)行除法指令。(四)除法指令(四)除法指令 (續(xù)續(xù)) 二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令3 3、把字節(jié)轉(zhuǎn)換為字指令、把字節(jié)轉(zhuǎn)換為字指令CBWCBW 若若(AL) 80H , 擴(kuò)展后擴(kuò)展后(AH) = 00H,若若(AL) 80H,擴(kuò)展后,擴(kuò)展后(AH) =0FFH。該指令執(zhí)行后,不影響標(biāo)志位。該指令執(zhí)行后,不影響標(biāo)志位。功能:把功能:把ALAL中字節(jié)的符號位擴(kuò)展到中字節(jié)的
55、符號位擴(kuò)展到AHAH的所有位。的所有位。4、把字轉(zhuǎn)換成雙字指令、把字轉(zhuǎn)換成雙字指令CWD 功能:把功能:把AXAX中字的符號位擴(kuò)展送到中字的符號位擴(kuò)展送到DXDX寄存器的所有位中去。寄存器的所有位中去。若若(AX) 8000H , (AX) BABABABABAB3 3、JCXZ OPRD JCXZ OPRD 測試轉(zhuǎn)移指令測試轉(zhuǎn)移指令 (二)條件轉(zhuǎn)移指令(二)條件轉(zhuǎn)移指令五、控制轉(zhuǎn)移指令五、控制轉(zhuǎn)移指令功能:功能: 根據(jù)根據(jù)CXCX寄存器的內(nèi)容是否為寄存器的內(nèi)容是否為0 0,使程序產(chǎn)生分,使程序產(chǎn)生分支,進(jìn)入不同程序段。若(支,進(jìn)入不同程序段。若(CXCX)= 0= 0,則轉(zhuǎn)移。,則轉(zhuǎn)移。例;
56、例;某學(xué)生的英語成績在某學(xué)生的英語成績在AL中,若低于中,若低于60分,則打印分,則打印F;若高于或等于若高于或等于85分,則打印分,則打印G;打?。淮蛴;試編程實(shí)現(xiàn)。;試編程實(shí)現(xiàn)。程序段: CMP AL,60 ;與60分比較 JB FAIL ;小于60分,轉(zhuǎn)FAIL CMP AL,85 ;大于60分,與85分比較 JAE GOOD ;大于等于85分,轉(zhuǎn)GOOD MOV AL,P ;其它,P送 AL JMP PRINT ;轉(zhuǎn)打印程序 FAIL: MOV AL,F(xiàn) ;F送 AL JMP PRINT ;轉(zhuǎn)打印程序 GOOD: MOV AL,G ;G送 ALPRINT: ;打印AL中的字符 (三)
57、循環(huán)控制指令(三)循環(huán)控制指令五、控制轉(zhuǎn)移指令五、控制轉(zhuǎn)移指令循環(huán)控制指令用來控制一個(gè)程序段的重復(fù)循環(huán)控制指令用來控制一個(gè)程序段的重復(fù)執(zhí)行,重復(fù)次數(shù)由執(zhí)行,重復(fù)次數(shù)由CXCX寄存器中的內(nèi)容決定。寄存器中的內(nèi)容決定。轉(zhuǎn)移的目標(biāo)地址必須在控制指令的轉(zhuǎn)移的目標(biāo)地址必須在控制指令的128 128 +127+127字節(jié)范圍內(nèi)。字節(jié)范圍內(nèi)。 這類指令的這類指令的執(zhí)行執(zhí)行均不影響均不影響標(biāo)志位標(biāo)志位。1 1、LOOP OPRDLOOP OPRD功能:功能:用于控制重復(fù)執(zhí)行一系列指令。用于控制重復(fù)執(zhí)行一系列指令。指令執(zhí)行前必須先指令執(zhí)行前必須先將重復(fù)次數(shù)放在將重復(fù)次數(shù)放在CX寄存器中寄存器中,每執(zhí)行一次,每執(zhí)
58、行一次LOOP指令,指令,CX自動減自動減1。若減。若減1后后CX 0,則轉(zhuǎn)移到指令指定的目標(biāo)地址,則轉(zhuǎn)移到指令指定的目標(biāo)地址處繼續(xù)循環(huán);若自動減處繼續(xù)循環(huán);若自動減1后后CX = 0,則結(jié)束循環(huán),順序執(zhí)行,則結(jié)束循環(huán),順序執(zhí)行LOOP指令的下一條指令。指令的下一條指令。指令指令 LOOP AGAIN 相當(dāng)于相當(dāng)于 DEC CX JNZ AGAIN(三)循環(huán)控制指令(三)循環(huán)控制指令五、控制轉(zhuǎn)移指令五、控制轉(zhuǎn)移指令例;例;3-92 見見P113 程序段:OLDDB 83H,76H,65H,84HDB 71H,49H,62H,58HNEW DB 8DUP(?) MOV CX,08H MOV BX
59、,0NEXT: MOV AL,OLDBX ADDAL,7DAAMOV NEWBX ,ALINCBXLOOP NEXT(三)循環(huán)控制指令(三)循環(huán)控制指令五、控制轉(zhuǎn)移指令五、控制轉(zhuǎn)移指令2 2、LOOPE/LOOPZ LOOPE/LOOPZ 相等或結(jié)果為相等或結(jié)果為0 0時(shí)循環(huán)時(shí)循環(huán)格式:格式:LOOPE LOOPE 標(biāo)號標(biāo)號 LOOPZ LOOPZ 標(biāo)號標(biāo)號功能:功能:用于控制重復(fù)執(zhí)行一組指令。指令執(zhí)行前,用于控制重復(fù)執(zhí)行一組指令。指令執(zhí)行前,先將重先將重復(fù)次數(shù)送到復(fù)次數(shù)送到CX中中,每執(zhí)行一次指令,每執(zhí)行一次指令,CX自動減自動減1,減,減1后后:若若CX 0且且ZF = 1,則轉(zhuǎn)到指令所指
60、定的標(biāo)號處重復(fù)執(zhí)行;,則轉(zhuǎn)到指令所指定的標(biāo)號處重復(fù)執(zhí)行;若若CX = 0或或ZF = 0,便退出循環(huán),順序執(zhí)行下一條指令。,便退出循環(huán),順序執(zhí)行下一條指令。例:例:設(shè)在設(shè)在BUF1開始開始的內(nèi)存中有一個(gè)由的內(nèi)存中有一個(gè)由50個(gè)字節(jié)組成的數(shù)組,個(gè)字節(jié)組成的數(shù)組,現(xiàn)要對數(shù)組中的元素現(xiàn)要對數(shù)組中的元素進(jìn)行測試,直到找到進(jìn)行測試,直到找到第一個(gè)非第一個(gè)非 0元素或查完元素或查完了為止。了為止。LEA SI,BUF1 DEC SIMOV CX,50 AG: INC SICMP SI ,0LOOPE AG程序段:程序段:3 3、LOOPNE / LOOPNZ LOOPNE / LOOPNZ 不相等或結(jié)果不
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司運(yùn)營流程與規(guī)章制度詳解手冊
- 生物信息學(xué)實(shí)驗(yàn)手冊
- 三農(nóng)災(zāi)害應(yīng)急管理指南
- 三農(nóng)工作者的實(shí)踐指南
- 生物質(zhì)顆粒燃料蒸汽發(fā)生器
- 重大項(xiàng)目進(jìn)度協(xié)調(diào)會議紀(jì)要記錄
- 育嬰師復(fù)習(xí)試題含答案
- 藝術(shù)鑒賞油畫技法分析題集
- 茶藝師復(fù)習(xí)試題含答案(一)
- 外科總論復(fù)習(xí)測試有答案
- 2020年2月瀘精院精神科二病區(qū)癥狀學(xué)感知障礙三基考試試題
- 絲錐表面處理
- 施工現(xiàn)場重大危險(xiǎn)源公示牌
- 鐵道概論全套課件
- 共享文件stj1radar調(diào)試軟件使用手冊1.112.22xiang
- 地磁磁場的基本特征及應(yīng)用
- 2022年上海高考語文樣卷及參考答案
- 10kV及以下架空配電線路設(shè)計(jì)技術(shù)規(guī)程
- 有趣的仿生設(shè)計(jì)(課堂PPT)
- 無機(jī)化學(xué)第4版下冊(吉大宋天佑)2019
- 個(gè)體診所聘用醫(yī)師合同范本
評論
0/150
提交評論