南京郵電大學(xué)微型計(jì)算機(jī)原理與接口技術(shù) 3_01章_第1頁
南京郵電大學(xué)微型計(jì)算機(jī)原理與接口技術(shù) 3_01章_第2頁
南京郵電大學(xué)微型計(jì)算機(jī)原理與接口技術(shù) 3_01章_第3頁
南京郵電大學(xué)微型計(jì)算機(jī)原理與接口技術(shù) 3_01章_第4頁
南京郵電大學(xué)微型計(jì)算機(jī)原理與接口技術(shù) 3_01章_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)Ch. 3 指令系統(tǒng)指令系統(tǒng)3.4 80486的基本指令集的基本指令集(一一)3.4 80486的基本指令集的基本指令集(二二)3.4.1 傳送類指令傳送類指令3.4.2 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令3.4.3 轉(zhuǎn)移和調(diào)用類指令轉(zhuǎn)移和調(diào)用類指令3.4.4 邏輯運(yùn)算和移位指令邏輯運(yùn)算和移位指令3.4.5 串操作指令串操作指令3.4.6 處理機(jī)控制指令處理機(jī)控制指令3.2 80486尋址方式尋址方式第第3 3章章 指令系統(tǒng)指令系統(tǒng)3.4 804863.4 80486基本指令集基本指令集 8048680486指令系統(tǒng)可以分為指令系統(tǒng)可以分為7 7類,它們是類,它們是:

2、 :數(shù)據(jù)傳輸類、數(shù)據(jù)傳輸類、算術(shù)運(yùn)算類、邏輯運(yùn)算類、串操作類、控制傳輸類、算術(shù)運(yùn)算類、邏輯運(yùn)算類、串操作類、控制傳輸類、處理器控制類和系統(tǒng)類。我們僅介紹前處理器控制類和系統(tǒng)類。我們僅介紹前6 6類。類。 在學(xué)習(xí)指令系統(tǒng)時(shí),我們應(yīng)當(dāng)注意的基本信息為:在學(xué)習(xí)指令系統(tǒng)時(shí),我們應(yīng)當(dāng)注意的基本信息為: 指令的功能;指令的功能; 操作數(shù)據(jù)的來源;操作數(shù)據(jù)的來源; 操作的結(jié)果及對標(biāo)志寄存器的影響;操作的結(jié)果及對標(biāo)志寄存器的影響; 下一條指令的地址。下一條指令的地址。3.4.0 部分指令部分指令(1)MOV 傳送數(shù)據(jù)傳送數(shù)據(jù) 句句 法:法: MOVdest,src操操 作:作: dest src標(biāo)志影響:標(biāo)志

3、影響: 無無合法格式:合法格式: 說明:說明:reg: 通用寄存器之一通用寄存器之一 idata:立即數(shù):立即數(shù) sreg:段寄存器之一:段寄存器之一 mem:存儲器操作數(shù):存儲器操作數(shù) dest:目:目 src: 源源 dest src MOV reg , idata MOV mem , idata MOV reg , reg MOV reg , mem MOV mem , reg MOV sreg , reg MOV sreg , mem MOV reg , sreg MOV mem , sreg 為了理解存儲器變量的使用為了理解存儲器變量的使用, ,請仔細(xì)閱讀以下例題。請仔細(xì)閱讀以下例題

4、。 【例】閱讀以下程序【例】閱讀以下程序, ,寫出指令執(zhí)行后的目標(biāo)操作數(shù)。寫出指令執(zhí)行后的目標(biāo)操作數(shù)。 設(shè)數(shù)據(jù)段設(shè)數(shù)據(jù)段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H 代碼段代碼段:MOV AL,BNUM ;AL=? AL=12H 數(shù)據(jù)段經(jīng)過匯編之后,并在操作系統(tǒng)的安排之下:設(shè)數(shù)據(jù)段設(shè)數(shù)據(jù)段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654

5、321HFNUM DF 112233445566H BNUM:12H34H56H78H90HLHBX=3344H 數(shù)據(jù)段經(jīng)過匯編之后,并在操作系統(tǒng)的安排之下:數(shù)據(jù)段經(jīng)過匯編之后,并在操作系統(tǒng)的安排之下: 代碼段代碼段:MOV BX,WNUM+2 ;BX=? 設(shè)數(shù)據(jù)段設(shè)數(shù)據(jù)段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H LHWNUM:22H11H44H33H66H55HEDX=87654321H 代碼段代碼段:MOV EDX,DNUM+4

