




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微型計(jì)算機(jī)原理與接口技術(shù)
第4章指令系統(tǒng)
OIOW?4.1概述
?4.280486尋址方式
?4.380486標(biāo)志寄存器
?4.4匯編語(yǔ)言語(yǔ)法規(guī)則之一
?4.580486基本集指令
微型計(jì)算機(jī)原理與接口技術(shù)
4.1概述
1.指令:通知CPU執(zhí)行某種操作的“命令”,CPU全部指令
的
集合,稱(chēng)為指令系統(tǒng)
2.指令的書(shū)寫(xiě)格式
伊目標(biāo)指令(機(jī)器指令):用一串0,1代碼書(shū)寫(xiě)
注意:硬件只能識(shí)別,存儲(chǔ),運(yùn)行目標(biāo)指令
?符號(hào)指令:用規(guī)定的助記符,規(guī)定的書(shū)寫(xiě)格式書(shū)寫(xiě)
的指令
微型計(jì)算機(jī)原理與接口技術(shù)
3.指令的組成
指令的組成:
操作碼+操作數(shù)
操作碼——告訴計(jì)算機(jī)要執(zhí)行的操作是什么,如:
加、減、邏輯與等。
操作數(shù)——執(zhí)行操作過(guò)程所要操作的數(shù),如加運(yùn)算
的兩個(gè)加數(shù)。
匯編語(yǔ)言的符號(hào)指令
匯編語(yǔ)言是一種符號(hào)語(yǔ)言,它用:
助記符——表示操作碼
符號(hào)或符號(hào)地址——表示操作數(shù)或操作數(shù)地址
微型計(jì)算機(jī)原理與接口技術(shù)
80486符號(hào)指令與機(jī)器指令對(duì)照表
1操作80486符號(hào)指令80486機(jī)器指令
1234H—AXMOVAX,1234HB83412
AX+BX—AXADDAX,BX03C3
CX-DX—CXSUBCX,DX2BCA
|返回調(diào)用程序RETC3
MOV:MOVE傳送ADD:加SUB:減RET:RETURN返回
微型計(jì)算機(jī)原理與接口技術(shù)
4.目標(biāo)程序的生成
CPU只能識(shí)別,存儲(chǔ),運(yùn)行目標(biāo)指令,而用機(jī)器指
令編程非常困難。于是早期的專(zhuān)家們發(fā)明了符號(hào)指令,再經(jīng)過(guò)
軟件把符號(hào)指令一機(jī)器指令。圖示如下:
匯編可執(zhí)行的機(jī)器指令
編輯、編譯、鏈接
源程序程序(目標(biāo)程序)
5.指令長(zhǎng)度
486指令長(zhǎng)度(機(jī)器指令長(zhǎng)度)為1?16字節(jié)
規(guī)定:多字節(jié)指令占用連續(xù)的內(nèi)存單元,存放指令第
一字節(jié)的內(nèi)存地址,稱(chēng)為“指令地址”。
微型計(jì)算機(jī)原理與接口技術(shù)
6.指令存放
先寫(xiě)操作碼,再寫(xiě)操作數(shù)。
多字節(jié)操作數(shù)連續(xù)存放。存放規(guī)律:低位字節(jié)存放在低地
址單元,高位字節(jié)存放在相鄰的高地址單元
如:12345H單元中有一條指令MOVAX,6789H
12345H:操作碼
:MOVAX,6789H
操作數(shù)6789H
J
微型計(jì)算機(jī)原理與接口技術(shù)
7.CPU執(zhí)行指令的過(guò)程
PLA
r--------s(S
ARDK
地
址?1數(shù)
總
地?fù)?jù)
線
址總
AB譯線
碼DB
器
,
」
存儲(chǔ)器2,H1播放
微型計(jì)算機(jī)原理與接口技術(shù)
8.符號(hào)指令的書(shū)寫(xiě)格式
標(biāo)號(hào):操作碼助記符空格操作數(shù)助記符;注釋
如:NEXT:ADDAX,BX;AX+BXfAX
INCSI;SI+1-SI
標(biāo)號(hào):以字母開(kāi)頭,后跟字母,數(shù)字,下劃線,長(zhǎng)度W31字符
標(biāo)號(hào)又稱(chēng)符號(hào)地址,代表該指令的邏輯地址。可有可
無(wú),設(shè)置是為了程序的轉(zhuǎn)向
注解:以“;”開(kāi)頭,不執(zhí)行,打印程序清單時(shí)照原樣打印,
“系統(tǒng)保留字”不能做標(biāo)號(hào)。
微型計(jì)算機(jī)原理與接口技術(shù)
“尋址方式”:通俗的講,就是通知CPU本條指令的操
作數(shù)在哪兒?或者說(shuō)用什么方式才能得到操作數(shù)。
2微型計(jì)算機(jī)原理與接口技術(shù)
操作數(shù)存在方式
在微型計(jì)算機(jī)中,操作數(shù)可能以以下三種方式存在:
?操作數(shù)包含在指令中——即指令的操作數(shù)部分就包含著操作數(shù)本身。
MOVAX,1234H;
ADDAL,2
?操作數(shù)包含在CPU的某一個(gè)內(nèi)部寄存器中
——這時(shí)指令中的操作數(shù)是CPU內(nèi)部的某一個(gè)寄存器
MOVDS,AX
?操作數(shù)在內(nèi)存的數(shù)據(jù)區(qū)中——這時(shí)指令中的操作數(shù)包含著此操作數(shù)的地址
MOVAX,[2000];
MOVBUF,AL
微型計(jì)算機(jī)原理與接口技術(shù)
80486有3類(lèi)7種尋址方式
立即尋址方式:獲得立即數(shù)
寄存器尋址方式:獲得寄存器操作數(shù)
存儲(chǔ)器尋址方式:獲得內(nèi)存操作數(shù)(存儲(chǔ)器操作數(shù)))
學(xué)習(xí)重點(diǎn):怎樣在符號(hào)指令中,正確的描述各種尋址方式
微型計(jì)算機(jī)原理與接口技術(shù)
1.立即尋址方式
這種尋址方式
所提供的操作數(shù)直
接放在指令中,緊
跟在操作碼的后面
,與操作碼一起放
在代碼段區(qū)域中。
立即數(shù)可以是8、
16、32位.
立即尋址主要
是用來(lái)給寄存器賦
初值.
微型計(jì)算機(jī)原理與接口技術(shù)
?微型計(jì)算機(jī)原理與接口技術(shù)
如:MOVEAX,12345678H
MOVBL,10101010B;AAH一BL
MOVCL,-4;FCH->CL
MOVDLJA';41H一DL
ADDAL,0C8H
MOVSI,3*5;15一SI
上例源操作數(shù)即為立即尋址,立即數(shù)書(shū)寫(xiě)規(guī)定:
使立即數(shù)以數(shù)字開(kāi)頭,以A?F開(kāi)頭的16進(jìn)制數(shù),必須前綴0。
但立即數(shù)的數(shù)制用后綴表示,B表示二進(jìn)制數(shù),H表示十六進(jìn)制數(shù),D或
缺省為十進(jìn)制數(shù),單引號(hào)括起來(lái)的字符編譯成相應(yīng)的ASCH碼。
使可以用+*/組成立即數(shù)表達(dá)式
P程序員可以按自己的習(xí)慣書(shū)寫(xiě)立即數(shù),各種合法的立即數(shù)經(jīng)匯編
后,一律自動(dòng)轉(zhuǎn)換成等值的二進(jìn)制數(shù),負(fù)數(shù)用補(bǔ)碼表示。
微型計(jì)算機(jī)原理與接口技術(shù)
2.寄存器尋址
操作數(shù)在CPU的
某個(gè)寄存器中,
符號(hào)
指令中直接寫(xiě)
出寄存器名稱(chēng)。
微型計(jì)算機(jī)原理與接口技術(shù)
微型計(jì)算機(jī)原理與接口技術(shù)
如:下述6條指令,目標(biāo)操作數(shù)即為寄存器尋址
MOVEAXJ2345678H
MOVBL,10101010B;AAH一BL
MOVCL,-4;FCH一CL
MOVDLJ5,;35H一DL
ADDAL,0C8H
MOVSI,3*5;15一SI
如:MOVAX,DS;DS內(nèi)容一AX
INCSI;SI+1—>SI(Increase增量)
DECDI;DI-1—>DI(Decrease減量)
微型計(jì)算機(jī)原理與接口技術(shù)
3.存儲(chǔ)器操作數(shù)尋址方式
重申:
P在讀寫(xiě)內(nèi)存操作數(shù)之前,CPU必須知道相關(guān)存儲(chǔ)單元的物理地址。
但由于CPU對(duì)存儲(chǔ)器采用分段管理,因此指令格式中只能寫(xiě)出存放操作數(shù)
的內(nèi)存單元的“邏輯地址”。
?程序員的責(zé)任僅在于正確的書(shū)寫(xiě)邏輯地址表達(dá)式,然后由CPU自動(dòng)運(yùn)
算以求出物理地址。
程序員給出的邏輯地址形式
段寄存器:偏移地址
操作系統(tǒng)將程序調(diào)入內(nèi)存時(shí)才給段寄存器賦實(shí)際值。此時(shí),計(jì)算出的
20位地址才是實(shí)際的物理地址
微型計(jì)算機(jī)原理與接口技術(shù)
有效地址(EA)
實(shí)模式80X86的內(nèi)存地址:段基址+段內(nèi)偏移量
存放在CS存放在BX、BP>SKDI中,
DS或直接地址如[3000H]中,
ES或上述形式的組合中。
2I0W
SS中
段內(nèi)偏移量可以由幾部分組成,組成后的地址稱(chēng)為有效地址EA
EA可以由以下各種情況構(gòu)成:
?直接地址——包含在指令中的16位地址偏移量。
?間接地址——由CPU內(nèi)部某個(gè)16位寄存器的內(nèi)容決定,如BX、BP、SI、DE
?基址—基址寄存器BX或BP加上指令中包含的8位或16位位移量。
?變址——變址寄存器SI或DI加上指令中包含的8位或16位位移量。
?基址加變址——由一個(gè)基址寄存器BX或BP加上一個(gè)變址寄存器SI或DI,再加
上指令中包含的8位或16位位移量。
微型計(jì)算機(jī)原理與接口技術(shù)
(1)直接尋址
①地址表達(dá)式的格式1:段寄存器:[偏移地址]
如:MOVAL,ES:[2CH]
從ES附加段偏移地址為2cH的單元取數(shù)-AL
如:MOVAX,DS:[2000H]
從數(shù)據(jù)段偏移地址為2000H的單元取一字一AX
這種格式很少使用,???通常情況下,程序員不知道某單元的偏移地址
②地址表達(dá)式的格式2:段寄存器:變量名
用變量名代表存儲(chǔ)單元的有效地址
微型計(jì)算機(jī)原理與接口技術(shù)
微型計(jì)算機(jī)原理與接口技術(shù)
設(shè)數(shù)據(jù)段XX字節(jié)單元的內(nèi)容為11H
ES附加段YY字單元的內(nèi)容為2233H
MOVAL,DS:XX;取數(shù)據(jù)段XX字節(jié)單元的內(nèi)容一AL
或MOVAL,XX;.\AL=11H
MOVAX,ES:YY;WES附加段YY字單元的內(nèi)容一AX
或MOVAX,YY;??.AX=2233H
說(shuō)明:
鐘匚編語(yǔ)言允許為某單元起一個(gè)“名字”,這個(gè)名字就稱(chēng)為該單元的“變量
名”,經(jīng)匯編之后,變量名有段基址和偏移量?jī)煞N屬性。
但變量名是唯一的,程序中不能有重復(fù)的變量名,
???“段寄存器:”可以省略。
微型計(jì)算機(jī)原理與接口技術(shù)
(2)寄存器間接尋址
寄存器間接尋址又稱(chēng)間接尋址,間址
什么是間接尋址?
操作數(shù)在內(nèi)存單元,該單元的段基址在段寄存器中,
有效地址在間址寄存器中,CPU首先進(jìn)行地址計(jì)算
①間接尋址的地址表達(dá)式
段寄存器:[間址寄存器]
某單元的物理地址二段寄存器內(nèi)容X16+間址寄存器
②訪問(wèn)約定的邏輯段,間接尋址的地址表達(dá)式簡(jiǎn)
化為:[間址寄存器]
某單元的物理地址二約定的段寄存器內(nèi)容X16+間址寄存器
微型計(jì)算機(jī)原理與接口技術(shù)
③間址寄存器和約定訪問(wèn)的邏輯段
486規(guī)定:
間址寄存器約定訪問(wèn)的邏輯段
BP堆棧段
16位尋址方式
BX,SI,DI數(shù)據(jù)段
EBP,ESP堆棧段
32位尋址方式
EAX-EDX,ESI,EDI數(shù)據(jù)段
微型計(jì)算機(jī)原理與接口技術(shù)
微型計(jì)算機(jī)原理與接口技術(shù)
④舉例:
設(shè)數(shù)據(jù)段BUF字節(jié)單元的內(nèi)容為55H,取出該數(shù)一AL
解L用BX間址
MOVDS,數(shù)據(jù)段段基址
MOVBX,BUF單元的有效地址
MOVAL,DS:[BX];AL=55H
等價(jià)于:MOVAL,[BX]
由于BX間址,約定訪問(wèn)的是數(shù)據(jù)段,???“DS:”可省
微型計(jì)算機(jī)原理與接口技術(shù)
解2:用BP間址
MOVDS,數(shù)據(jù)段段基址
OIOWMOVBP,BUF單元的有效地址
MOVAL,DS:[BP];AL=55H
MOVAL,[BP]
由于BP間址約定訪問(wèn)的是堆棧段,???“DS:”不可省
解3:用變量名直接尋址
MOVDS,數(shù)據(jù)段段基址
MOVAL,BUF;AL=55H
微型計(jì)算機(jī)原理與接口技術(shù)
(3)基址尋址
該尋址方式的有效地址由兩部分組成。一部分在
基址寄存器中,另一部分為常量。
①基址尋址的地址表達(dá)式:
段寄存器:[基址寄存器+位移量]
物理地址二段寄存器內(nèi)容X16+基址寄存器+位移量
②訪問(wèn)約定的邏輯段,簡(jiǎn)化的地址表達(dá)式:
[基址寄存器+位移量]
物理地址二約定的段寄存器內(nèi)容義16+基址寄存器+位移量
微型計(jì)算機(jī)原理與接口技術(shù)
③基址寄存器和約定訪問(wèn)的邏輯段
9皿
基址寄存器約定訪問(wèn)的邏輯段
BP堆棧段
16位尋址方式
BX數(shù)據(jù)段
EBP,ESP堆棧段
32位尋址方式
EAX-EDX,ESI,EDI數(shù)據(jù)段
微型計(jì)算機(jī)原理與接口技術(shù)
④舉例
設(shè)數(shù)據(jù)段BUF單元依次有:78H,56H,34H,12H
則:MOVDS,數(shù)據(jù)段段基址
BUF
MOVBX,BUF單元有效地址
MOVDH,[BX+1];DH=56H
MOVDX,[BX+2];DX=1234H
(4)變址尋址
①有比例因子的變址尋址其地址表達(dá)式為
段寄存器:[比例因子*變址寄存器+位移量]
物理地址二段寄存器義16+比例因子X(jué)變址寄存器+位移量
微型計(jì)算機(jī)原理與接口技術(shù)
②沒(méi)有比例因子的變址尋址其地址表達(dá)式為:
段寄存器:[變址寄存器+位移量]
訪問(wèn)約定的邏輯段可簡(jiǎn)化為:
[變址寄存器+位移量]
OIOW物理地址二約定的段寄存器X16+變址寄存器+位移量
3變址寄存器與約定訪問(wèn)的邏輯段
!變址寄存器約定訪問(wèn)的邏輯段適用于……
SI,DI數(shù)據(jù)段無(wú)比例因子,16位
尋址
|EBP堆棧段有比例因子,32位
EAX-數(shù)據(jù)段尋址
jEDX,ESI,EDI
微型計(jì)算機(jī)原理與接口技術(shù)
說(shuō)明:比例因子只能是1、2、4、8
因此:MOVAL,[8*SI+15];非法,16位尋址不能使用比例因子
MOVAL,[10*ESI+5];非法指令,比例因子錯(cuò)了
MOVAL,ES:[SI];訪問(wèn)附加段
MOVAL,[SI];訪問(wèn)數(shù)據(jù)段
(5)基址加變址尋址
存儲(chǔ)單元的有效地址由3部分組成
有比例因子的基址加變址的地址表達(dá)式為:
段寄存器:[基址寄存器+比例因子*變址寄存器+位移量]
訪問(wèn)約定邏輯段其地址表達(dá)式簡(jiǎn)化為:
[基址寄存器+比例因子*變址寄存器+位移量]
微型計(jì)算機(jī)原理與接口技術(shù)
②無(wú)比例因子基址加變址
地址表達(dá)式:
段寄存器:[基址寄存器+變址寄存器+位移量]
訪問(wèn)約定邏輯段:
[基址寄存器+變址寄存器+位移量]
基址加變址尋址是基址尋址和變址尋址的組合,要求
1基址寄存器和變址寄存器都是16位或都是32位,否
則(16位尋址和32位尋址混合使用)是非法指令
★默認(rèn)的段寄存器不一致,這樣的組合雖然是合法,
|但容易出錯(cuò)
微型計(jì)算機(jī)原理與接口技術(shù)
微型計(jì)算機(jī)原理與接口技術(shù)
微型計(jì)算機(jī)原理與接口技術(shù)
尋址方式的學(xué)習(xí)要點(diǎn):
1.指令中的操作數(shù)有3種:立即數(shù),寄存器數(shù),內(nèi)存操作數(shù)
訪問(wèn)立即數(shù)叫立即尋址方式;訪問(wèn)寄存器數(shù)叫寄存器尋
址方式;訪問(wèn)內(nèi)存操作數(shù)由5種尋址方式:
直接尋址、間址、基址、變址、基址加變址
不同的尋址方式是為了程序員在寫(xiě)指令時(shí)通過(guò)不同的手
段提供操作數(shù).
2.關(guān)于16位尋址和32位尋址
16位尋址:采用16位間址、基址、變址、基址加變址
32位尋址:采用32位間址、基址、變址、基址加變址
微型計(jì)算機(jī)原理與接口技術(shù)
3.在實(shí)模式下,一個(gè)邏輯段的體積最大為64K,存儲(chǔ)單元
的有效地址為16位,不可能超過(guò)FFFFH,???在實(shí)模式下運(yùn)行的
程序通常采用16位尋址
4.關(guān)于段約定和段超越
在用間址、基址、變址、基址加變址尋址內(nèi)存操
作數(shù)時(shí),其地址表達(dá)式都有2種書(shū)寫(xiě)格式一有段前綴和
無(wú)段前綴
①如用BP、EBP、ESP參與尋址,CPU自動(dòng)認(rèn)為是訪問(wèn)堆棧
段,???段超越前綴“SS:”可省
微型計(jì)算機(jī)原理與接口技術(shù)
MOVAL,SS:[BP];訪問(wèn)SS段,用BP間址
MOVAL,[BP]
②如用BP、EBP、ESP參與尋址非堆棧段,必須明確寫(xiě)出段
超越前綴,如:
MOVAL,IDS:I[BP];訪問(wèn)堆棧段,用BP間址
MOVAL,ES:[BP+2]
——>明確寫(xiě)出,不能省
③如用BX、SI、DI、EAX?EDX、ESI、EDI參與尋址,CPU
自動(dòng)認(rèn)為是訪問(wèn)數(shù)據(jù)段,???“DS:”可省
微型計(jì)算機(jī)原理與接口技術(shù)
如:MOVAL,DS:[BX]
MOVAL,[BX]
④如用BX、SI、DI、EAX、EDX、ESI、EDI參與尋址非數(shù)
據(jù)段,必須明確寫(xiě)出段超越前綴,如:
MOVAL,ES:[BX]
MOVAL,FS:[SI+2]
——>明確寫(xiě)出,不能省
5.使用段約定訪問(wèn)內(nèi)存操作數(shù)是最常用的編程風(fēng)格
P微型計(jì)算機(jī)原理與接口技術(shù)
4.3標(biāo)志寄存器
D31D19D18DO
ACVMRNTIOPLODITSzAPC
80486標(biāo)志寄存器
80486標(biāo)志寄存器為32位,實(shí)際使用15位
15位標(biāo)志分為兩類(lèi):狀態(tài)標(biāo)志和控制標(biāo)志
伊狀態(tài)標(biāo)志記錄了當(dāng)前指令執(zhí)行后的狀態(tài)信息
伊控制標(biāo)志用來(lái)控制微處理器操作
本節(jié)首先介紹6種狀態(tài)標(biāo)志
狀態(tài)標(biāo)志寄存器微型計(jì)算機(jī)原理與接口技術(shù)
ODITSZAPC
坐位標(biāo)志C(CarryFlag)——當(dāng)結(jié)果的最高位產(chǎn)生一個(gè)進(jìn)位或借位,則C=l,否則C=0。
溢出標(biāo)志O(OverflowFlag)——在算術(shù)運(yùn)算中,帶符號(hào)數(shù)的運(yùn)算結(jié)果超出了8位或16位
狀
帶符號(hào)數(shù)能表達(dá)的范圍,則0=1,否則0=0。
態(tài)
8位(字節(jié))運(yùn)算-128——+127
標(biāo)
16位(字)運(yùn)算-32768——+32767
志符號(hào)標(biāo)志S(SignFlag)——結(jié)果的最高位(D^或D7)為1,則S=L否則S=0。
零標(biāo)志Z(ZeroFlag)——若運(yùn)算的結(jié)果為0,貝吃=1,否則Z=0。
奇偶標(biāo)志P(ParityFlag)——若結(jié)果中'1,的個(gè)數(shù)為偶數(shù),貝!JP=L否則,P=0。
速助進(jìn)位標(biāo)志A(AuxiliaryFlag)——在操作時(shí),由低半字節(jié)(第3位)向高半字節(jié),
有進(jìn)位或借位,貝IJA=L否則A=0。
為響標(biāo)志(DirectionFlag)——D=1,串操作時(shí)地址自動(dòng)減量,D=0,串操作時(shí)地址自
控動(dòng)增量。
制
標(biāo)中斷允許標(biāo)志(Interrupt一enableFlag)------1=1,則允許CPU接收外部的中斷請(qǐng)求,
志1=0,則屏蔽外部中斷請(qǐng)求。
追蹤標(biāo)志(TraceFlag)——T=l,使處理進(jìn)入單步方式,以便于調(diào)試。
微型計(jì)算機(jī)原理與接口技術(shù)
二.復(fù)習(xí):有關(guān)溢出的幾個(gè)概念
1.什麼是溢出?
運(yùn)算結(jié)果超出寄存器能表示的范圍,稱(chēng)為溢出。
溢出和操作數(shù)的性質(zhì)有關(guān)。
8位無(wú)符號(hào)數(shù)運(yùn)算,結(jié)果>255有溢出
16位無(wú)符號(hào)數(shù)運(yùn)算,結(jié)果>65535有溢出
32位無(wú)符號(hào)數(shù)運(yùn)算,結(jié)果〉232”有溢出
8位有符號(hào)數(shù)運(yùn)算,?128>結(jié)果>127有溢出
16位有符號(hào)數(shù)運(yùn)算,?32768>結(jié)果>32767有溢出
32位有符號(hào)數(shù)運(yùn)算,?23i>結(jié)果>231-1有溢出
微型計(jì)算機(jī)原理與接口技術(shù)
2.CPU如何判斷溢出
由于溢出和操作數(shù)的性質(zhì)有關(guān),而操作數(shù)的性質(zhì)是由
程序員定義的。CPU只能默認(rèn)一種選擇,即CPU一律
默認(rèn)操作數(shù)是有符號(hào)補(bǔ)碼數(shù),并以此來(lái)設(shè)置溢出標(biāo)志O
3.程序員如何判斷溢出
『有符號(hào)數(shù)運(yùn)算,判0標(biāo)志,0標(biāo)志為1,有溢出
『無(wú)符號(hào)數(shù)加/減,判C標(biāo)志,C標(biāo)志為1,有溢出
微型計(jì)算機(jī)原理與接口技術(shù)
AL=90H,如果C8H為無(wú)符號(hào)數(shù)(值=200),則有溢出。
如果C8H為有符號(hào)數(shù)(值=-56),則無(wú)溢出。
這6個(gè)標(biāo)志中,C.0.P.S.Z可為程序的轉(zhuǎn)移提供測(cè)試條件。
微型計(jì)算機(jī)原理與接口技術(shù)
4.4匯編語(yǔ)言語(yǔ)法規(guī)則
為了在介紹指令的過(guò)程中,穿插一些例題,有必要先介紹一些匯編語(yǔ)言的
語(yǔ)法規(guī)則
??概述
1.可執(zhí)行文件的生成
*編輯
調(diào)編輯程序如:EDIT.EXE
QEDIT.EXE
匯編源程序V
編輯*,ASM文件
微型計(jì)算機(jī)原理與接口技術(shù)
*編譯
2I0W
微型計(jì)算機(jī)原理與接口技術(shù)
2.源程序中的語(yǔ)句類(lèi)型
一個(gè)完整的源程序應(yīng)包含2類(lèi)語(yǔ)句:
符號(hào)指令、匯編偽指令(偽語(yǔ)句)
但符號(hào)指令:經(jīng)匯編后,其目標(biāo)指令通知CPU進(jìn)行什么操作
但偽指令:是非機(jī)器指令,是在匯編期間進(jìn)行操作的。
為匯編程序,鏈接程序提供匯編鏈接信息
符號(hào)指令|標(biāo)號(hào):|符號(hào)指令
偽指令局號(hào)名偽指令
此處無(wú)冒號(hào)
標(biāo)號(hào)名、變量名、段名、過(guò)程名…命名規(guī)則:以字母開(kāi)頭,后跟字
母、數(shù)字…長(zhǎng)度431個(gè)字符
微型計(jì)算機(jī)原理與接口技術(shù)
二.常用的偽指令
1.字節(jié)字義偽指令
變量名DB一串用逗號(hào)間隔的單字節(jié)數(shù)
如:N1DB12H,64,-1,3*3
DB01010101B,JB'
DB0A6H,6HELLO5
N2DB?,?,?;與下條等價(jià)
N2DB3DUP(?)
說(shuō)明:
?DB—DefineByte的縮寫(xiě),“定義字節(jié)”。
??一隨機(jī)數(shù),Dup~Duplicate(重復(fù))
?3Dup(?)代表3個(gè)用逗號(hào)間隔的隨機(jī)數(shù)
?5Dup('A')代表5個(gè)用逗號(hào)間隔的A的ASCII碼
微型計(jì)算機(jī)原理與接口技術(shù)
如:
N1DB12H,64,-1,3*3
DB01010101B「A'JB'
DB0A6HJHELLO'
N2DB?,?,?;與下條等價(jià)
N2DB3DUP(?)
功能:
但通知匯編程序把DB后跟的單字
節(jié)數(shù),依次存入從變量(如N1)
開(kāi)始的單元,負(fù)數(shù)用補(bǔ)碼表示,N2:
單引號(hào)中的字符翻譯成ASCII碼o
微型計(jì)算機(jī)原理與接口技術(shù)
如:N1:
N1DB12H,64,-1,3*3
DB01010101B「A'JB'
DB0A6HJHELLO'
N2DB?,?,?;與下條等價(jià)_____K
N2DB3DUP(?)|匯編耳)
功能:
P用DB定義的這些內(nèi)存單元(Nl~N1+12,
N2~N2+2)的屬性均為“字節(jié)型”。N1+12:
N2:
N2+2:
微型計(jì)算機(jī)原理與接口技術(shù)
2.字定義偽指令
變量名DW一串用逗號(hào)間隔的雙字節(jié)數(shù)
WNUM:
如:
WNUMDW1234H,12JAB'JC'
匯編后
DW9?,??
DW2DUP(?)
功能:
P用DW定義的這些單元的屬性都是“字
型”,
如上例,WNUM~WNUM+11這12個(gè)單元的NUM+11:
屬性都凝二用的高址單元。
微型計(jì)算機(jī)原理與接口技術(shù)
3.雙字定義偽指令
變量名DD一串用逗號(hào)間隔的4字節(jié)數(shù)
如:
DNUMDD12345678H
功能:
P通知匯編程序把DD后跟的數(shù)存入變量名開(kāi)始的單元,
每一個(gè)數(shù)占4個(gè)字節(jié),低位字節(jié)f低址單元,高位字
節(jié)f高址單元。
P用DD定義的這些單元的屬性都是“雙字型”,上例
DNUM~DNUM+3單元,這些單元都是雙字型單元。
微型計(jì)算機(jī)原理與接口技術(shù)
4.多字節(jié)定義偽指令
變量名DF一串用逗號(hào)間隔的6字節(jié)數(shù)
變量名DQ一串用逗號(hào)間隔的8字節(jié)數(shù)
變量名DT一串用逗號(hào)間隔的10字節(jié)數(shù)
功能:通知匯編程序?yàn)镈F/DQ/DT后跟的每一個(gè)數(shù),分配
6/8/10個(gè)單元。
5.等值偽指令
符號(hào)常數(shù)EQU表達(dá)式
如:NUMEQU33
功能:定義符號(hào)常數(shù)NUM的值為33
6.等號(hào)偽指令
符號(hào)常數(shù)二表達(dá)式
如:NUM=33
功能:定義符號(hào)常數(shù)NUM的值為33
2微型計(jì)算機(jī)原理與接口技術(shù)
區(qū)別:
P用EQU定義的符號(hào)常數(shù),其值在后繼語(yǔ)句中不能更改
P用“廿定義的符號(hào)常數(shù),其值在后繼語(yǔ)句中可以重新定義
例如:NUMEQU33
MOVAL,NUM;該指令與下條指令等價(jià)
MOVAL,33
三.常用運(yùn)算符
1.算術(shù)運(yùn)算符:+,*,/
2.關(guān)系運(yùn)算符:
EQ(等于),NE(不等于),GT(大于),LT(小于),
GE(大于或等于)
微型計(jì)算機(jī)原理與接口技術(shù)
3.$運(yùn)算符
P匯編程序?qū)υ闯绦蚴侵鹦袇R編的,$運(yùn)算符可以返回
匯編計(jì)數(shù)器的當(dāng)前值。
應(yīng)用:
穌運(yùn)算符緊跟在DB、DW、DD偽指令之后,統(tǒng)計(jì)字符
串的長(zhǎng)度。
例如數(shù)據(jù)段有:
BUFDB5THEQUICKBROWNFOX5;字符串長(zhǎng)度19
LLLEQU$-BUF
匯編后符號(hào)常數(shù)LLL的值即為19
微型計(jì)算機(jī)原理與接口技術(shù)
4.SEG運(yùn)算符
P格式:SEG段名或變量名或標(biāo)號(hào)名
P功能:計(jì)算某一邏輯段的段基址
01010如:MOVAX,SEGDATA
MOVDS,AX
設(shè)“DATA”是數(shù)據(jù)段的段名,上述兩條指令算出數(shù)據(jù)段
的段基址,先賦給AX,再轉(zhuǎn)賦DS。
5.OFFSET運(yùn)算符
P格式:OFFSET變量名或標(biāo)號(hào)名
P功能:算出某個(gè)變量或標(biāo)號(hào)名所在單元的偏移地址(有效
地址)。
微型計(jì)算機(jī)原理與接口技術(shù)
設(shè)以“DATA”為段名的數(shù)據(jù)段中,存在
BUFDB12,34,56
代碼段:MOVAX,SEGDATA
MOVDS,AX
MOVBX,OFFSETBUF
MOVAL,[BX];AL=12
以下兩條指令等價(jià)的:
MOVBX,OFFSETBUF
LEABX,BUF
微型計(jì)算機(jī)原理與接口技術(shù)
6.PTR運(yùn)算符
格式:類(lèi)型說(shuō)明符PTR地址表達(dá)式
U
BYTE(字節(jié))
WORD(字)>內(nèi)存單元5種尋址方式
DWORD(雙字)
FAR(遠(yuǎn))
子程序的名稱(chēng)
NEAR(近)1
功能:在本條指令中臨時(shí)修改地址表達(dá)式的屬性
微型計(jì)算機(jī)原理與接口技術(shù)
舉例:設(shè)數(shù)據(jù)段有:
BUFDB11,22,11
22
WBUFDW?,?
33
XXDBOFFH,44
OIOW
YYDBOFFH,XX
ZZDBOFFH,XX
XX
代碼段:XX
XX:FFH
1OVAX,BUFx
0
OVAL,BUFYY:FFH
OVAX,WORDPTRBUF;AH=22,AL=11FFH
②MOVBUF,12H
③BUF,1234HX
WORDPTRBUFJ234H;BUF單元為34H,BUF+1單元為12H
微型計(jì)算機(jī)原理與接口技術(shù)
舉例:設(shè)數(shù)據(jù)段有:
BUFDB11,22,33,44
WBUFDW?,?匯編后
OIOWXXDBOFFH,0
YYDBOFFH,OFFH,0,0
ZZDBOFFH,OFFH,OFFH,0
④MOVBX,OFFSETXX
MOVSLOFFSETYY
MOVDI,OFFSETZZ
MOV[BX],12HX
MOVBYTEPTR[BX],12H;XX單元為12H
MOVWORDPTR[BX],12H;XX單元為12H,XX+1單元為0
微型計(jì)算機(jī)原理與接口技術(shù)
7.方括號(hào)
用方括號(hào)括起來(lái)的地址表達(dá)式是訪問(wèn)內(nèi)存操作數(shù)常用的
尋址方式,方括號(hào)的另一用途是標(biāo)注數(shù)組元素的下標(biāo),
OIOW下標(biāo)從0開(kāi)始。
如上例數(shù)據(jù)段:BUFDB11,22,33,44
WBUFDW?,?
XXDBOFFH,0
YYDBOFFH,OFFH,0,0
代碼段:ZZDBOFFH,OFFH,0FFH,0
MOVAL,BUF[3];AL=44
變量名就數(shù)組下標(biāo)
是數(shù)組名
微型計(jì)算機(jī)原理與接口技術(shù)
4.580486基本集指令
分6類(lèi),為講授方便,用
則10:
N代表立即數(shù),N8、N16、N32代表8、16、32位立即數(shù)
R代表寄存器操作數(shù),R8、R16、R32代表8、16、32位
寄存器操作數(shù)
M代表內(nèi)存操作數(shù),M8、M16、M32代表8、16、32位
內(nèi)存操作數(shù)
S代表段寄存器
"微型計(jì)算機(jī)原理與接口技術(shù)
總說(shuō)明:
1.對(duì)于雙操作數(shù)指令(如:MOV,ADD,CMP...)
★源、目操作數(shù)不可同為內(nèi)存操作數(shù)
★源、目操作數(shù)屬性一致(長(zhǎng)度相同)
★當(dāng)目標(biāo)操作數(shù)為間址、變址、基址、基+變址的內(nèi)
存操作數(shù),而源操作數(shù)為單字節(jié)/雙字節(jié)立即數(shù),
則目標(biāo)操作數(shù)必須用PTR說(shuō)明類(lèi)型
2.對(duì)于單操作數(shù)指令(如:INC,DEC...)
若操作數(shù)為間、變、基、基+變的內(nèi)存操作數(shù),則
必須用PTR說(shuō)明類(lèi)型
微型計(jì)算機(jī)原理與接口技術(shù)
第一類(lèi)、傳送類(lèi)
本類(lèi)指令執(zhí)行后,不影響狀態(tài)標(biāo)志
1.通用傳送
(1)數(shù)據(jù)傳送
MOV目,源
R/M,N
R/M/S,R;目標(biāo)不允許是CS
R/M,S
R/S,M;目標(biāo)不允許是CS
功能:源一目,源不變,不影響6種標(biāo)志
微型計(jì)算機(jī)原理與接口技術(shù)
注意事項(xiàng):1.立即數(shù)不能直接送段寄存器MOVDS,3000HX
2.目標(biāo)操作數(shù)不允許用立即數(shù)方式MOV2000H,ALX
3.不允許在兩個(gè)存儲(chǔ)單元間傳送數(shù)據(jù)MOV[2000H],[3000HJ(
4.不允許在兩個(gè)段寄存器之間傳送數(shù)據(jù)MOVDS,ESX
5.源、目屬性要一致
為了深入理解數(shù)值定義偽指令、學(xué)習(xí)PTR運(yùn)算符的使用,請(qǐng)仔細(xì)
閱讀以下例題。
【例】閱讀以下程序,寫(xiě)出指令執(zhí)行后的目標(biāo)操作數(shù)。
微型計(jì)算機(jī)原理與接口技術(shù)
設(shè)數(shù)據(jù)段:BNUMDB12H,34H,56H,78H,90H
WNUMDW1122H,3344H,5566H
DNUMDD13572468H,87654321H
FNUMDF112233445566H
01010
BNUM:
DS,SEG數(shù)據(jù)段段基址
;對(duì)口3初始化
MOVBL,BNUM;BL=?
數(shù)據(jù)段經(jīng)過(guò)匯編之后,
所以,BL=12H
微型計(jì)算機(jī)原理與接口技術(shù)
設(shè)數(shù)據(jù)段:BNUMDB12H,34H,56H,78H,90H
WNUMDW1122H,3344H,5566H
DNUMDD13572468H,87654321H
FNUMDF112233445566H
代碼段:……WNUM:22H
MOVDS,SEG數(shù)據(jù)段段基址
11H
MOVBX,WNUM+2;BX=?
44H
33H
數(shù)據(jù)段經(jīng)過(guò)匯編之后,
66H
55H
所以,BX=3344H
微型計(jì)算機(jī)原理與接口技術(shù)
設(shè)數(shù)據(jù)段:BNUMDB12H,34H,56H,78H,90H
WNUMDW1122H,3344H,5566H
DNUMDD13572468H,87654321H
FNUMDF112233445566H
DNUM:
MOVDS,SEG數(shù)據(jù)段段基址
MOVEBX,DNUM+4;EBX=?
數(shù)據(jù)段經(jīng)過(guò)匯編之后,
所以,EBX=87654321H
微型計(jì)算機(jī)原理與接口技術(shù)
設(shè)數(shù)據(jù)段:BNUMDB12H,34H,56H,78H,90H
WNUMDW1122H,3344H,5566H
DNUMDD13572468H,87654321H
2I0WFNUMDF112233445566H
代碼段:....BNUM:12H
MOVDS,SEG數(shù)據(jù)段段基址34H
MOVBX,WORDPTRBNUM+1;BX=B56H
78H
數(shù)據(jù)段經(jīng)過(guò)匯編之后,
90H
所以,BX=5634H
微型計(jì)算機(jī)原理與接口技術(shù)
設(shè)數(shù)據(jù)段:BNUMDB12H,34H,56H,78H,90H
WNUMDW1122H,3344H,5566H
DNUMDD13572468H,87654321H
FNUMDF112233445566H
代碼段:……
MOVDS,SEG數(shù)據(jù)段段基址
MOVBX,WORDPTR
數(shù)據(jù)段經(jīng)過(guò)匯編之后,
所以,BX=2113H
微型計(jì)算機(jī)原理與接口技術(shù)
BNUMDB12H,34H,56H,78H,90H
WNUMDW1122H,3344H,5566H
DNUMDD13572468H,87654321H
FNUMDF112233445566H
國(guó)代碼段:……BNUM:
1.(\MOVDS,SEG數(shù)據(jù)段段基址12H
34H
yrMOVSI,OFFSETBNUM56H
■MOVBXJSI+1];BX=?78H
費(fèi)數(shù)據(jù)段經(jīng)過(guò)匯編之后,90H
■所以,BX=5634H
微型計(jì)算機(jī)原理與接口技術(shù)
(2)LEA——有效地址送寄存器。
LEAREG,SRC(REG)—(SRC)
目的操作數(shù)源操作數(shù)
(16位通用寄存器)(內(nèi)存操作數(shù))
?該指令常用來(lái)設(shè)置一個(gè)16位的寄存器作為地址指針;
?該指令的執(zhí)行效果與MOVreg,OFFSETsrc相同。
DS=1000h
例:LEABX,[100]
執(zhí)行后BX=100HBUFlOlOOh-oo—OlOOhBX
02
LEABX,BUF
?n
微型計(jì)算機(jī)原理與接口技術(shù)
(3)交換指令XCHGOPRD1,OPRD2
在寄存器間或寄存器與存儲(chǔ)器間交換信息(不允許使用段寄存器)。
2I0W源操作數(shù):寄存器、存儲(chǔ)器
目的操作數(shù):寄存器、存儲(chǔ)器
執(zhí)行的操作:(OPRD1)—(OPRD2)
例:XCHGBX,[BP+SI]
(BX)=6F30H
(BP)=0200H結(jié)果:
(BX尸1234H
(SI)=0046H(2F246H)=6F30H
(SS)=2F00H
(2F246H)=1234H
微型計(jì)算機(jī)原理與接口技術(shù)
(4)查表指令
XLAT表頭變量名
說(shuō)明:一該指令查找數(shù)據(jù)段中的字節(jié)表,即要求數(shù)據(jù)表放
在數(shù)據(jù)段,每個(gè)表元素為單字節(jié)數(shù)
一指令執(zhí)行前:EBX或BX=表頭的有效地址AL=
表元素相對(duì)于表頭的地址位移量
功能:DS:[BX+AL]一AL或DS:[EBX+AL]一AL
微型計(jì)算機(jī)原理與接口技術(shù)
2.堆棧操作指令
堆?!凑障冗M(jìn)后出的原則組織的一段內(nèi)存區(qū)域。8088中規(guī)定堆棧設(shè)
置在堆棧段(SS段)內(nèi),堆棧指針SP的初值決定了堆棧的大小。
SP始終指向堆棧的頂部,即始終指向最后推入堆棧的信息所在
的單元。00000
棧頂:棧區(qū)的低地址ss:oooo
棧底:棧區(qū)的高地址堆
棧
段
★堆棧段寄存器SS:存放堆棧段段基址SS:SP一
★堆棧指針ESP(SP):存放棧頂單元的偏移地址
★SS、ESP(SP)初值,由程序員賦值或DOS系統(tǒng)自動(dòng)賦值
微型計(jì)算機(jī)原理與接口技術(shù)
★數(shù)據(jù)進(jìn)棧過(guò)程(以16位操作數(shù)進(jìn)棧為例)
SP-2一SP
高位一:
OIOW8SS[SP-1]
雙字節(jié)操作數(shù)堆棧區(qū)
低字節(jié)34H
高字節(jié)12H
XXH一SP
XXH
微型計(jì)算機(jī)原理與接口技術(shù)
★數(shù)據(jù)進(jìn)棧過(guò)程(以16位操作數(shù)進(jìn)棧為例)
SP-2一SP
高8位一SS:[SP-1]
低8位一SS:[SP-2]
堆棧區(qū)
雙字節(jié)操作數(shù)
低字節(jié)34H______<-SP
高字節(jié)12H12H
XXH
XXH
微型計(jì)算機(jī)原理與接口
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療行業(yè)標(biāo)準(zhǔn)化建設(shè)與質(zhì)量提升研究
- 醫(yī)患溝通技巧與醫(yī)學(xué)人文教育
- 北師大版(2024版)小學(xué)數(shù)學(xué)一年級(jí)下冊(cè)第三單元教案
- 縣人民醫(yī)院銀醫(yī)自助系統(tǒng)規(guī)劃建設(shè)方案(含微信就診服務(wù)、安全等級(jí)保護(hù)等內(nèi)容)建設(shè)方案
- 以患者為中心的醫(yī)患溝通藝術(shù)
- 醫(yī)療大數(shù)據(jù)技術(shù)對(duì)醫(yī)學(xué)研究的影響
- 2025年中國(guó)辦公雜物架數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 醫(yī)療設(shè)備供應(yīng)鏈金融中區(qū)塊鏈技術(shù)的獨(dú)特作用
- 江蘇高品質(zhì)住宅規(guī)劃及單體建筑方案設(shè)計(jì)
- 醫(yī)院護(hù)理部模擬試卷17
- 2024年公開(kāi)招聘事業(yè)單位工作人員報(bào)名登記表
- 2024年全國(guó)高考數(shù)學(xué)試題及解析答案(新課標(biāo)Ⅱ卷)
- 貴州水城宏源實(shí)業(yè)(集團(tuán))有限責(zé)任公司招聘筆試題庫(kù)2024
- 14.促織《變形記》聯(lián)讀教學(xué)設(shè)計(jì) 2023-2024學(xué)年統(tǒng)編版高中語(yǔ)文必修下冊(cè)
- 《大學(xué)英語(yǔ)四級(jí)強(qiáng)化教程》全套教學(xué)課件
- 重點(diǎn)鎮(zhèn)評(píng)價(jià)標(biāo)準(zhǔn)
- 2023廣州美術(shù)學(xué)院附屬中等美術(shù)學(xué)校(廣美附中)入學(xué)招生測(cè)試卷數(shù)學(xué)模擬卷
- 《民法典》培訓(xùn)系列課件:第三編 租賃合同
- 《DB32T 4028-2021常染色體STR基因座等位基因頻率參數(shù)》
- 農(nóng)村生活污水處理站運(yùn)營(yíng)維護(hù)方案
- 煙機(jī)設(shè)備操作工基礎(chǔ)知識(shí)考試題庫(kù)(濃縮500題)
評(píng)論
0/150
提交評(píng)論