版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
IBM-PC匯編語(yǔ)言程序設(shè)計(jì)第3章80×86的指令系統(tǒng)和尋址方式第一節(jié)、80×86的尋址方式
第二節(jié)、程序占有的空間和執(zhí)行時(shí)間
第三節(jié)、80×86的指令系統(tǒng)
第一節(jié)、80×86的尋址方式
一、指令的概念二、尋址方式取指令、取數(shù)、存數(shù)時(shí),都要訪問(wèn)內(nèi)存,被訪問(wèn)內(nèi)存單元的地址由CPU提供DSESSSCSIP數(shù)據(jù)暫存器PSW標(biāo)志寄存器執(zhí)行部件控制電路指令譯碼器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組指令隊(duì)列總線接口控制電路運(yùn)算器地址加法器、、、指令1指令2指令3指令4、、、數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)3、、、地址總線AB數(shù)據(jù)總線DB控制總線CB地址譯碼器CPU內(nèi)存8088編程結(jié)構(gòu)DSESSSCSIP數(shù)據(jù)暫存器PSW標(biāo)志寄存器執(zhí)行部件控制電路指令譯碼器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組指令隊(duì)列總線接口控制電路運(yùn)算器地址加法器8086/8088編程結(jié)構(gòu)BIUEU可表示為:
物理地址PA=段地址+偏移地址
=(段寄存器)×16+偏移地址
=(段寄存器)×10H+偏移地址即段寄存器的內(nèi)容左移4位,加上偏移地址16位段地址01516位偏移地址015000020位物理地址019測(cè)試:(DS)=3000H,(ES)=3100H,(BX)=0100H,問(wèn)DS:BX=??ES:BX=??2、指令格式操作碼指示指令所要完成的操作(即:要做什么?)例如,數(shù)據(jù)傳送、加法和減法等。
注意:操作碼是指令中必不可少的部分。一條指令可以沒(méi)有操作數(shù),但不可以沒(méi)有操作碼。指令一般由操作碼和一個(gè)或多個(gè)操作數(shù)組成。如:操作碼操作數(shù)
MOV
AX,
BX
操作碼操作數(shù)...操作數(shù)按操作碼實(shí)現(xiàn)的功能,指令可以分為6類(lèi)。數(shù)據(jù)傳送算術(shù)運(yùn)算邏輯運(yùn)算串操作控制轉(zhuǎn)移處理機(jī)控制
按功能指令分六類(lèi)操作數(shù)指示指令執(zhí)行過(guò)程中所需要的數(shù)據(jù),如加法指令中加數(shù)和被加數(shù)等,這些數(shù)據(jù)可以是操作數(shù)本身,也可以來(lái)自某寄存器或存儲(chǔ)器單元。一條指令中可以包含一個(gè)或多個(gè)操作數(shù),指定操作數(shù)所在位置的方法稱(chēng)為尋址方式。了解操作數(shù)的來(lái)源、個(gè)數(shù)、類(lèi)型(2)操作數(shù)個(gè)數(shù)
按指令格式中,操作數(shù)個(gè)數(shù)的多少分為三類(lèi):無(wú)操作數(shù):指令只有一個(gè)操作碼,沒(méi)有操作數(shù)
如:NOP,HLT,CLC單操作數(shù):指令中給出一個(gè)操作數(shù)如:INCDI雙操作數(shù):指令中給出兩個(gè)操作數(shù)。①無(wú)操作數(shù):指令只有一個(gè)操作碼,沒(méi)有操作數(shù)▲有些操作不需要操作數(shù)。如HLT,NOP等處理機(jī)控制指令。②單操作數(shù):
指令中給出一個(gè)操作數(shù)。有兩種可能:▲有些操作只需要一個(gè)操作數(shù)如INCAL;(AL)←(AL)+1▲有些操作將另一個(gè)操作數(shù)隱含在指令中如MULBL;(AX)←(AL)×(BL)(3)操作數(shù)類(lèi)型8086/8088:有的操作既可對(duì)字節(jié)操作,又可對(duì)字操作有的操作只允許對(duì)字操作指令應(yīng)指明參與操作的數(shù)是字節(jié)還是字,即操作數(shù)的類(lèi)型。通常操作數(shù)的類(lèi)型可由操作數(shù)本身隱含給出。只在特殊情況下需要明確地指明是什么類(lèi)型的操作。①指令中有寄存器操作數(shù),由寄存器操作數(shù)決定類(lèi)型。
例:MOV[BX],AL
;字節(jié)操作,[BX]←ALMOV[BX],AX
;字操作,[BX]←AL,[BX+1]←AH②指令操作數(shù)中無(wú)寄存器,則由內(nèi)存操作數(shù)的類(lèi)型決定。value
00H….內(nèi)存value
00H00H例
value是一個(gè)變量(即內(nèi)存操作數(shù));
若定義value為字節(jié)類(lèi)型
:
則MOVvalue,0是字節(jié)操作。
若定義value為字類(lèi)型
:
則MOVvalue,0是一個(gè)字操作。1、與數(shù)據(jù)有關(guān)的尋址方式2、與轉(zhuǎn)移地址有關(guān)的尋址方式二、尋址方式尋址方式指的是指令按什么方式給出操作數(shù)或與其有關(guān)的地址信息。(1)8086的尋址方式共7種尋址方式:1.立即數(shù)尋址2.寄存器尋址3.
直接尋址4.
寄存器間接尋址5種與內(nèi)存單元5.寄存器相對(duì)尋址有關(guān)的尋址6.
基址變址尋址(存儲(chǔ)器操作數(shù))7.
相對(duì)基址變址尋址1、與數(shù)據(jù)有關(guān)的尋址方式①立即數(shù)尋址
操作數(shù)在指令中,取來(lái)指令立即可得到操作數(shù)。稱(chēng)該操作數(shù)為立即數(shù)。立即數(shù)可以是8位或16位。立即數(shù)常用來(lái)給寄存器或內(nèi)存單元賦初值。例:MOVAL,64H;AL←64H MOV AX,2058H;AX←2058HMOVAL,‘A’
立即數(shù)只能為整數(shù),且只能做源操作數(shù)只能用于
SRC字段
MOV40H,ALSRC和DST的字長(zhǎng)一致
MOVAH,3064H××注意:②寄存器尋址方式操作數(shù)在寄存器中,指令中指定寄存器名
8位操作數(shù),用8位寄存器:AH、AL、BH、BL、CH、CL、DH、DL16位操作數(shù),用16位寄存器:AX、BX、CX、DX、SP、BP、SI、DI例MOVBL,AH
執(zhí)行前:(BL)=12H,(AH)=78H
執(zhí)行后:(BL)=78H(AH)=78H注意:寄存器尋址方式只涉及通用寄存器。字節(jié)操作數(shù)只涉及AHALBHBLCHCLDHDLSRC和DST的字長(zhǎng)一致
MOVAH,BXCS不能用
MOV指令改變
MOVCS,AX××總結(jié):立即數(shù)尋址、寄存器尋址的操作數(shù),不用在取完指令后再到內(nèi)存中取數(shù)。DSESSSCSIP數(shù)據(jù)暫存器PSW標(biāo)志寄存器執(zhí)行部件控制電路指令譯碼器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組指令隊(duì)列總線接口控制電路運(yùn)算器地址加法器、、、指令1指令2指令3指令4、、、數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)3、、、地址總線AB數(shù)據(jù)總線DB控制總線CB地址譯碼器后面提到的
5
中尋址方式,
操作數(shù)存放在內(nèi)存中,取完指令后,還需到內(nèi)存取數(shù)。
指令中給出的是該操作數(shù)的地址,包括段地址和偏移地址。DSESSSCSIP數(shù)據(jù)暫存器PSW標(biāo)志寄存器執(zhí)行部件控制電路指令譯碼器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組指令隊(duì)列總線接口控制電路運(yùn)算器地址加法器、、、指令1指令2指令3指令4、、、數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)3、、、地址總線AB數(shù)據(jù)總線DB控制總線CB地址譯碼器內(nèi)存單元的地址由段地址和偏移地址構(gòu)成為減短指令長(zhǎng)度,指令中只給出偏移地址的來(lái)源,段地址由默認(rèn)關(guān)系給出。
MOVAL,[2000H]默認(rèn)的段地址為DS內(nèi)的內(nèi)容CPU根據(jù)偏移地址給出的方式,按默認(rèn)關(guān)系自動(dòng)選擇段寄存器,獲取段值,由段值、偏移值構(gòu)成操作數(shù)所在內(nèi)存單元的物理地址。上例PA=(DS)×10H+2000H即選擇DS寄存器的內(nèi)容為段地址。指令中用[]給出偏移地址。操作數(shù)的偏移地址又稱(chēng)有效地址EA(EfficientAddress)按給出偏移地址方式的不同,分為以下5
種:直接尋址
MOVAL,[1000H]寄存器間接尋址
MOVAL,[BX]寄存器相對(duì)尋址
MOVAL,[BX+10H]基址變址尋址
MOVAL,[BX+SI]
相對(duì)基址變址尋址
MOVAL,[BX+SI+10H]③直接尋址方式存儲(chǔ)器操作數(shù)的有效地址EA在指令中直接給出OP5820存儲(chǔ)器數(shù)據(jù)段AXALAH代碼段00102100020000例:MOVAX,[1000H]對(duì)此例,沒(méi)有用前綴指明操作數(shù)在哪一段,則默認(rèn)在數(shù)據(jù)段中,設(shè)(DS)=2000H,則操作數(shù)的物理地址為:
20000+1000=21000H于是訪問(wèn)該存儲(chǔ)器取出其內(nèi)容送AX例:MOVAX,[1000H]
若(DS)=2000H
內(nèi)存操作數(shù)的物理地址為:
PA=(DS)×10H+EA=2000H×10H+1000H=21000H
執(zhí)行后(AX)=3040H
注意指令MOVAX,[1000H]
與指令MOVAX,1000H有什么不同?默認(rèn)段寄存器為DS。操作數(shù)所在內(nèi)存單元的物理地址為:
PA=(DS)×10H+EA又例:MOV
BX,ES:[1000H]
則是將ES段的1000H及1001H兩單元(字操作,取兩個(gè)字節(jié))內(nèi)容取出送BX。
在匯編語(yǔ)言程序中,不直接用數(shù)值表示偏移地址,用符號(hào)代替數(shù)值表示地址,稱(chēng)符號(hào)地址(變量名)。例符號(hào)buffer表示一個(gè)地址。
MOVAX,[buffer]或?qū)懗蒑OVAX,buffer
源操作數(shù)為buffer指向的內(nèi)存單元的內(nèi)容符號(hào)地址(變量名)經(jīng)匯編連接后,與一個(gè)確定的數(shù)值地址相對(duì)應(yīng)可用操作符Offset
獲取變量的偏移地址。故PA=(DS)×10H+Offsetbuffer
指令執(zhí)行結(jié)果(AX)=0B0AH④寄存器間接尋址
這種尋址方式時(shí),操作數(shù)在存儲(chǔ)器中,而操作數(shù)有效地址由BX、BP、SI和DI中的一個(gè)指出,若未用前綴指明,默認(rèn)關(guān)系為A、使用BX、SI、DI,默認(rèn)段寄存器為DS(BX)PA=(DS)×10H+(SI)(DI)B、使用BP,默認(rèn)段寄存器為SSPA=(SS)×10H+(BP)注意:寄存器間接尋址中的寄存器只有四個(gè),并不是任意一個(gè)寄存器都行。例:
MOVAX,[DI]
若(DS)=3000H(DI)=2000H
則內(nèi)存操作數(shù)的物理地址為:PA=(DS)×10H+(DI)=32000H
執(zhí)行后(AX)=(32000H)=400BH注意指令MOVAX,[DI]
與指令MOVAX,DI有什么不同?MOVAX,[BX]PA=10hx(DS)+(BX)MOVAX,ES:[BX]PA=10h(ES)+(BX)MOVAX,[BP]PA=10h(SS)+(BP)格式舉例:不允許使用AX、CX、DX存放EA(偏移地址,有效地址)MOVAX,[CX]SRC和DST的字長(zhǎng)一致
MOVDL,[BX];[BX]指示一個(gè)字節(jié)單元
MOVDX,[BX];[BX]指示一個(gè)字單元適于數(shù)組、字符串、表格的處理強(qiáng)調(diào):操作數(shù)的有效地址由一個(gè)寄存器與一個(gè)偏移量相加得到偏移量(相對(duì)量)在指令中給出,范圍在0000~FFFFH可用的寄存器有BX、DI
、SI、BP,與寄存器間接尋址相同如:MOVAL,[BX+10H]MOVAH,[DI+20H]MOVDL,30H[SI]MOVDH,40H[BP]⑤寄存器相對(duì)尋址這樣有效地址EA的構(gòu)成為:默認(rèn)段寄存器的關(guān)系與寄存器間接尋址相同A、使用BX、SI、DI,默認(rèn)段寄存器為DS(BX)PA=(DS)×10H+(SI)+偏移量
(DI)B、使用BP,默認(rèn)段寄存器為SSPA=(SS)×10H+(BP)+偏移量
例:
MOVAX,[BX+30H]
若(DS)=2000H(BX)=1000H
則內(nèi)存操作數(shù)的物理地址為:
PA=(DS)×10H+(BX)+30H=21030H
指令執(zhí)行后:
(AX)=(21030H)=8976H例:
MOVAX,60H[BP]
若(SS)=3000H(BP)=200H
則內(nèi)存操作數(shù)的物理地址為:
PA=(SS)×10H+(BP)+60H=30260H
指令執(zhí)行后:
(AX)=(30260H)=0ABCH例:MOV AX,[COUNT+BP]
若(SS)==5000H,
(BP)=3000H,
COUNT=2040HOP4855存儲(chǔ)器堆棧段AXALAH代碼段40205504050000OP位移量COUNT操作碼⑥基址加變址尋址
操作數(shù)的有效地址由一個(gè)基址寄存器與一個(gè)變址寄存器之和給出??捎玫幕芳拇嫫鳛锽X、BP
變址寄存器為SI、DI
如MOVAL,[BX+SI]MOVAX,[BX][DI]MOVDL,[BP+SI]MOVDX,[BP][DI]
默認(rèn)段寄存器由基址寄存器決定。A、
基址寄存器為BX,默認(rèn)段寄存器為DS(SI)PA=(DS)×10H+(BX)+(DI)B、基址寄存器為BP,默認(rèn)段寄存器為SS(SI)PA=(SS)×10H+(BP)+
(DI)注意:只是默認(rèn)關(guān)系,但是可以通過(guò)聲明改變例:
MOVAX,[BX+SI]
若(DS)=4000H(BX)=2000H(SI)=100H
則內(nèi)存操作數(shù)的物理地址為:
PA=(DS)×10H+(BX)+(SI)=42100H
指令執(zhí)行后
(AX)=(42100H)=2345H
格式舉例:
MOVAX,[BX][DI]MOVAX,[BX+DI]MOVAX,ES:[BX][SI]注意:必須是一個(gè)基址寄存器和一個(gè)變址寄存器的組合
MOVAX,[BX][BP]
MOVAX,[SI][DI]⑦相對(duì)基址加變址尋址
操作數(shù)的有效地址由基址寄存器、變址寄存器、偏移量三者之和給出。可用的寄存器與基址加變址尋址方式相同基址寄存器有BX、BP
變址寄存器有SI、DI如MOVAL,[BX+SI+10H]MOVAX,20H[BX][DI]MOVDL,[BP+SI+30H]MOVDX,40H[BP][DI]
默認(rèn)段寄存器由基址寄存器決定,與基址加變址尋址相同①基址寄存器為BX,默認(rèn)段寄存器為DS
(SI)PA=(DS)×10H+(BX)++偏移量
(DI)②基址寄存器為BP,默認(rèn)段寄存器為SS
(SI)PA=(SS)×10H+(BP)++偏移量
(DI)例:
MOVAX,[BX+SI+10H]
若(DS)=4000H(BX)=3000H(SI)=200H
則內(nèi)存操作數(shù)的物理地址為:
PA=(DS)×10H+(BX)+(SI)+10H=43210H
指令執(zhí)行后
(AX)=(43210H)=8877H例:MOVAX,[MASK+BX+DI]
設(shè):(DS)=3000H,
(BX)=1346H
(DI)=0500H,
MASK=1234HOP4855存儲(chǔ)器數(shù)據(jù)段AXALAH代碼段341232A7AH30000HOP位移量MASK操作碼31346H3257AH(DI)(BX)MASK內(nèi)存操作數(shù)按給出偏移地址方式的不同,有以下5種尋址方式:直接尋址
MOVAL,[1000H]寄存器間接尋址
MOVAL,[BX]寄存器相對(duì)尋址
MOVAL,[BX+10H]基址加變址寄存器
MOVAL,[BX+SI]
相對(duì)基址加變址寄存器
MOVAL,[BX+SI+10H]存儲(chǔ)器操作數(shù)的段地址按默認(rèn)關(guān)系得到。特點(diǎn):有BP默認(rèn)SS
無(wú)BP默認(rèn)DS尋址方式的幾點(diǎn)說(shuō)明:1.不自創(chuàng)尋址方式
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《學(xué)前教育概述》課件
- 單位管理制度集合大合集【人力資源管理篇】十篇
- 單位管理制度分享匯編【員工管理篇】十篇
- 單位管理制度分享大全【人員管理篇】
- 單位管理制度范例選集【員工管理】
- 單位管理制度范例合集【人力資源管理篇】十篇
- 單位管理制度呈現(xiàn)合集【員工管理篇】
- 單位管理制度呈現(xiàn)大合集【人事管理】十篇
- 《微點(diǎn)精析》考向19 文化常識(shí) 高考語(yǔ)文一輪復(fù)習(xí)考點(diǎn)微專(zhuān)題訓(xùn)練(原卷+解析)
- 第4單元 民族團(tuán)結(jié)與祖國(guó)統(tǒng)一(B卷·能力提升練)(解析版)
- 中考數(shù)學(xué)第一輪復(fù)習(xí)
- 一汽靖燁發(fā)動(dòng)機(jī)有限公司安全文化知識(shí)手冊(cè)
- 當(dāng)前國(guó)際形勢(shì)
- 湘賀水利樞紐水電站設(shè)計(jì)
- 高壓線防護(hù)架搭設(shè)施工方案
- 四川省成都市2021-2022學(xué)年高一(上)期末調(diào)研考試物理試題Word版含解析
- 二次元作業(yè)指導(dǎo)書(shū)
- GB/T 15180-2010重交通道路石油瀝青
- 公路工程質(zhì)量與安全管理課件
- 計(jì)算機(jī)基礎(chǔ)知識(shí)整理課件
- 高一數(shù)學(xué)必修2《事件的關(guān)系和運(yùn)算》課件
評(píng)論
0/150
提交評(píng)論