6、;EDX=? 數(shù)據(jù)段經(jīng)過匯編之后,并在操作系統(tǒng)的安排之下:數(shù)據(jù)段經(jīng)過匯編之后,并在操作系統(tǒng)的安排之下:設(shè)數(shù)據(jù)段設(shè)數(shù)據(jù)段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H LHDNUM:68H24H57H13H21H43H65H87HCL=68H 代碼段代碼段:MOV CL,BYTE PTR DNUM ;CL=? 數(shù)據(jù)段經(jīng)過匯編之后,并在操作系統(tǒng)的安排之下:數(shù)據(jù)段經(jīng)過匯編之后,并在操作系統(tǒng)的安排之下:設(shè)數(shù)據(jù)段設(shè)數(shù)據(jù)段:BNUM DB 12H,34

7、H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H LHDNUM:68H24H57H13HBX=5634H 代碼段代碼段:MOV BX,WORD PTR BNUM +1 ;BX=? 數(shù)據(jù)段經(jīng)過匯編之后,并在操作系統(tǒng)的安排之下:數(shù)據(jù)段經(jīng)過匯編之后,并在操作系統(tǒng)的安排之下:設(shè)數(shù)據(jù)段設(shè)數(shù)據(jù)段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 11223344

8、5566H LHBNUM:12H34H56H78H90HEAX=66334411H 代碼段代碼段:MOV EAX,DWORD PTR WNUM +1 ;EAX=? 數(shù)據(jù)段經(jīng)過匯編之后,并在操作系統(tǒng)的安排之下:數(shù)據(jù)段經(jīng)過匯編之后,并在操作系統(tǒng)的安排之下:設(shè)數(shù)據(jù)段設(shè)數(shù)據(jù)段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H LHWNUM:22H11H44H33H66H55HDH=90H 代碼段代碼段:MOV DH,BYTE PTR BNUM2*2 ;

9、DH=? 數(shù)據(jù)段經(jīng)過匯編之后,并在操作系統(tǒng)的安排之下:數(shù)據(jù)段經(jīng)過匯編之后,并在操作系統(tǒng)的安排之下:設(shè)數(shù)據(jù)段設(shè)數(shù)據(jù)段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H LHBNUM:12H34H56H78H90H 數(shù)據(jù)段經(jīng)過匯編之后,并在操作系統(tǒng)的安排之下:數(shù)據(jù)段經(jīng)過匯編之后,并在操作系統(tǒng)的安排之下: 代碼段代碼段: MOV BX,OFFSET BNUM MOV AL, BX ;AL=? 設(shè)數(shù)據(jù)段設(shè)數(shù)據(jù)段: ORG 2400h BNUM DB 1

10、2H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H AL=12HLHBNUM:12H34H56H78H90HBX=2400H 代碼段代碼段:MOV EBX, DNUM 3 ;EBX=? MOV BX, WORD PTR DNUM 3 ;BX=? MOV EBX, DWORD PTR BNUM 0 ;EBX=? MOV BX, WORD PTR FNUM ;BX=? MOV BX, 3 MOV BL,BNUM BX ;BL=? 設(shè)數(shù)據(jù)段設(shè)數(shù)據(jù)段:BNUM DB 12

11、H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H 練習(xí)練習(xí) (2) ADD 加法指令加法指令 句句 法:法:ADD dest src 操操 作:作:dest dest + src 標(biāo)標(biāo) 志:志:O,S,Z,A,P,C 合法格式:合法格式: dest src reg idata mem idata ADD reg reg reg mem mem reg(3) ADC 帶進(jìn)位加帶進(jìn)位加 句句 法:法:ADC dest src 操操 作:作:dest src + des

12、t + C 標(biāo)標(biāo) 志:志:O,S,Z,A,P,C 合法格式:合法格式: 同同ADD例:實(shí)現(xiàn)下列多字節(jié)數(shù)運(yùn)算(以例:實(shí)現(xiàn)下列多字節(jié)數(shù)運(yùn)算(以232為模)為模)5 6 7 8 8 7 8 5 H+ 7 8 9 A 8 7 8 5 H設(shè)數(shù)據(jù)段:設(shè)數(shù)據(jù)段:FIRST DD 56788785HSECOND DD 789A8785HSUM DD ?0F031FCHAFIRSTSECOND85H87H78H56H85H87H9AH78H SUMFIRSTSECOND85H87H78H56H85H87H9AH78H SUM解1:單字節(jié)加法(共需12條指令)MOV AL , BYTE PTR FIRSTADD

