版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2024/3/26,1,8086的指令系統(tǒng)和尋址方式,講授要點(diǎn): 3種操作數(shù)(立即數(shù)、寄存器和內(nèi)存操作數(shù))的形式。 常用指令的格式、功能以及對(duì)CF、OF、SF、ZF、PF的影響。 使用指令時(shí)容易犯的錯(cuò)誤。,2024/3/26,2,什么是指令系統(tǒng),計(jì)算機(jī)的指令系統(tǒng)就是指該計(jì)算機(jī)能夠執(zhí)行的全部指令的集合每種計(jì)算機(jī)都有它支持的指令集合 16位8086指令系統(tǒng)是Intel 80x86系列微處理器指令系統(tǒng)的基礎(chǔ),一定要采用調(diào)試程序DEB
2、UG進(jìn)行實(shí)踐,2024/3/26,3,調(diào)試程序DEBUG,DEBUG是常用的匯編語言級(jí)調(diào)試工具,為匯編語言程序員提供了分析指令、跟蹤程序的有效手段常用命令:-A 匯編-U 反匯編-T 單步執(zhí)行-G 斷點(diǎn)執(zhí)行-D 數(shù)據(jù)顯示-R 寄存器,感性認(rèn)識(shí)因深刻而顯重要,2024/3/26,4,3.1 8086的尋址方式,從8086的機(jī)器代碼格式入手,論述:立即數(shù)尋址方式寄存器尋址方式存儲(chǔ)器尋址方式進(jìn)而熟悉8086匯編語言指令
3、格式,尤其是其中操作數(shù)的表達(dá)方法;為展開8086指令系統(tǒng)做好準(zhǔn)備,2024/3/26,5,指令的組成,指令由操作碼和操作數(shù)兩部分組成操作碼說明計(jì)算機(jī)要執(zhí)行哪種操作,如傳送、運(yùn)算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分操作數(shù)是指令執(zhí)行的參與者,即各種操作的對(duì)象有些指令不需要操作數(shù),通常的指令都有一個(gè)或兩個(gè)操作數(shù),也有個(gè)別指令有3個(gè)甚至4個(gè)操作數(shù),指令的書寫格式如下: 標(biāo)號(hào): 指令助記符 操作數(shù); 注釋,2024/3
4、/26,6,指令的操作碼和操作數(shù),每種指令的操作碼:用一個(gè)唯一的助記符表示(指令功能的英文縮寫)對(duì)應(yīng)著機(jī)器指令的一個(gè)二進(jìn)制編碼指令中的操作數(shù):可以是一個(gè)具體的數(shù)值可以是存放數(shù)據(jù)的寄存器或指明數(shù)據(jù)在主存位置的存儲(chǔ)器地址,2024/3/26,7,尋址方式,指令系統(tǒng)設(shè)計(jì)了多種操作數(shù)的來源尋找操作數(shù)的過程就是操作數(shù)的尋址操作數(shù)采取哪一種尋址方式,會(huì)影響機(jī)器運(yùn)行的速度和效率,如何尋址一個(gè)操作數(shù)對(duì)程序設(shè)計(jì)很重要,2024/3/26,
5、8,指令的助記符格式,操作碼 操作數(shù)1,操作數(shù)2;注釋操作數(shù)2,稱為源操作數(shù) src,它表示參與指令操作的一個(gè)對(duì)象操作數(shù)1,稱為目的操作數(shù) dest,它不僅可以作為指令操作的一個(gè)對(duì)象,還可以用來存放指令操作的結(jié)果分號(hào)后的內(nèi)容是對(duì)指令的解釋,2024/3/26,9,傳送指令MOV的格式,MOV dest,src;dest←src MOV指令的功能是將源操作數(shù)src傳送至目的操作數(shù)dest,例如:MOV AL,05H;
6、AL←05HMOV BX,AX;BX←AXMOV AX,[SI];AX←DS:[SI]MOV AX,[BP+06H];AX←SS:[BP+06H]MOV AX,[BX+SI];AX←DS:[BX+SI],演示,2024/3/26,10,傳送指令MOV的功能,源操作數(shù) src,目的操作數(shù) dest,,30H,,30H,,被傳送的數(shù)據(jù),8086的尋址方式,與數(shù)據(jù)有關(guān)的尋址方式:以 MOV 指令為例 立即尋址
7、 MOV AX , 3069H寄存器尋址 MOV AL , BH直接尋址 MOV AX , [ 2000H ]寄存器間接尋址 MOV AX , [ BX ] 寄存器相對(duì)尋址 MOV AX , COUNT [ SI ] 基址變址尋址 MOV AX , [ BP ] [ DI
8、 ]相對(duì)基址變址尋址 MOV AX , MASK [ BX ] [ SI ],,存儲(chǔ)器尋址,1 立即數(shù)尋址方式,指令中的操作數(shù)直接存放在機(jī)器代碼中,緊跟在操作碼之后(操作數(shù)作為指令的一部分存放在操作碼之后的主存單元中)這種操作數(shù)被稱為立即數(shù)imm它可以是8位數(shù)值i8(00H~FFH)也可以是16位數(shù)值i16(0000H~FFFFH)立即數(shù)尋址方式常用來給寄存器賦值,立即數(shù)尋址指令,MOV AL,05H;AL←05H
9、MOV AX,0102H;AX←0102H,指令功能,執(zhí)行過程,* 只能用于 SRC 字段 MOV 40H, AL ?* SRC 和 DST 的字長(zhǎng)一致 MOV AH, 3064H ?* 不能直接給段寄存器和標(biāo)志寄存器賦予立即數(shù)。 MOV DS, 2000H ?,2024/3/26,14,2 寄存器尋址方式,操作數(shù)存放在CPU的內(nèi)部
10、寄存器reg中,可以是:8位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DL16位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SP4個(gè)段寄存器seg:CS、DS、SS、ES,寄存器尋址指令,MOV AX,1234H;AX←1234HMOV BX,AX;BX←AX,指令功能,執(zhí)行過程,* 字節(jié)寄存器只有 AH AL BH BL CH CL DH DL* SRC 和 DST
11、 的字長(zhǎng)一致 MOV AH, BX ?* CS 不能用 MOV 指令改變 MOV CS, AX ?,存儲(chǔ)器尋址方式,指令中給出操作數(shù)的主存地址信息(偏移地址,稱之為有效地址EA),而段地址在默認(rèn)的或用段超越前綴指定的段寄存器中8086設(shè)計(jì)了多種存儲(chǔ)器尋址方式1、直接尋址方式2、寄存器間接尋址方式3、寄存器相對(duì)尋址方式4、基址變址尋址方式5、相對(duì)基址變址尋址方式,3
12、直接尋址方式,有效地址在指令中直接給出默認(rèn)的段地址在DS段寄存器,可使用段超越前綴改變MOV AX,[2000H];AX←DS:[2000H];指令代碼:A10020MOV AX,ES:[2000H];AX←ES:[2000H];指令代碼:26A10020,指令功能,執(zhí)行過程,操作數(shù)地址可由變量(符號(hào)地址)表示, 但要注意變量的屬性。 VALUE DB 10 MOV AH, VALUE
13、 ? MOV AX, VALUE ? MOV AX, WORD PTR VALUE ?,3.1.1.4 寄存器間接尋址方式,有效地址存放在基址寄存器BX或變址寄存器SI、DI中默認(rèn)的段地址在DS段寄存器,可使用段超越前綴改變MOV AX,[SI];AX←DS:[SI],指令功能,執(zhí)行過程,4 寄存器間接尋址方式,* 不允許使用AX、CX、DX 存放 EA MOV AX,
14、 [CX] ?* SRC 和 DST 的字長(zhǎng)一致 MOV DL, [ BX ] ; [BX]指示一個(gè)字節(jié)單元 MOV DX, [ BX ] ; [BX]指示一個(gè)字單元* 適于數(shù)組、字符串、表格的處理,5 寄存器相對(duì)尋址方式,有效地址是寄存器內(nèi)容與有符號(hào)8位或16位位移量之和,寄存器可以是BX、BP或SI、DI有效地址=BX/BP/SI/DI+8/16位位移量段地址對(duì)應(yīng)B
15、X/SI/DI寄存器默認(rèn)是DS,對(duì)應(yīng)BP寄存器默認(rèn)是SS;可用段超越前綴改變。適于數(shù)組、字符串、表格的處理,寄存器相對(duì)尋址指令,MOV AX,[DI+06H];AX←DS:[DI+06H]MOV AX,[BP+06H];AX←SS:[BP+06H],指令功能,執(zhí)行過程,6 基址變址尋址方式,有效地址由基址寄存器(BX或BP)的內(nèi)容加上變址寄存器(SI或DI)的內(nèi)容構(gòu)成:有效地址=BX/BP+SI/DI段地址對(duì)應(yīng)BX基址寄
16、存器默認(rèn)是DS,對(duì)應(yīng)BP基址寄存器默認(rèn)是SS;可用段超越前綴改變,基址變址尋址指令,MOV AX,[BX+SI];AX←DS:[BX+SI]MOV AX,[BP+DI];AX←SS:[BP+DI]MOV AX,DS:[BP+DI];AX←DS:[BP+DI],指令功能,執(zhí)行過程,適于數(shù)組、字符串、表格的處理MOV AX,[BX+BP] ×MOV AX,[SI+DI] ×,7 相對(duì)基址變址尋址方式
17、,有效地址是基址寄存器(BX/BP)、變址寄存器(SI/DI)與一個(gè)8位或16位位移量之和:有效地址=BX/BP+SI/DI+8/16位位移量段地址對(duì)應(yīng)BX基址寄存器默認(rèn)是DS,對(duì)應(yīng)BP基址寄存器默認(rèn)是SS;可用段超越前綴改變,相對(duì)基址變址尋址指令,MOV AX,[BX+SI+06H];AX←DS:[BX+SI+06H],位移量可用符號(hào)表示 同一尋址方式有多種表達(dá)形式,指令功能,執(zhí)行過程,用符號(hào)表示位移量,在寄存器相對(duì)尋址或
18、相對(duì)基址變址尋址方式中,位移量可用符號(hào)表示: COUNT DB 100MOV AX,[SI+COUNT];COUNT是事先定義的變量或常量(就是數(shù)值)MOV AX,[BX+SI+WNUM];WNUM也是變量或常量,2024/3/26,27,多種表達(dá)形式,同一尋址方式可以寫成不同的形式:MOV AX,[BX][SI];等同于 MOV AX,[BX+SI]MOV AX,COUNT[SI];等同于 MOV AX
19、,[SI+COUNT]MOV AX,WNUM[BX][SI];等同于 MOV AX,WNUM[BX+SI];等同于 MOV AX,[BX+SI+WNUM],2024/3/26,28,練習(xí),指出下列指令中的錯(cuò)誤:MOV CS,DXMOV CH,SIMOV DX,[BX][BP]MOV CX,[SI][DI]MOV CL,100HMOV DS,2000HMOV [BX+CX],AL,2024/3/2
20、6,29,練習(xí),已知:DS=0930H,SS=0915H,BX=0080H,ES=0930H,如果源操作數(shù)的物理地址為095C0H,試寫出下列指令中BP、SI、DI寄存器中的內(nèi)容。(1)MOV AX,[BP]BP= 0470H (2)MOV AX,[SI+220H]SI= 00A0H(3)MOV AX,[BX+80H][DI]DI= 01C0H,例:編寫一段顯示字符串STRING的程序 DATA
21、 SEGMENT STRING DB ‘ HAPPY NEW YEAR! ’, 0DH , 0AH , ‘ $ ’ COUNT DW 17 DATA ENDS,( 1 ) 直接尋址 mov dl, string mov ah, 2
22、 int 21h ; 顯示字符‘H’ mov dl, string+1 mov ah, 2 int 21h ; 顯示字符‘A’ : :,(
23、2 ) 寄存器間接尋址 mov cx, count ; mov cx, 17 mov bx, offset string ; string的偏址 ? bxNext : mov dl, [bx] mov ah,
24、2 int 21h ; 顯示一個(gè)字符 inc bx loop next ; 循環(huán)指令( 3 ) 寄存器相對(duì)尋址 mov cx, count ; mov cx,
25、 17 mov si, 0 Next : mov dl, string[si] ; mov dl, [string+si] mov ah, 2 int 21h ; 顯示一個(gè)字符
26、 inc si loop next ; 循環(huán)指令,,,( 4 ) 基址變址尋址 mov cx, count ; mov cx, 17 mov bx, offset string ; string的偏址 ? bx
27、 mov si, 0Next : mov dl, [bx] [si] ; mov dl, [bx+si] mov ah, 2 int 21h ; 顯示一個(gè)字符 inc si lo
28、op next ; 循環(huán)指令( 5 ) DOS 顯示字符串功能 mov dx, offset string ; string的偏址 ? dx ; lea dx, string
29、 mov ah, 9 int 21h ; 顯示一串字符,,2024/3/26,33,與轉(zhuǎn)移地址有關(guān)的尋址方式,順序執(zhí)行的指令地址是由指令指針寄存器IP自動(dòng)增量形成的。程序轉(zhuǎn)移的地址必須由轉(zhuǎn)移類指令和CALL指令指出,這類指令表示轉(zhuǎn)向地址的尋址方式包括:段內(nèi)直接尋址段內(nèi)間接尋址段間直接尋址段間間接尋址,2024/3/2
30、6,34,與轉(zhuǎn)移地址有關(guān)的尋址方式,三個(gè)表示轉(zhuǎn)移距離(稱為位移量)的操作符:SHORT、NEAR、FAR。SHORT表示位移量在-128~127字節(jié)之間。NEAR表示在同一段內(nèi)轉(zhuǎn)移,位移量在-32768~32767字節(jié)范圍內(nèi)。FAR表示轉(zhuǎn)移距離超過±32K字節(jié),或是在不同段之間轉(zhuǎn)移。,2024/3/26,35,如何修改CS、IP,當(dāng)轉(zhuǎn)移指令執(zhí)行后,必須修改IP或CS、IP的值。當(dāng)轉(zhuǎn)移指令給出位移量時(shí),用IP當(dāng)前值加上位移
31、量即為新的IP的值。SHORT轉(zhuǎn)移,稱為短轉(zhuǎn)移,位移量用一個(gè)字節(jié)(8位)來表示。NEAR轉(zhuǎn)移,稱為近轉(zhuǎn)移,位移量用16位表示,因?yàn)槌绦蚩刂迫匀辉诋?dāng)前代碼段,所以只修改IP的值,CS的值不變。FAR轉(zhuǎn)移,稱為遠(yuǎn)轉(zhuǎn)移,因?yàn)槌绦蚩刂瞥隽水?dāng)前代碼段,所以CS和IP都必須修改為新的值。,2024/3/26,36,段內(nèi)直接尋址,段內(nèi)直接尋址方式,如 JMP SHORT NEXT JMP NEA
32、R PTR AGAIN 1060:000D EB04 JMP SHORT NEXT IP當(dāng)前值→ 1060:000F … … 1060:0011 … … 1060:0013 0207 NEXT: ADD AL,[BX],2024/3/26,37,例子,例如: …next1: … JMP next1; 向前轉(zhuǎn)移,偏移量之差為負(fù)數(shù) … JMP
33、next2; 向后轉(zhuǎn)移,偏移量之差為正數(shù) …next2: …,2024/3/26,38,段內(nèi)間接尋址,假設(shè): (DS)= 2000H,(BX)= 1256H,(SI)= 528FH, 位移量 = 20A1H,(232F7H)= 3280H,(264E5H)= 2450H。 例3.10 JMP BX 則執(zhí)行該指令后(IP)= 1256H 例3.11 JMP [BX][SI] 則指令執(zhí)行后(
34、IP)=(16d ×(DS)+(BX)+(SI)) =(20000H + 1256H + 528FH) =(264E5H) = 2450H,2024/3/26,39,段間轉(zhuǎn)移,段間轉(zhuǎn)移——遠(yuǎn)轉(zhuǎn)移(far)從當(dāng)前代碼段跳轉(zhuǎn)到另一個(gè)代碼段,可以在1MB范圍需要更改CS段地址和IP偏移地址目標(biāo)地址必須用一個(gè)32位數(shù)表達(dá),叫做32位遠(yuǎn)指針,它就是邏輯地址,2
35、024/3/26,40,段間直接尋址,因?yàn)槭嵌伍g轉(zhuǎn)移,CS和IP都要更新 段間直接尋址和段內(nèi)直接尋址類似,指令中直接給出轉(zhuǎn)向地址,不同的是,在符號(hào)地址之前要加上表示段間遠(yuǎn)轉(zhuǎn)移的操作符FAR PTR。 指令格式如下:JMP FAR PTR OUTSEG;遠(yuǎn)轉(zhuǎn)移到另一代碼段的OUTSEG,2024/3/26,41,段間間接尋址,用相繼兩個(gè)字的內(nèi)容裝入IP和CS來達(dá)到段間的轉(zhuǎn)移目的的,但這兩個(gè)字的存儲(chǔ)器地址是通過指令中的數(shù)據(jù)尋址方式(
36、除立即尋址方式和寄存器尋址方式外)來取得的。為了說明尋址兩個(gè)字單元,指令中必須加上雙字操作符DWORD。指令格式如下: JMP DWORD PTR [SI] JMP DWORD PTR[TABLE+BX],2024/3/26,42,匯編語言指令格式,由4部分組成:標(biāo)號(hào):指令助記符 目的操作數(shù),源操作數(shù);注釋,標(biāo)號(hào)表示該指令在主存中的邏輯地址,每個(gè)指令助記符就代表一種指令,目的和源操作數(shù)表示參與操作的對(duì)象,注釋是對(duì)
37、該指令或程序段功能的說明,2024/3/26,43,指令操作數(shù)的表達(dá)(1),r8——任意一個(gè)8位通用寄存器AH AL BH BL CH CL DH DLr16——任意一個(gè)16位通用寄存器AX BX CX DX SI DI BP SPreg——代表r8或r16seg——段寄存器 CS/DS/ES/SS,一定要熟悉噢!,2024/3/26,44,指令操作數(shù)的表達(dá)(2),m8——一個(gè)8位存儲(chǔ)器操作數(shù)單元(所有主存尋址方式
38、)m16——一個(gè)16位存儲(chǔ)器操作數(shù)單元(所有主存尋址方式)mem——代表m8或m16,一定要熟悉噢!,2024/3/26,45,指令操作數(shù)的表達(dá)(3),i8——一個(gè)8位立即數(shù)i16——一個(gè)16位立即數(shù)imm——代表i8或i16dest——目的操作數(shù)src——源操作數(shù),一定要熟悉噢!,2024/3/26,46,8086指令系統(tǒng)概述,Intel 8086指令系統(tǒng)共有117條基本指令,可分成6個(gè)功能組① 數(shù)據(jù)傳送類指令② 算術(shù)
39、運(yùn)算類指令③ 位操作類指令④ 串操作類指令⑤ 控制轉(zhuǎn)移類指令⑥ 處理機(jī)控制類指令,如何學(xué)習(xí),2024/3/26,47,學(xué)習(xí)指令的注意事項(xiàng),指令的功能——該指令能夠?qū)崿F(xiàn)何種操作。通常指令助記符就是指令功能的英文單詞或其縮寫形式指令支持的尋址方式——該指令中的操作數(shù)可以采用何種尋址方式指令對(duì)標(biāo)志的影響——該指令執(zhí)行后是否對(duì)各個(gè)標(biāo)志位有影響,以及如何影響其他方面——該指令其他需要特別注意的地方,如指令執(zhí)行時(shí)的約定設(shè)置、必須預(yù)置的
40、參數(shù)、隱含使用的寄存器等,邏輯段分配,立即數(shù)尋址的功能,立即數(shù)尋址的執(zhí)行,寄存器尋址的功能,寄存器尋址的執(zhí)行,直接尋址的功能,直接尋址的執(zhí)行,寄存器間接尋址的功能,寄存器間接尋址的執(zhí)行,寄存器相對(duì)尋址的功能,寄存器相對(duì)尋址的執(zhí)行,基址變址尋址的功能,基址變址尋址的執(zhí)行,相對(duì)基址變址尋址的功能,相對(duì)基址變址尋址的執(zhí)行,2024/3/26,63,教學(xué)提示,全面而準(zhǔn)確地理解每條指令的功能和應(yīng)用,是編寫匯編語言程序的關(guān)鍵,逐個(gè)展開指令,2024
41、/3/26,64,2024/3/26,65,數(shù)據(jù)傳送類指令,數(shù)據(jù)傳送是計(jì)算機(jī)中最基本、最重要的一種操作傳送指令也是最常使用的一類指令傳送指令把數(shù)據(jù)從一個(gè)位置傳送到另一個(gè)位置除標(biāo)志寄存器傳送指令外,均不影響標(biāo)志位重點(diǎn)掌握MOV XCHG XLAT PUSH POP LEA,2024/3/26,66,1 通用數(shù)據(jù)傳送指令,提供方便靈活的通用傳送操作有3條指令MOVXCHGXLAT,MOV,XCHG,XLAT,2
42、024/3/26,67,傳送指令MOV(move),把一個(gè)字節(jié)或字的操作數(shù)從源地址傳送至目的地址,MOV reg/mem,imm;立即數(shù)送寄存器或主存,MOV,例題3.1,MOV reg/mem/seg,reg;寄存器送(段)寄存器或主存,例題3.2,MOV reg/seg,mem;主存送(段)寄存器,例題3.3,MOV reg/mem,seg;段寄存器送寄存器或主存,例題3.4,2024/3/26,68,,例3.1:立即數(shù)傳送
43、,mov al,4;al←4,字節(jié)傳送mov cx,0ffh;cx←00ffh,字傳送mov si,200h;si←0200h,字傳送mov byte ptr [si],0ah;byte ptr 說明是字節(jié)操作mov word ptr [si+2],0bh;word ptr 說明是字操作,注意立即數(shù)是字節(jié)量還是字量 明確指令是字節(jié)操作還是字操作,MOV,2024/3/26,69,,例3.2:寄存器傳送,mov ax,
44、bx;ax←bx,字傳送mov ah,al;ah←al,字節(jié)傳送mov ds,ax;ds←ax,字傳送mov [si],al;[si]←al,字節(jié)傳送,MOV,2024/3/26,70,,例3.3:存儲(chǔ)器傳送,mov al,[bx]mov dx,[bp];dx←ss:[bp]mov es,[si];es←ds:[si],不存在存儲(chǔ)器向存儲(chǔ)器的傳送指令,MOV,2024/3/26,71,,例3.4:段寄存器傳送,mo
45、v [si],dsmov ax,es;ax←esmov ds,ax;ds←ax←es,對(duì)段寄存器的操作有一些限制,MOV,2024/3/26,72,MOV指令傳送功能,MOV也并非任意傳送,2024/3/26,73,非法傳送種種,兩個(gè)操作數(shù)的類型不一致例如源操作數(shù)是字節(jié),而目的操作數(shù)是字;或相反兩個(gè)操作數(shù)不能都是存儲(chǔ)器傳送指令很靈活,但主存之間的直接傳送卻不允許段寄存器的操作有一些限制段寄存器屬專用寄存器,對(duì)他們的操作
46、能力有限,示例,示例,示例,2024/3/26,74,兩個(gè)操作數(shù)的類型要一致,絕大多數(shù)雙操作數(shù)指令,除非特別說明,目的操作數(shù)與源操作數(shù)必須類型一致,否則為非法指令MOV AL,050AH;非法指令:050Ah為字,而AL為字節(jié)寄存器有明確的字節(jié)或字類型,有寄存器參與的指令其操作數(shù)類型就是寄存器的類型對(duì)于存儲(chǔ)器單元與立即數(shù)同時(shí)作為操作數(shù)的情況,必須顯式指明;byte ptr指示字節(jié)類型,word ptr指示字類型,2024/3/2
47、6,75,兩個(gè)操作數(shù)不能都是存儲(chǔ)器,8086指令系統(tǒng)不允許兩個(gè)操作數(shù)都是存儲(chǔ)單元(除串操作指令),要實(shí)現(xiàn)這種傳送,可通過寄存器間接實(shí)現(xiàn)mov ax,buffer1;ax←buffer1(將buffer1內(nèi)容送ax)mov buffer2,ax;buffer2←ax;這里buffer1和buffer2是兩個(gè)字變量;實(shí)際表示直接尋址方式,2024/3/26,76,要小心段寄存器的操作,不允許立即數(shù)傳送給段寄存器MOV DS,1
48、00H;非法指令:立即數(shù)不能傳送段寄存器不允許直接改變CS值MOV CS,[SI];不允許使用的指令不允許段寄存器之間的直接數(shù)據(jù)傳送MOV DS,ES;非法指令:不允許段寄存器間傳送,2024/3/26,77,練習(xí)題,1. 已知某操作數(shù)的物理地址是2117AH,則它的段地址和偏移地址可能是( )。A. 2025∶0F2A B. 2108∶00EAC. 2000∶017A D.
49、 2100∶117A,2. 某程序裝入內(nèi)存后,DS=1200H,CS=1400H,則程序中數(shù)據(jù)段中的數(shù)據(jù)最多是( )字節(jié)。A. 2K B. 4KC. 8K D. 16K,?,?,2024/3/26,78,練習(xí)題,3.假設(shè)某個(gè)字的值是1234H,其低位字節(jié)地址是20H,高位字節(jié)地址是21H,那么該字的字地址是________。,
50、4.指令“MOV AX,20H[SI]”中源操作數(shù)的物理地址表達(dá)式是______。,2024/3/26,79,交換指令XCHG(exchange),把兩個(gè)地方的數(shù)據(jù)進(jìn)行互換,寄存器與寄存器之間對(duì)換數(shù)據(jù)寄存器與存儲(chǔ)器之間對(duì)換數(shù)據(jù)不能在存儲(chǔ)器與存儲(chǔ)器之間對(duì)換數(shù)據(jù)不允許使用段寄存器,XCHG,XCHG reg,reg/mem;reg ? reg/mem,例題3.6,例題3.5,2024/3/26,80,,例3.5:寄存器間交換,mov
51、 ax,1234h;ax=1234hmov bx,5678h;bx=5678hxchg ax,bx;ax=5678h,bx=1234hxchg ah,al;ax=7856h,XCHG,2024/3/26,81,,例3.6:寄存器與存儲(chǔ)器交換,xchg ax,[2000h];字交換;等同于 xchg [2000h],axxchg al,[2000h] ;字節(jié)交換;等同于 xchg [2000h],al,XCHG,2
52、024/3/26,82,換碼指令執(zhí)行前:在主存建立一個(gè)字節(jié)量表格,內(nèi)含要轉(zhuǎn)換成的目的代碼表格首地址存放于BX,AL存放相對(duì)表格首地址的位移量換碼指令執(zhí)行后:將AL寄存器的內(nèi)容轉(zhuǎn)換為目標(biāo)代碼,換碼指令XLAT(translate),將BX指定的緩沖區(qū)中、AL指定的位移處的一個(gè)字節(jié)數(shù)據(jù)取出賦給AL,XLAT,XLAT;al←ds:[bx+al],例題3.7,2024/3/26,83,,例3.7:代碼轉(zhuǎn)換,mov bx,100hm
53、ov al,03hxlat,換碼指令沒有顯式的操作數(shù),但使用了BX和AL;因?yàn)閾Q碼指令使用了隱含尋址方式——采用默認(rèn)操作數(shù),XLAT,2024/3/26,84,2 堆棧操作指令,堆棧是一個(gè)“后進(jìn)先出FILO”(或說“先進(jìn)后出FILO”)的主存區(qū)域,位于堆棧段中;SS段寄存器記錄其段地址堆棧只有一個(gè)出口,即當(dāng)前棧頂;用堆棧指針寄存器SP指定棧頂是地址較小的一端(低端),棧底不變,2024/3/26,85,堆棧和隊(duì)列,堆棧:按照后進(jìn)
54、先出(LIFO)的原則組織的存儲(chǔ)器空間(棧)隊(duì)列:按照先進(jìn)先出(FIFO)的原則組織的存儲(chǔ)器空間,2024/3/26,86,堆棧的操作,堆棧只有兩種基本操作:進(jìn)棧和出棧,對(duì)應(yīng)兩條指令PUSH和POP,PUSH;進(jìn)棧指令先使堆棧指針SP減2,然后把一個(gè)字操作數(shù)存入堆棧頂部,POP;出棧指令把棧頂?shù)囊粋€(gè)字傳送至指定的目的操作數(shù),然后堆棧指針SP加2,2024/3/26,87,進(jìn)棧指令PUSH,push axpush [2000h],
55、PUSH r16/m16/seg;SP←SP-2;SS:[SP]←r16/m16/seg,PUSH,2024/3/26,88,出棧指令POP,pop axpop [2000h],POP r16/m16/seg;r16/m16/seg←SS:[SP];SP←SP+2,POP,2024/3/26,89,堆棧的特點(diǎn),堆棧操作的單位是字,進(jìn)棧和出棧只對(duì)字量字量數(shù)據(jù)從棧頂壓入和彈出時(shí),都是低地址字節(jié)送低字節(jié),高地址字節(jié)送高字節(jié)堆棧操
56、作遵循先進(jìn)后出原則,但可用存儲(chǔ)器尋址方式隨機(jī)存取堆棧中的數(shù)據(jù)堆棧常用來臨時(shí)存放數(shù)據(jù)傳遞參數(shù)保存和恢復(fù)寄存器,例題3.8,2024/3/26,90,,例3.8:現(xiàn)場(chǎng)保護(hù)恢復(fù),push ax;進(jìn)入子程序后push bxpush ds...pop ds;返回主程序前pop bxpop ax,2024/3/26,91,練習(xí)題,5.堆棧中當(dāng)前出棧的存儲(chǔ)單元地址是( ) A. SS*10H+SP B.
57、 SS*10H+BP C. SS*10+SP D.SS*10+BP,?,?,6.當(dāng)SS=9876H, SP=4328H,執(zhí)行POPF指令后,堆棧頂部的物理地址是( ) A. 9CA90H B. 9CA8AH C. 9CA86H D. 0DB00H,2024/3/26,92,8.已知SP=2110H,執(zhí)行POP AX后,SP寄存器的值
58、是( )。 A.2111H
59、60; B.2112H C.210FH
60、160; D.210EH,練習(xí)題,7. 下面指令中,源操作數(shù)的尋址方式為立即尋址的是( )。 A. MOV AX,OFFSET A B.MOV AX,A
61、0; C. MOV AX,A+1 D.MOV AX,A[BX],?,?,2024/3/26,93,10. 8086/8088 CPU可訪問2個(gè)獨(dú)立的地址空間,一個(gè)為存貯器地址空間
62、,其大小為____個(gè)字節(jié);另一個(gè)為______,其大小為_______字節(jié)。,練習(xí)題,9.設(shè)(CS)=25FFH,(DS)=2140H,(SS)=2510H,(BP)=02D0H,(SI)=0010H,(DI)=0206H,則(1)指令MOV AX,[BP+SI+2]的源操作數(shù)有效地址為_______,物理地址為________。(2)指令MOV AX,[DI+100H]的源操作數(shù)有效地址為_______,物理地址為________
63、.,2024/3/26,94,3 標(biāo)志寄存器傳送指令,標(biāo)志寄存器傳送指令用來傳送標(biāo)志寄存器FLAGS的內(nèi)容,方便進(jìn)行對(duì)各個(gè)標(biāo)志位的直接操作有2對(duì)4條指令低8位傳送:LAHF和SAHF16位傳送:PUSHF和POPF,2024/3/26,95,標(biāo)志低字節(jié)進(jìn)出AH指令,LAHF;AH←FLAGS的低字節(jié)LAHF指令將標(biāo)志寄存器的低字節(jié)送寄存器AHSF/ZF/AF/PF/CF狀態(tài)標(biāo)志位分別送入AH的第7/6/4/2/0位,而AH
64、的第5/3/1位任意,SAHF;FLAGS的低字節(jié)←AHSAHF將AH寄存器內(nèi)容送FLAGS的低字節(jié)用AH的第7/6/4/2/0位相應(yīng)設(shè)置SF/ZF/AF/ PF/CF標(biāo)志,2024/3/26,96,標(biāo)志寄存器進(jìn)出堆棧指令,PUSHF;SP←SP-2;SS:[SP]←FLAGSPUSHF指令將標(biāo)志寄存器的內(nèi)容壓入堆棧,同時(shí)棧頂指針SP減2,POPF;FLAGS←SS:[SP];SP←SP+2POPF指令將棧頂字單元內(nèi)容
65、送標(biāo)志寄存器,同時(shí)棧頂指針SP加2,例題3.9,2024/3/26,97,,例3.9:置位單步標(biāo)志,pushf;保存全部標(biāo)志到堆棧pop ax;從堆棧中取出全部標(biāo)志or ax,0100h;設(shè)置D8=TF=1,;ax其他位不變push ax;將ax壓入堆棧popf;FLAGS←AX;將堆棧內(nèi)容取到標(biāo)志寄存器,2024/3/26,98,4 地址傳送指令,地址傳送指令將存儲(chǔ)器單元的邏輯地址送至指定的寄存器有效地址傳
66、送指令 LEA指針傳送指令 LDS和LES注意不是獲取存儲(chǔ)器單元的內(nèi)容,2024/3/26,99,有效地址傳送指令LEA(load EA),將存儲(chǔ)器操作數(shù)的有效地址傳送至指定的16位寄存器中,例題3.10,LEA r16,mem;r16←mem的有效地址EA,LEA,2024/3/26,100,,例3.10:獲取有效地址,mov bx,0400hmov si,3chlea bx,[bx+si+0f62h];BX=0400
67、h+003ch+0f62h=139EH,獲得主存單元的有效地址;不是物理地址,也不是該單元的內(nèi)容 可以實(shí)現(xiàn)計(jì)算功能,而MOV不能,LEA,2024/3/26,101,指針傳送指令,LDS r16,mem;r16←mem,;DS←mem+2LDS指令將主存中mem指定的字送至r16,并將mem的下一字送DS寄存器,LES r16,mem;r16←mem,;ES←mem+2LES指令將主存中mem指定的字送至r16,并將mem
68、的下一字送ES寄存器,例題3.11,2024/3/26,102,,例3.11:地址指針傳送,mov word ptr [3060h],0100hmov word ptr [3062h],1450hles di,[3060h];es=1450h,di=0100hlds si,[3060h];ds=1450h,si=0100h,mem指定主存的連續(xù)4個(gè)字節(jié)作為邏輯地址(32位的地址指針),送入DS:r16或ES:r16,2024/
69、3/26,103,5 輸入輸出指令,8086通過輸入輸出指令與外設(shè)進(jìn)行數(shù)據(jù)交換;呈現(xiàn)給程序員的外設(shè)是端口(Port)即I/O地址8086用于尋址外設(shè)端口的地址線為16條,端口最多為216=65536(64K)個(gè),端口號(hào)為0000H~FFFFH每個(gè)端口用于傳送一個(gè)字節(jié)的外設(shè)數(shù)據(jù),2024/3/26,104,輸入輸出尋址方式,8086的端口有64K個(gè),無需分段,設(shè)計(jì)有兩種尋址方式直接尋址:只用于尋址00H~FFH前256個(gè)端口,操作
70、數(shù)i8表示端口號(hào)間接尋址:可用于尋址全部64K個(gè)端口,DX寄存器的值就是端口號(hào)對(duì)大于FFH的端口只能采用間接尋址方式,2024/3/26,105,輸入指令I(lǐng)N,將外設(shè)數(shù)據(jù)傳送給CPU內(nèi)的AL/AX,IN AL,i8;字節(jié)輸入:AL←I/O端口(i8直接尋址)IN AL,DX;字節(jié)輸入:AL←I/O端口(DX間接尋址)IN AX,i8;字輸入:AX←I/O端口(i8直接尋址)IN AX,DX;字輸入:AX←I/O端口(D
71、X間接尋址),IN,例題3.12,演示,2024/3/26,106,,例3.12:輸入字量,;直接尋址,字節(jié)量輸入in al,21hmov ah,alin al,20h;直接尋址,字量輸入in ax,20h;間接尋址,字量輸入mov dx,20hin ax,dx,兩段功能相同 字量數(shù)據(jù)傳送實(shí)際上實(shí)現(xiàn)了連續(xù)的兩個(gè)端口地址的字節(jié)量傳送,,IN,2024/3/26,107,注意: * 不影響標(biāo)志位* 前256個(gè)端口號(hào)
72、00H~FFH可直接在指令中指定(長(zhǎng)格式)* 如果端口號(hào)? 256,端口號(hào) ? DX(短格式)例: IN AX, 28H MOV DATA_WORD, AX例: MOV DX, 3FCH IN AX, DX例: OUT 5, AL例:測(cè)試某狀態(tài)寄存器(端口號(hào)27H)的第2位是否為1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- (第3章_arm尋址方式與指令系統(tǒng))_9_10節(jié)-
- 11 尋址方式和指令系統(tǒng)
- 第3章指令系統(tǒng)
- 第3章 指令系統(tǒng)
- 第3章 指令系統(tǒng)
- 第3章-指令系統(tǒng)
- 第3章 指令系統(tǒng).PDF
- 第3章 指令系統(tǒng).PDF
- 微控制器尋址方式與指令系統(tǒng)
- 80x86的指令系統(tǒng)和尋址方式
- 第5章 指令系統(tǒng)
- 第5章 指令系統(tǒng)
- 第三章 80x86尋址方式與指令系統(tǒng)
- 第3章 指令系統(tǒng).ppt.convertor
- 第3章單片機(jī)指令系統(tǒng)
- asm03 80 x86的指令系統(tǒng)和尋址方式1
- 第3章arm微處理器的指令系統(tǒng)
- 第3章 mcs-51 的指令系統(tǒng)new1
- 3指令系統(tǒng)
- 指令系統(tǒng)
評(píng)論
0/150
提交評(píng)論