13、AL , BYTE PTR SECOND ;進(jìn)位;進(jìn)位C標(biāo)標(biāo)MOV BYTE PTR SUM , AL ;不影響;不影響C標(biāo)標(biāo)MOV AL , BYTE PTR FIRST+1 ;不影響;不影響C標(biāo)標(biāo)ADC AL , BYTE PTR SECOND+1 ;進(jìn)位;進(jìn)位C標(biāo)標(biāo)MOV BYTE PTR SUM+1 , ALFIRST DD 56788785HSECOND DD 789A8785HSUM DD ?0AH0FH13HCFH解解2:雙字節(jié)加法(只需:雙字節(jié)加法(只需6條指令)條指令)FIRST DD 56788785HSECOND DD 789A8785HSUM DD ?MOV AX ,

14、WORD PTR FIRSTADD AX , WORD PTR SECONDMOV WORD PTR SUM , AXMOV AX , WORD PTR FIRST+2ADC AX , WORD PTR SECOND+2MOV WORD PTR SUM+2 , AXFIRSTSECOND85H87H78H56H85H87H9AH78H SUM13HCFH0AH0FH解解3:雙字加法(只需:雙字加法(只需3條指令)條指令)FIRST DD 56788785HSECOND DD 789A8785HSUM DD ?MOV EAX , FIRSTADD EAX , SECONDMOV SUM , EA

15、X 66+99=1011011=91 6699=+01011011=+91結(jié)果都是錯的被運(yùn)算器丟失,保存在進(jìn)位標(biāo)志寄存器中 被運(yùn)算器丟失,保存在進(jìn)位標(biāo)志寄存器中 66+99補(bǔ)=0 0 10100101-66-99補(bǔ)=1 1 01011011-66補(bǔ)= 10111110-99補(bǔ)= 10011101例2以28為模,補(bǔ)碼運(yùn)算, 求66+99, 6699 解:66補(bǔ)= 01000010 99補(bǔ)= 01100011回憶回憶 如果參與運(yùn)算的數(shù)是無符號數(shù),則判進(jìn)位標(biāo)志, 進(jìn)位標(biāo)志=1,表示溢出; 如果參與運(yùn)算的數(shù)是有符號數(shù),則判溢出標(biāo)志,溢出標(biāo)志=1,表示溢出。 程序員如何判斷溢出程序員如何判斷溢出回憶回憶

16、(4 4)條件轉(zhuǎn)移)條件轉(zhuǎn)移 . . 按標(biāo)志位的當(dāng)前狀態(tài)轉(zhuǎn)移按標(biāo)志位的當(dāng)前狀態(tài)轉(zhuǎn)移 設(shè)轉(zhuǎn)移地址標(biāo)號為設(shè)轉(zhuǎn)移地址標(biāo)號為XYZXYZJC XYZ ;JC XYZ ;當(dāng)前當(dāng)前C C標(biāo)志為標(biāo)志為1 1轉(zhuǎn)轉(zhuǎn)JNC XYZ ;JNC XYZ ;當(dāng)前當(dāng)前C C標(biāo)志為標(biāo)志為0 0轉(zhuǎn)轉(zhuǎn)JZ XYZ ;JZ XYZ ;當(dāng)前當(dāng)前Z Z標(biāo)志為標(biāo)志為1 1轉(zhuǎn)轉(zhuǎn)JNZ XYZ ;JNZ XYZ ;當(dāng)前當(dāng)前Z Z標(biāo)志為標(biāo)志為0 0轉(zhuǎn)轉(zhuǎn)JS XYZ ;JS XYZ ;當(dāng)前當(dāng)前S S標(biāo)志為標(biāo)志為1 1轉(zhuǎn)轉(zhuǎn)JNS XYZ ;JNS XYZ ;當(dāng)前當(dāng)前S S標(biāo)志為標(biāo)志為0 0轉(zhuǎn)轉(zhuǎn)JP XYZ ;JP XYZ ;當(dāng)前當(dāng)前P P標(biāo)志為

17、標(biāo)志為1 1轉(zhuǎn)轉(zhuǎn)JNP XYZ ;JNP XYZ ;當(dāng)前當(dāng)前P P標(biāo)志為標(biāo)志為0 0轉(zhuǎn)轉(zhuǎn)JO XYZ ;JO XYZ ;當(dāng)前當(dāng)前O O標(biāo)志為標(biāo)志為1 1轉(zhuǎn)轉(zhuǎn)JNO XYZ ;JNO XYZ ;當(dāng)前當(dāng)前O O標(biāo)志為標(biāo)志為0 0轉(zhuǎn)轉(zhuǎn)例例 設(shè)計(jì)程序判斷設(shè)計(jì)程序判斷 X+Y 是否溢出?若溢出則顯示是否溢出?若溢出則顯示“OVER!”;若正常則顯示;若正常則顯示“GOOD!” 解:若 X、Y為無符號數(shù),則程序如下: MOV AL,X MOV BL,Y ADD AL,BL JC CCCC 顯示顯示“GOOD!”,結(jié)束,結(jié)束CCCC:顯示:顯示“OVER!”,結(jié)束,結(jié)束 解:若 X、Y為有符號數(shù),則程序如下

18、: MOV AL,X MOV BL,Y ADD AL,BL JO CCCC 顯示顯示“GOOD!”,結(jié)束,結(jié)束CCCC:顯示:顯示“OVER!”,結(jié)束,結(jié)束3.4.1 數(shù)據(jù)傳輸類指令數(shù)據(jù)傳輸類指令1 通用類通用類(1)MOV 傳送數(shù)據(jù)傳送數(shù)據(jù) 句句 法:法: MOVdest,src操操 作:作: dest src標(biāo)志影響:標(biāo)志影響: 無無合法格式:合法格式: 說明:說明:reg: 通用寄存器之一通用寄存器之一 idata:立即數(shù):立即數(shù) sreg:段寄存器之一:段寄存器之一 mem:存儲器操作數(shù):存儲器操作數(shù) dest:目:目 src: 源源 dest src MOV reg , idata

19、MOV mem , idata MOV reg , reg MOV reg , mem MOV mem , reg MOV sreg , reg MOV sreg , mem MOV reg , sreg MOV mem , sreg (2)MOVSX 符號擴(kuò)展的傳送符號擴(kuò)展的傳送 句句 法:法:MOVSX dest ,src 操操 作:作:dest(16,32) sign extend(8,16)()(src) 標(biāo)志影響:無標(biāo)志影響:無 合法格式:合法格式: dest src MOVSX reg , reg MOVSX reg , mem(3)MOVZX 帶有零擴(kuò)展的傳送 句 法: MOVZ

20、X dest ,src 操 作:dest 0_extend(src) 標(biāo)志影響:無 合法格式:dest,src 同(2) (4)LEA 取有效地址 句 法: LEA dest ,src 操 作: dest address(src) 標(biāo)志影響: 無 合法格式: dest src LEA reg , mem(5)Lseg 調(diào)用段寄存器調(diào)用段寄存器 句句 法:法:Lseg dest ,src 操操 作:作:dest (src) seg (src+4) 標(biāo)志影響:無標(biāo)志影響:無 合法格式:合法格式: dest src LDS LES LFS reg32 , mem LGS LSS(5)Lseg 調(diào)用段

21、寄存器調(diào)用段寄存器 句句 法:法:Lseg dest ,src 操操 作:作:dest (src) seg (src+2) 標(biāo)志影響:無標(biāo)志影響:無 合法格式:合法格式: dest src LDS LES LFS reg16 , mem LGS LSS(6)標(biāo)志寄存器傳送指令)標(biāo)志寄存器傳送指令 LAHF 把標(biāo)志裝入把標(biāo)志裝入AH句句 法:法:LAHF操操 作:作:AHEFAGSOFFH標(biāo)志影響:無標(biāo)志影響:無合法格式:合法格式:LAHF SAHF 把把AH內(nèi)容送到內(nèi)容送到EFLAGS中中 句句 法:法:SAHF操操 作:作:EFLAGS(EFLAGS 0FFFFFF00H) (AH)0D5H

22、)標(biāo)標(biāo) 志:志:S,A,Z,P,C合法格式:合法格式:SAFH D31 D19 D18 D7 D0AC VM RNT IOPL ODITSZAPC(7) XCHG 交換交換 句句 法:法:XCHG OP1,OP2操操 作:作:temp OP1 OP1 OP2 OP2 temp標(biāo)志影響:無標(biāo)志影響:無 合法格式:合法格式: OP1 OP2 reg, reg XCHG reg, mem mem, reg(8)BSWAP 字節(jié)交換字節(jié)交換 句句 法:法:BSWAP dest 操操 作:作:temp dest dest(0-7) temp(24-31) dest(8-15) temp(16-23) d

23、est(16-23) temp(8-15) dest(24-31) temp(0-7) 標(biāo)志影響:無標(biāo)志影響:無 合法格式:合法格式: dest BSWAP reg32 本指令對不同結(jié)構(gòu)的處理器之間的數(shù)據(jù)交換能發(fā)揮作用。本指令對不同結(jié)構(gòu)的處理器之間的數(shù)據(jù)交換能發(fā)揮作用。 (9)XLAT 字節(jié)轉(zhuǎn)換 句 法:XLAT 操 作:AL DS:EBX+AL 標(biāo) 志:無 合法格式:XLAT例:查找NUM單元中的數(shù)所對應(yīng)的數(shù)碼管字型碼。adbghcfeabhabh設(shè)設(shè)D7D0位依次驅(qū)動位依次驅(qū)動ha段(共陰),則有:段(共陰),則有:的字型碼為:的字型碼為:0 0 1 1 1 1 1 1 = 3FH的字型碼

24、為:的字型碼為:0 0 1 1 1 0 0 1 = 39H的字型碼為:的字型碼為:0 1 1 1 1 0 0 1 = 79H的字型碼為:的字型碼為:0 1 1 1 0 0 0 1 = 71H的字型碼為:的字型碼為:0 1 1 1 1 1 1 1 = 7FH的字型碼為:的字型碼為:0 1 1 0 1 1 1 1 = 6FH的字型碼為:的字型碼為:0 1 1 1 0 1 1 1 = 77H的字型碼為:的字型碼為:0 1 1 1 1 1 0 0 = 7CH的字型碼為:的字型碼為:0 1 0 1 1 1 1 0 = 5EH的字型碼為:的字型碼為:0 0 0 0 0 1 1 0 = 06H的字型碼為:的

25、字型碼為:0 1 0 1 1 0 1 1 = 5BH的字型碼為:的字型碼為:0 1 1 0 0 1 1 0 = 66H的字型碼為:的字型碼為:0 1 0 0 1 1 1 1 = 4FH的字型碼為:的字型碼為:0 1 1 1 1 1 0 1 = 7DH的字型碼為:的字型碼為:0 1 1 0 1 1 0 1 = 6DH的字型碼為:的字型碼為:0 0 0 0 0 1 1 1 = 07Hadbghcfe解:編程時(shí),按解:編程時(shí),按09、AF的次序,將相應(yīng)的字型的次序,將相應(yīng)的字型碼設(shè)置在數(shù)據(jù)段中:碼設(shè)置在數(shù)據(jù)段中:TAB DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07

26、H DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71HNUM DB ;015中的一個數(shù)中的一個數(shù)數(shù)據(jù)段:數(shù)據(jù)段:代碼段:代碼段:MOV BX , OFFSET TABMOV AL , NUMXLAT ;AL=相應(yīng)的字型碼相應(yīng)的字型碼 代碼段:代碼段:TAB DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71HNUM DB ;015中的一個數(shù)中的一個數(shù)MOV BX , OFFSET TABMOV AL , NUMXLAT TAB ;AL=相應(yīng)的字型碼相應(yīng)的字型碼33 2.堆棧指令堆棧指令 概念概念棧體(SS)22H1FFFFH1FFFEH1FFFDH1FFFCH1FFFBH22H33H棧指針SP棧頂棧底XX10000H1FFFFH1FFFEH1FFFDH1FFFCH1FFFBHSSSP22H33HSPXX10000H1FFFFH1FFFEH1FFFDH1FFFCH1FFFBHSSSP22H33H壓棧過程壓棧過程退棧過程退棧過程SP(1) PUSH 壓棧 句 法:PUSH OP 操 作: if (size of(OP)=16) then SP

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論