微機原理與接口技術(shù)期末復(fù)習總結(jié)_第1頁
微機原理與接口技術(shù)期末復(fù)習總結(jié)_第2頁
微機原理與接口技術(shù)期末復(fù)習總結(jié)_第3頁
微機原理與接口技術(shù)期末復(fù)習總結(jié)_第4頁
微機原理與接口技術(shù)期末復(fù)習總結(jié)_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《微機原理與接口技術(shù)》復(fù)習參考資料

復(fù)習資料說明:

1、標有紅色星號“Q”的內(nèi)容為重點內(nèi)容

3、本資料末尾附有“《微機原理與接口技術(shù)》綜合練習題與答案錯誤修正”和“《微機原理

與接口技術(shù)》綜合練習題與答案中不作要求的部分”,請注意查看。

第一章概述

一、計算機中的數(shù)制

1、無符號數(shù)的表示方法:

(1)十進制計數(shù)的表示法

特點:以十為底,逢十進一;

共有0-9十個數(shù)字符號。

(2)二進制計數(shù)表示方法:

特點:以2為底,逢2進位;

只有0和1兩個符號。

(3)十六進制數(shù)的表示法:

特點:以16為底,逢16進位;

有0--9及A—F(表示10~15)共16個數(shù)字符號。

2、各種數(shù)制之間的轉(zhuǎn)換

(1)非十進制數(shù)到十進制數(shù)的轉(zhuǎn)換

按相應(yīng)進位計數(shù)制的權(quán)表達式展開,再按十進制求和。

(2)十進制數(shù)制轉(zhuǎn)換為二進制數(shù)制

?十進制一二進制的轉(zhuǎn)換:

整數(shù)部分:除2取余;

小數(shù)部分:乘2取整。

?十進制一十六進制的轉(zhuǎn)換:

整數(shù)部分:除16取余;

小數(shù)部分:乘16取整。

以小數(shù)點為起點求得整數(shù)和小數(shù)的各個位。

(3)二進制與十六進制數(shù)之間的轉(zhuǎn)換

用4位二進制數(shù)表示1位十六進制數(shù)

(4)二進制與八進制之間的轉(zhuǎn)換

八進制一二進制:一位八進制數(shù)用三位二進制數(shù)表示。

二進制一八進制:從小數(shù)點開始,分別向左右兩邊把三位二進制數(shù)碼劃為一組,最

左和最右一組不足三位用0補充,然后每組用一個八進制數(shù)碼代

替。

3、無符號數(shù)二進制的運算

無符號數(shù):機器中全部有效位均用來表示數(shù)的大小,例如N=1001,表示無符號數(shù)9

帶符號數(shù):機器中,最高位作為符號位(數(shù)的符號用0,1表示),其余位為數(shù)值位

機器數(shù):一個二進制連同符號位在內(nèi)作為一個數(shù),也就是機器數(shù)是機器中數(shù)的表示形式

真值:機器數(shù)所代表的實際數(shù)值,一般寫成為迸制的形式

例:真值:X1=+1010100B=+84x2=-1010100B=-84

機器數(shù):區(qū)]原=01010100[X2]K=11010100

4、二進制數(shù)的邏輯運算

特點:按位運算,無進借位

(1)與運算

只有A、B變量皆為1時、與運算的結(jié)果就是1

(2)或運算

A、B變量中,只要有一個為1,或運算的結(jié)果就是1

(3)非運算

(4)異或運算

A、B兩個變量只要不同,異或運算的結(jié)果就是1

二、計算機中的碼制(重點層)

1、對于符號數(shù),機器數(shù)常用的表示方法有原碼、反碼和補碼三種。數(shù)X的原碼記作[X]原,

反碼記作[X]反,補碼記作[X]補.

注意:對正數(shù),三種表示法均相同。

它們的差別在于對負數(shù)的表示。

(1)原碼

定義:

符號位:0表示正,1表示負;

數(shù)值位:真值的絕對值。

例:真值:X1=+1010100B=+84X2=-1010100B=-84

機器數(shù):-=01010100[x2]ffi=11010100

注意:數(shù)0的原碼不唯一

真值0有兩種不同的表示形式,+0或-0。[+O]te=O.OO...O[-O]S=1.OO...O

(2)反碼

定義:正數(shù)的反碼與其原碼相同,最高位為0表示正數(shù),其余位為數(shù)值位。

負數(shù)的反碼符號位為1,數(shù)值位為其原碼數(shù)值稅按位取反

若X>0,則[X]反=[X]原

若X<0,則以]反=對應(yīng)原碼的符號位不變,數(shù)值部分按位求反

注意:數(shù)0的反碼也不唯一

(3)補碼

定義:

若X>0,則兇補=兇反=兇原

若X<0,則兇補=[X]反+1

注意:機器字長為8時,數(shù)0的補碼唯一,同為00000000

2、8位二進制的表示范圍:

原碼:-127-+127

反碼:-127~+127

補碼:-128~+127(因為8位二進制數(shù)有2之256種表達方式,原碼,反碼都是+0~+127;

-0-127,而反碼的+0,—0的表達方式都為00000000,為+0~+127;-1728)

3、特殊數(shù)10000000

?該數(shù)在原碼中定義為:-0

?在反碼中定義為:-127

?在補碼中定義為:-128

?對無符號數(shù):(10000000)2=128

補碼加法:[A+B卜卜=[A]訃+舊卜卜

補碼運算步驟

1)將參加運算的操作數(shù)用補碼表示。

2)進行加法得到兩數(shù)和的補碼(符號位作為數(shù)的一部分參加運算)

3)判斷是否溢出

①若沒有溢出,則可進一步求和的真值:和為正數(shù)可直接求出,和為負數(shù),則

再次“求反加1”,得到真值。

②溢出的判斷:

溢出:帶符號數(shù)運算的結(jié)果超出計算機可以表示的范圍,就是溢出。

兩個同符號數(shù)相加有可能產(chǎn)生溢出;

兩個負數(shù)補碼相加后得到正數(shù)的補碼,或兩個正數(shù)的補碼相加后到負數(shù)的補碼,

都是產(chǎn)生了溢出。

計算(-70)補+(-60)撲

解:(-70)撲+(-60)撲

=10111010+11000100=101111110

兩個負數(shù)之和卻產(chǎn)生了正的結(jié)果,同樣是因為產(chǎn)生了溢出。因是超出了負的最

大范圍,所以是負向溢出

③溢出的解決:擴大數(shù)的表示范圍可以防止溢出。數(shù)的擴展不能改變數(shù)的大小,

只能改變數(shù)的位數(shù)。

正數(shù)擴展:高位全部加0;

負數(shù)擴展:高位全部加1。

如:-70t(10111010)1(1111111110111010)#

三、信息的編碼

1、十進制數(shù)的二進制數(shù)編碼

用4位二進制數(shù)表示一位十進制數(shù)。有兩種表示法:壓縮BCD碼和非壓縮BCD碼。

(1)壓縮BCD碼的每一位用4位二進制表示,00007001表示0~9,一個字節(jié)表示兩位

十進制數(shù)。

(2)非壓縮BCD碼用一個字節(jié)表示一位十進制數(shù),高4位總是0000,低4位的0000~1001

表示0~9

2、字符的編碼

計算機采用7位二進制代碼對字符進行編碼

(1)數(shù)字0~9的編碼是0110000~0111001,它們的高3位均是011,后4位正好與其對

應(yīng)的二進制代碼(BCD碼)相符。

(2)英文字母A~Z的ASCII碼從1000001(41H)開始順序遞增,字母a~z的ASCH碼

從1100001(61H)開始順序遞增,這樣的排列對信息檢索十分有利。

(4位二進制數(shù)表示1位十進制數(shù))

四、微型計算機基礎(chǔ)

微處理器

①利用超大規(guī)模集成電路技術(shù)把運算器和控制器集成在一個半導(dǎo)體芯片上形成微處理器,

也稱CPU,是計算機的核心部件。

②組成:運算器ALU(ArithmeticLogicUnit);控制器CU(ControlUnit);寄存器組Registers

③按照微型計算機數(shù)據(jù)總線的寬度,也就是按照一次操作所能傳送的二進制數(shù)位數(shù)的最大

值來進行劃分,可分為4位,8位,32位,64位

④字長:是微型計算機能夠直接處理的二進制數(shù)據(jù)的位數(shù)。字長越長,能表示數(shù)值的有效

位數(shù)越多,在同樣的運算速度下精度也越高.

主存容量:主存儲器所能存儲的最大信息總量為主存容量,是衡量微型計算機處理能力

大小的一個重要指標

主頻:決定計算機的處理速度,頻率越高,處理速度越快

運算速度:計算機每秒運算的次數(shù)

第二章微機組成原理

第一節(jié)、微機的結(jié)構(gòu)

1、計算機的經(jīng)典結(jié)構(gòu)一一馮.諾依曼結(jié)構(gòu)

(1)計算機由運算器、控制器、輸入設(shè)備和輸出設(shè)備五大部分組成(運算器和控制器又稱

為CPU)

(2)數(shù)據(jù)和程序以二進制代碼形式不加區(qū)分地存放在存儲器總,存放位置由地址指定,數(shù)

制為二進制。

(3)控制器是根據(jù)存放在存儲器中的指令序列來操作的,并由一個程序計數(shù)器控制指令的

執(zhí)行。

3、系統(tǒng)總線的分類

(1)數(shù)據(jù)總線(DataBus),它決定了處理器的字長。用來傳送數(shù)據(jù),數(shù)據(jù)既可從CPU送往

其他部件,也可以從其他部件送往CPU,故為雙向總線。

(2)地址總線(AddressBus),它決定系統(tǒng)所能直接訪問的存儲器空間的容量。用來傳送

地址信息,使由CPU送出的單向總線

(3)控制總線(ControlBus),用來傳輸控制信號,包括CPU送往其他部件的控制信號、

如讀信號,寫信號;也包括其他部件送往CPU的,如中斷請求信號,總線請求信號。為雙向

總線

第二節(jié)、8086微處理器

1、8086與8088是一種單片微處理芯片,其內(nèi)部數(shù)據(jù)總線的寬度是16位,8086外部數(shù)據(jù)

總線寬度也是16位,8088的外部數(shù)據(jù)總線是8位,為準16位CPU

8086地址總線的寬度為2。位,有1MB(220)尋址空間。

2、8086CPU由總線接口部件BIU和執(zhí)行部件EU組成。BIU和EU的操作是異步的,是

并行的,為8086取指令和執(zhí)行指令的并行操作體統(tǒng)硬件支持。

BIU是CPU與存儲器和I/O設(shè)備的接口,負責與存儲器,I/O接口進行數(shù)據(jù)傳送

8086CPU的Bill中的指令隊列為6字節(jié),可以預(yù)取6字節(jié)的指令代碼:8088CPU為4字

節(jié)。BIU要保證指令隊列始終是滿的,當指令隊列有2個空字節(jié)(8088為1個)時,BIU

將自動取指令到指令隊列。遵循的是先進先出原則(按順序存放,并按順序取到EU中去)

而堆棧是先進后出

3、8086處理器的啟動

4、寄存器結(jié)構(gòu)(重點

8086微處理器包含有13個16位的寄存器和9位標志位。

4個通用寄存器(AX,BX,CX,DX)

4個段寄存器(CS,DS,SS,ES)

4個指針和變址寄存器(SP,BP,SI,DI)

指令指針(IP)

1)、通用寄存器

(1)8086含4個16位數(shù)據(jù)寄存器,它們又可分為8個8位寄存器,即:

?AX3AH,AL

?BX9BH,BL

?CXfCH,CL

?DX9DH,DL

常用來存放參與運算的操作數(shù)或運算結(jié)果

(2)數(shù)據(jù)寄存器特有的習慣用法

?AX:Accumulator累加器。多用于存放中間運算結(jié)果。所有I/O指令必須都通過AX與接

口傳送信息;

?BX:(BaseRegister)基址寄存器。在間接尋址中用于存放基地址;

?CX:(CountRegister)計數(shù)寄存器用于在循環(huán)或串操作指令中存放循環(huán)次數(shù)或重復(fù)次數(shù);

?DX:DataRegister數(shù)據(jù)寄存器。在32位乘除法運算時,存放高16位數(shù);在間接尋址的

I/O指令中存放I/O端口地址。

2)、指針和變址寄存器(專用寄存器)(16位)

?SP:(StackPointer)堆棧指針寄存器,其內(nèi)容為棧頂?shù)钠频刂?

?BP:(BasePointer)基址指針寄存器,常用于在訪問內(nèi)在時存放內(nèi)存單元的偏移地址。

?SI:(SourceIndex)源變址寄存器(傳送數(shù)據(jù)串時用)

?DI:(DestinationIndex)目標變址寄存器(傳送數(shù)據(jù)串時用)

變址寄存器常用于指令的間接尋址或變址尋址。

3)、段寄存器(屬于BIU)

CS:(CodeSegment)代碼段寄存器,代碼段用于存放指令代碼

DS:(DataSegment)數(shù)據(jù)段寄存器(與SI,DI共用)

ES:(ExtraSegment)附加段寄存器,數(shù)據(jù)段和附加段用來存放操作數(shù)

SS:(StackSegment)堆棧段寄存器,堆棧段用于存放返回地址,保存寄存器內(nèi)容,傳

遞參數(shù)(與SP,BP共用)主要功能是暫時存放數(shù)據(jù)和地址,通常用來保護斷點和現(xiàn)場。

4)、指令指針(IP)

16位指令指針寄存器,其內(nèi)容為下一條要執(zhí)行的指金的偏移地址。(與CS共同表示)

5)、標志寄存器

(1)狀態(tài)標志:

?進位標志位(CF):運算結(jié)果的最高位有進位或有借位,則CF=1

?輔助進位標志位(AF):運算結(jié)果的低四位有進位或借位,則AF=1(一般在BCD碼運算

中)

?溢出標志位(OF):運算結(jié)果有溢出,則0F=1

?零標志位(ZF):反映指令的執(zhí)行是否產(chǎn)生一個為零的結(jié)果

?符號標志位(SF):指出該指令的執(zhí)行是否產(chǎn)生一個負的結(jié)果,當最高位為1時,SF=1,

?奇偶標志位(PF):表示指令運算結(jié)果的低&位“1”個數(shù)是否為偶數(shù),則PF=1

(2)控制標志位

?中斷允許標志位(IF):表示CPU是否能夠響應(yīng)外部亙屏藏中斷請求,IF=1,允許中斷

?跟蹤標志(TF):CPU單步執(zhí)行

?方向標志(DF):若用指令STD將DF=1,數(shù)據(jù)串操作過程中地址自動遞減

5、8086的引腳及其功能(重點掌握以下引腳)

?AD-|5~AD0:雙向三態(tài)的地址總線,輸入/輸出信號。傳送地址時,單向,三態(tài)輸出;傳

送數(shù)據(jù),雙向,三態(tài)輸入輸出

?INTR:可屏蔽中斷請求輸入信號,高電平有效?可通過設(shè)置IF的值來控制。

?NMI:非屏蔽中斷輸入信號。不能用軟件進行屏蔽。

?RESET:復(fù)位輸入信號,高電平有效。復(fù)位的初始狀態(tài)見

?MN/MX:最小最大模式輸入控制信號。

最小工作模式,指系統(tǒng)中只有8088/8086CPU一個微處理器,最小模式也稱為單處理器模

式(MN/MX接電源)

最大工作模式,指系統(tǒng)包含兩個或兩個以上的微處理器(MN/MX接地)

6.存儲器組織

字:低位字節(jié)放在低地址中,高位字節(jié)放在高地址中

地址從上到下,從低到高

字:1123H

當一個字存入存儲器時需要占用兩個存儲單元,字單元的地址采用它的低地址來表示

例如(0004H)=1234H,即字單元:(0004H)單元存放的是

FOOOOH

34H,(0005H)單元存放的是12H。而(0004H)=34H為字

F0001H

節(jié)單元

雙字:(32位),高位字存段地址,低位字存偏移量

規(guī)則字:低位字節(jié)存放在偶數(shù)地址(高位字節(jié)放在奇數(shù)地址)

FFFFDH

(如F0000H,FFFFEH為偶數(shù)地址)

FFFFEH

非規(guī)則字:低位字節(jié)存放在奇數(shù)地址

FFFFFH

讀寫一個字節(jié)時,只需訪問某個存儲體(奇地址存儲體或偶地

物理地址

址存儲體),相應(yīng)的8位數(shù)據(jù)在數(shù)據(jù)總線上有效,而另外一個

字節(jié)數(shù)據(jù)被忽略,只需要一個總線周期

讀寫一個字時,若該字單元地址是從偶地址開始的,即其高字節(jié)在奇地址單元,低地址在偶

地址單元,則只需執(zhí)行一個總線讀寫周期便可完成對改字的讀寫操作

若該字地址從奇地址開始,則CPU需要執(zhí)行連續(xù)的兩個讀寫周期才能完成對該字的讀寫操

作,第一次取奇地址存儲體上的事數(shù)據(jù),偶地址存儲體上的8位數(shù)據(jù)被忽略,第二次取偶

地址存儲體上的數(shù)據(jù),奇地址存儲體上的8位數(shù)據(jù)被忽略,要兩個總線讀寫周期

為了加快運行速度,通常從偶地址開始存放字數(shù)據(jù)

存儲器操作涉及的類正常使用段基址可使用段基址偏移地址

取指令

CS無IP

堆棧操作SS無SP

變量DSCS,ES,SS有效地址

源數(shù)據(jù)用DSCS,ES,SSSI

目的數(shù)據(jù)用ES無DI

作為基址寄存器使用

SSCS,DS,ES有效地址

第三章8086指令系統(tǒng)

說明:8086指令系統(tǒng)這章為重點章節(jié),對下面列出的指令都要求掌握。

8086尋址方式

一、數(shù)據(jù)尋址方式(重點△)

8086指令格式:

操作碼目的操作數(shù)源操作數(shù)

無操作數(shù):控制類指令,如HLT(暫停指令)

單操作數(shù):只給出一個操作數(shù)地址,該操作數(shù)可在寄存器或存儲器中,或指令直接給出立

即數(shù),如INCAL!將AL中的內(nèi)容加1(增量指令)

雙操作數(shù):目的操作數(shù)源操作數(shù);一個操作數(shù)在寄存器中,另一個在寄存器或存儲器中,

或指令中直接給出立即數(shù),不允許兩個都在存儲器中,目的操作數(shù)是一個地址

操作數(shù)的來源:

1.指令中:MOVAX,1234H

2.寄存器中:MOVAX,BX

3.存儲器中:MOVAX,[1234H]

1、立即尋址

操作數(shù)(為一常數(shù))直接由指令給出(此操作數(shù)稱為立即數(shù))

立即尋址只能用于源操作數(shù)(立即數(shù)可以是8位,或16位)

例:MOVAX,1C8FH

MOVBYTEPTR[2A00H],8FII(BYTEPTR指字節(jié)單元)

MOVAL,01H

錯誤例:

XMOV2A00H,AX;錯誤!

指令操作例:MOVAX,3102H;AX―3102H

執(zhí)行后,(AH)=31H,(AL)=02H

主要用來給寄存器賦初值

2、寄存器尋址

(1)操作數(shù)放在某個寄存器中

(2)源操作數(shù)與目的操作數(shù)字長要相同

(3)寄存器尋址與段地址無關(guān)

(4)注意:CS不能當E1的操作數(shù)!

例:

MOVAX,BX

MOV[3F00H],AX

MOVCL,AL

錯誤例:

XMOVAX,BL;字長不同

XMOVES:AX,DX;寄存器與段無關(guān)

3、直接尋址

(1)指令中直接給出操作數(shù)的16位偏移地址偏移地址也稱為有效地址(EA,Effective

Address)

(2)默認的段寄存器為DS,但也可以顯式地指定其他段寄存器一一稱為段超越前綴

(3)偏移地址也可用符號地址來表示,如ADDR、VAR

例:MOVAL,[2A00H](2A00H內(nèi)容存入AL中)

MOVAX,[2A00II](2A00H內(nèi)容存入AL中,2A01H內(nèi)容存入AH中)

MOVDX,ES:[2A00H](段超前)P54

MOVSI,TABLE_PTR

加了[]表示存儲單元的地址,

4、間接尋址

?操作數(shù)的偏移地址(有效地址EA)放在寄存器中

?以SI、DI、BX間接尋址,操作數(shù)在當前數(shù)據(jù)段(DS)區(qū)域中,即數(shù)據(jù)段寄存器DS乘以

16加上SLDI或BX中的16位偏移量后作為操作數(shù)的物理地址例如指令MOVAX,[SI]中,

源操作數(shù)的物理地址是DSX16+SI

?以寄存器BP間接尋址時,操作數(shù)在堆棧段(SS)區(qū)域中,即堆棧寄存器SS乘以16與BP

的內(nèi)容相加作為操作數(shù)的物理地址。若在指令中規(guī)定是段超越的,則BP的內(nèi)容也可以與其

他段寄存器相加,如MOVAX,DS:[BP]的源操作數(shù)的物理地址是DSX16+BP

?例:MOVAX,[BX]

MOVCL,CS:[DI]

錯誤例:XMOVAX,[DX]

XMOVCL,[AX]

XMOV[SP],AX

5、寄存器變址尋址

?EA=間址寄存器的內(nèi)容加上一個8/16位的位移量

?例:MOVAX,[BX+8]

MOVex,TABLE[SI]

MOVAX,IBP];默認段寄存器為SS

?指令操作例:AX,DATA[BX]

若(DS)=6000H,(BX)=1000H,DATA=2A00H,

(63A00H)=66H,(63A01H)=55H

則物理地址=60000H+1000H+2A00H=63A00H

指令執(zhí)行后:(AX)=5566H

6、相對基址變址尋址

?在基址-變址尋址的基礎(chǔ)上再加上一個相對位移量

EA=(BX)+(SI)或(DD+8位或16位位移量;

EA=(BP)+(SI)或(DI)+8位或16位位移量

?若操作數(shù)的偏移地址:

由基址寄存器(BX或BP)給出—基址尋址方式

由變址寄存器(存或DI)給出—變址尋址方式

同一組內(nèi)的寄存器不能同時出現(xiàn)。

注意:除了有段跨越前綴的情況外,當基址寄存器為BX時,操作數(shù)應(yīng)該存放在數(shù)據(jù)段DS

中,當基址寄存器為BP時,操作數(shù)應(yīng)放在堆棧段SS中。例:

MOVAX,[BX+SI]

MOVAX,DS:[BP][DI]

指令操作例:MOVAX,[BX][SI]

假定:(DS)=8000H,(BX)=2000H,SI=1000H

則物理地址=80000H+2000H+1000H=83OOOH

指令執(zhí)行后:(AL)=[83000H]

(AH尸[83001H]

指令操作例:MOVAX,DATA[DI][BX]

若(DS)=8000H,(BX)=2000H,(DI)=1000H,DATA=200H

則指令執(zhí)行后(AH)=[83021H],(AL)=[83020H]

尋址方式操作數(shù)默認段

寄存器

立即尋址Data無

寄存器尋址寄存器無

直接尋址[Data]DS

存寄存器間接尋址[BX],[SI],[DI]DS

儲相對基址/變址尋址偏移量DS

器[BP]+偏移量SS

(BP]+[SI],[DI]SS

基址變址尋址[BX]+[SI],[DI]DS

相對基址變址尋址[BX][SIorDI]+偏移量DS

[BP][SIorDI]+偏移量SS

寄存器間接、寄存器相對、基址變址、相對基址變址四種尋址方式的比較:

尋址方式指令操作數(shù)形式

■寄存器間接只有一個寄存器(BX/BP/SI/DI之一)

■寄存器相對一個寄存器加上位移量

■基址一變址兩個不同類別的寄存器

■相對基址-變址兩個不同類別的寄存器加上位移量

二、地址尋址方式(了解有4類,能判斷)

簡要判斷依據(jù)(指令中間的單詞):

段內(nèi)直接short,near

段內(nèi)間接word

段間直接far

段間間接dword

第一節(jié)8086指令系統(tǒng)

一、數(shù)據(jù)傳送指令(重點△)

1、通用傳送指令

(1)MOVdest,src;desl-src

傳送的是字節(jié)還是字取決于指令中涉及的寄存器是8位還是16位。

傳送指令不影響標志位

具體來說可實現(xiàn):

①寄存器間(除CS,IP)實現(xiàn)數(shù)據(jù)任意傳送

MOVBX,AX

MOVBH,AL

MOVSI,BP

指令中兩操作數(shù)中至少有一個為寄存器

②立即數(shù)送寄存器

MOVBX,50H;

MOVBX,500H;

MOVAX,0(AX清零)

MOVAX,12H=MOVAL,12H

MOVAL,1000HX

③立即數(shù)送存儲單元

MOV[BX],500H(將00H送入存儲器數(shù)據(jù)段中偏移地址BX的字節(jié)單元;將05H

送入偏移地址為BX+1的字節(jié)單元)

MOVBYTEPTR[2000H],25H(完成將存儲器數(shù)據(jù)段中偏移地址為2000H的字節(jié)

單元賦值為25H)

MOVWORDPTR[2000H],25H(將存儲器數(shù)據(jù)段偏移地址為2000H的字節(jié)單元

賦值為25H,同時將偏移地址為2001H的字節(jié)單元賦值為0)

物理地址=段基址*10H+EA

④存儲單元送寄存器

MOVAX,[BX]取數(shù)據(jù)(將存儲器偏移地址為BX所指的字節(jié)單元內(nèi)容送AL,

BX+1所指的字節(jié)內(nèi)容送AH)

⑤寄存器送存儲單元

MOV[BX],AX(將AL的字節(jié)單元內(nèi)容送偏移地址為BX,AH的字節(jié)內(nèi)容送BX+D

⑥存儲單元/寄存器送段寄存器

MOV[BX],DS保護段地址

MovDS,|BX]給地址賦值

⑦段寄存器送存儲單元/寄存器

MOVDS,AX給段地址賦值

MOVAX,DS保護段地址

立即數(shù)

儲通用寄存器

器AXBXCXDX

BPSPSIDIJ

段寄存器

DSESSS

MOV指令的使用規(guī)則

1.兩個操作數(shù)的類型必須一致;

2.兩個操作數(shù)不能同時為存儲器操作數(shù);可寫成:MOVAX,[SI];MOV[DI],AX

3.不能用CS做旦的操作數(shù);

4.不允許用立即數(shù)做且的操作數(shù);要寫成:MOVAX,~H;MOVDS,AX

5.不允許立即數(shù)直接向段寄存器傳送數(shù)據(jù);

6.不允許在段寄存器之間直接傳送數(shù)據(jù)。

7.MOV指令可傳送8位數(shù)據(jù),也可傳送16位數(shù)據(jù)

(2)、堆棧指令

什么是堆棧?

按“后進先出(LIFO)”方式工作的存儲區(qū)域。堆棧以字為單位進行壓入彈出操作。

規(guī)定由SS指示堆棧段的段基址,堆棧指針SP始終指向堆棧的頂部,SP的初值規(guī)定了所

用堆棧區(qū)的大小。堆棧的最高地址叫棧底。

棧頂是堆棧操作的唯一出口,是棧地址較小的一端,棧底是不變的,為加快堆棧操作的速

度,均以字為單位進行,一次操作只能是SP+2(出棧)或SP-2(入棧)

①壓棧指令PUSH

PUSHsre;src為16位操作數(shù)

(因為先入的數(shù)據(jù)會被壓入棧底,而后的數(shù)據(jù)地址會越來越小)

例:PUSHAX;將AX內(nèi)容壓棧

執(zhí)行操作:SPf(SP)-1

[SP]一高字節(jié)AH

SPf(SP)-1

[SP]一低字節(jié)AL

故(SP)-(SP)-2

注意進棧方向是高地址向低地址發(fā)展。'

②出棧指令POP

POPdest

執(zhí)行操作:OPRD的低字節(jié)一[SP]

SP-SP+1

OPRD的高字節(jié)一[SP]

SP-SP+1

例:POPBX;將棧頂內(nèi)容彈至BX

執(zhí)行操作:(BL)一(SP)

(BH)-(SP)+1

(SP)―(SP)+2

堆棧指令在使用時需注意的幾點:

①堆棧操作總是按字進行

②不能從棧頂彈出一個字給CS

③堆棧指針為SS:SP,SP永遠指向棧頂

④SP自動進行增減量(-2,+2)

(3)、交換指令XCHG

格式:XCHGreg,mem/reg

功能:交換兩操作數(shù)的內(nèi)容。

要求:兩操作數(shù)中必須有一個在寄存器中;

操作數(shù)不能為段寄存器和立即數(shù);

源和目地操作數(shù)類型要一致。

舉例:XCHGAX,BX將AX與BX的值相交換

XCHG[2000|,CL將CL與數(shù)據(jù)段中偏移地址為2000H的單元交換

(4)查表指令XLAT

執(zhí)行的操作:AL-[(BX)+(AL)]

又叫查表轉(zhuǎn)換指令,它可根據(jù)表項序號查出表中對應(yīng)代碼的內(nèi)容。執(zhí)行時先將表的首地址

(偏移地址)送到BX中,待查的碼存于AL中。(使用之前要有相應(yīng)的設(shè)置)

實驗一(8255)中涉及

2、累加器輸入輸出指令

只限于用累加器AL或AX來傳送信息。

功能:(累加器)一fI/O端口

(1)輸入指令I(lǐng)N

格式:

IN累加器,端口端口號0—255(00H-FFH)(28-1)8位立即數(shù)直接給出

IN累加器,DX;DX表示的端口范圍達64K

例:INAL,80H;(AL)一(80H端口)字節(jié)

INAL,DX;(AL)一((DX))

INALn(從端口地址為n的端口)

INAX,n(AH-[n+l],AL-[n])

INAL,DX(從端口地址DX指明的端口讀一個字節(jié)直接送AL)

INAX,DX(AH-|DX+1],AL-[DX])字,相鄰的兩個單位的內(nèi)容送到AX中

例INAL,40H,CS=1000H,IP=0050H,8位端口40H中內(nèi)容為55H

端口40H的內(nèi)容55H送入寄存器AL中

⑵輸出指令OUT

格式:OUT端口,累加器

OUTDX,累加器

(CPU寫數(shù)據(jù)到外設(shè)當中)

例:OUT68H,AX;(69H,68H)-(AX)

OUTDX,AL;((DX))-(AL)

在使用間接尋址的IN/OUT指令時,要事先用傳送指令把I/O端口號設(shè)置到DX寄存器

如:MOVDX,220H

INAL,DX;將220H端口內(nèi)容讀入AL

如OUTDX,AL,(AL=66H);將累加器AL中的數(shù)據(jù)字節(jié)66H,輸出到DX指定的端口

3、目標地址傳送指令

(1)LEA

傳送偏移地址

格式:LEAreg,mem;將指定內(nèi)存單元的偏移地址送到指定寄存器

LEABX,[2000H];把2000H單元的偏移地址送到BX,執(zhí)行后BX=2000H

要求:

1)源操作數(shù)必須是一個存儲器操作數(shù);

2)目的操作數(shù)必須是一個16位的通用寄存器。

例:LEABX,[SI+10H]

設(shè):(SI)=1000H

則執(zhí)行該指令后,(BX)=1010H

?注意以下二條指令差別:

LEABX,BUFFER

MOVBX,BUFFER

前者表示將符號地址為BUFFER的存儲單元的偏移地址取到BX中;后者表示將BUFFER存

儲單元中的內(nèi)容取到BX中。

下面兩條指令等效:

LEABX,BUFFER

MOVBX,OFFSETBUFFER

其中OFFSETBUFFER表示存儲器單元BUFFER的偏移地址。

二者都可用于取存儲器單元的偏移地址,但LEA指令可以取動態(tài)的地址,OFFSET只能取

靜態(tài)的地址。

(2)LDS

功能:完成一個地膽阻的傳送,地址指針包括段地址部分和偏移量部分。前兩個字節(jié)偏移

量部分送入一個16位的指針寄存器或變址寄存器,后兩字節(jié),段地址送入DS,

例如:指令“LDSSL[2000H]”,將當前數(shù)據(jù)段2000H及2001H單元的內(nèi)容送SL同時將

2002H及2003H單元的內(nèi)容送DS

(3)LES

功能:除將段地址送入ES外,其他與LDS指令相同

標志寄存器傳送

(1)LAHF(LOADAHWITHFLAG)

將標志寄存器中的SF、ZF、AF、PF和CF(即低8位)傳送至AH寄存器的指定位,

空位沒有定義。

(2)SAHF(STOREAHWITHFLAG)

將寄存器AH的指定位,送至標志寄存器的SF、ZF、AF、PF和CF位。根據(jù)AH的內(nèi)

容,影響上述標志位,對O、D和I無影響。

(3)PUSHF(Pushflag)

將標志寄存器壓入堆棧頂部,同時修改堆棧指針(此指令不影響標志寄存器)

(4)POPF(Popflag)

將堆棧頂部的一個字傳送到標志寄存器中,同時修改堆棧指針

(完成出棧入棧的地址應(yīng)該相同PUSHF與POPF是成對出現(xiàn)的,入棧指針前SP送入標

志寄存器,出棧后將SP送入寄存器,看標志寄存器的值是否相同)

二、算術(shù)運算指令(會影響標志位)

1、加法指令

(1)不帶進位的加法指令A(yù)DD

格式:ADDOPRD1,OPRD2

源操作數(shù):8/16位通用寄存器,存儲器,立即數(shù)

目的操作數(shù):8/16位通用寄存器,存儲器

ADD寄存器,立即數(shù)

ADDAL,30AL與立即數(shù)30相加,結(jié)果放在AL中

ADD存儲器1/寄存器1,存儲器2/寄存器2

實例

ADDAL,30H(AL與立即數(shù)30相加,結(jié)果放在AL中)

ADDSI,IBX+20H](SI與BX+20H及BX+21H兩單元組成的一個字相

力口,結(jié)果放在SI中)

ADDCX,SI(SI的內(nèi)容與CX的內(nèi)容相加,結(jié)果放在CX中)

ADD[DI],200H(立即數(shù)200H與存儲器內(nèi)容相加,結(jié)果放在存儲器中)

?ADD指令對6個狀態(tài)標志均產(chǎn)生影響。

例:已知(BX)=D75FH

指令A(yù)DDBX,8046H執(zhí)行后,狀態(tài)標志各是多少?

D75FH=1110011101011111

8046H=1000000001000110

111111

0110011110100101

結(jié)果:因為最高位有進位,故CF=1;最后8位有4個1,故PF=1;最后4位向第5位有進

位,故AF=1;運算結(jié)果不全為0,故ZF=0;最高位為0,故SF=0;有溢出,故OF=1

加法指令結(jié)果存放在OPRD1

判斷溢出與進位(重點△)

從硬件的角度:默認參與運算的操作數(shù)都是有符號數(shù),當兩數(shù)的符號位相同,而和的結(jié)果相

異時有溢出,貝iJOF=l,否則OF=0

(2)帶進位的加法ADC

ADC指令在形式上和功能上與ADD類似,只是相加時還要包括進位標志CF的內(nèi)容,例如:

ADCAL,68H;AL-(AL)+68H+(CF)

ADCAX,CX;AX-(AX)+(CX)+(CF)

ADCBX,[DI];BX-(BX)+[DI+11[DI]+(CF)

ADC指令一般用于16位以上的多字節(jié)數(shù)字相加

(3)加1指令I(lǐng)NC

格式:INCreg/mem

功能:類似于C語言中的++操作:對指定的操作數(shù)加1

例:INCAL

INCSI

INCBYTEPTR[BX+4](知道字節(jié)加1)

注:本指令不影響CF標志。

(4)非壓縮BCD碼加法調(diào)整指令A(yù)AA

AAA指令的操作:

如果AL的低4位>9或AF=1,則:

①AL-(AL)+6,(AH)-(AH)+1,AF-1

②AL高4位清零

③CF-AF

否則AL高4位清零

(5)壓縮BCD碼加法調(diào)整指令DAA

?兩個壓縮BCD碼相加結(jié)果在AL中,通過DAA調(diào)整得到一個正確的壓縮BCD碼.

?指令操作(調(diào)整方法):

若AL的低4位>9或AF=1

則(AL)=(AL)+6,AFT

若AL的高4位>9或CF=1

則(AL)-(AL)+60H,CF-1

?除OF外,DAA指令影響所有其它標志。

?DAA指令應(yīng)緊跟在ADD或AOC指令之后。

2、減法指令

(1)不考慮借位的減法指令SUB

格式:SUBOPRD1.OPRD2

操作:dest-OPRD1-OPRD2

注:1.源和目的操作數(shù)不能同時為存儲器操作數(shù)

2.立即數(shù)不能作為目的操作數(shù)

3.不能進行段寄存器減法

指令例子:

SUBAL,6011

SUB[BX+20H],DX

SUBAX,CX

(2)考慮借位的減法指令SBB

SBB指令主要用于多字節(jié)的減法。

格式:SBBdest,sre

操作:dest-(dest)-(src)-(CF)

指令例子:

SBBAX,CX

SBBWORDPTR[SI],2080H

SBB[SI],DX

(3)減1指令DEC

作用類似于C語言中的“一一”操作符。

格式:DECopr

操作:opr-(opr)-1

在循環(huán)程序中,該指令對地址指針和循環(huán)計數(shù)值進行修改(執(zhí)行一次,減1.直到位0)

指令例子:

DECCL

DECWORDPTR[DI+2]由DI+2尋址的數(shù)據(jù)段中,字存儲單元內(nèi)容減1

DECSI

(4)求補指令NEG

格式:NEGopr

操作:opr-O-(opr)(相當于用0作被減數(shù)的SUB指令一樣,但進位標志為1)

對一個操作數(shù)取補碼相當于用0減去此操作數(shù),故利用NEG指令可得到負數(shù)的絕對值。

相當于:NOTopr

INCopr

例:若(AL)=0FCH,則執(zhí)行NEGAL后,

(AL)=04H,CF=1

(5)比較指令CMP

格式:CMPOPRD1,OPRD2

操作:OPRD1-OPRD2

CMP也是執(zhí)行兩個操作數(shù)相減,但結(jié)果不送目標操作數(shù),其結(jié)果只反映在標志位上。

有符號數(shù),進行比較后,溢出標志位OF與符號標志位SF的值相同時,則OPRD1〉

OPRD2,否貝ijOPRD1VOPRD2

無符號數(shù),CF=0,則OPRD1NOPRD2,若CF=1,OPRDKOPRD2

指令例子:

CMPAL,0AH

CMPCX,SI

注意:(1)目的操作數(shù)不能為立即數(shù)

(2)源操作數(shù)和目的操作數(shù)不能同時為存儲器

(6)十進制調(diào)制指令

例如十進制數(shù)12,用BCD碼表示00010010,十進制的每一位用二進制數(shù)表示(4

位4位是二進制,而相鄰的四位卻是十進制的),故要調(diào)整

一類為壓縮BCD碼,即規(guī)定每個字節(jié)表示兩位BCD數(shù);另一類為非壓縮BCD碼,

即用一個字節(jié)表示1位BCD數(shù),因0~9可以用4位二進制數(shù)表示(在字節(jié)的高4位

用0填充)。例如,十進制數(shù)25,壓縮BCD數(shù)時為25H,非壓縮BCD數(shù)為0205H

減法調(diào)整指令A(yù)AS

對AL中由兩個非壓縮的BCD碼相減的結(jié)果進行調(diào)整。調(diào)整操作為:

若AL的低4位>9或AF=1,則:

①A—(AL)-6,AH-(AH)-1,AF-1

②AL的高4位清零

③CF+AF

否則:AL的高4位清零

壓縮BCD碼減法調(diào)整指令DAS

對AL中由兩個壓縮BCD碼相減的結(jié)果進行調(diào)整。調(diào)整操作為:

若AL的低4位>9或AF=1,則:

AL-(AL)-6,且AF-1

若AL的高4位>9或CF=1,則:

AL-(AL)-60H,且CF-1

DAS對OF無定義,但影響其余標志位。

DAS指令要求跟在減法指令之后。

3、乘法指令

進行乘法時:8位*8位-16位乘積

16位*16位f32位乘積

相乘后是雙倍長的積

(1)無符號數(shù)的乘法指令MUL(MEM/REG)

格式:MULOPRD

操作:字節(jié)操作數(shù)(AX)一(AL)X(src)

其16位積的高8位放在AH中,低8位放在AL中(因為兩數(shù)相乘可以為10位或以上)

字操作數(shù)(DX,AX)-(AX)X(src)

其32位積的高16位放在DX中,低16位放在AX中

其中一個操作數(shù)默認放在AL或AX中,而另外一個由OPRD給出,注意OPRD不能是立即數(shù)

高位字節(jié)或高位字無效:即All=0或DX=O,將CF和0F兩標志位同時0(因為高位全為0,

肯定不存在溢出和進位)

高位字節(jié)或高位字有效:即AIIW0,或DXW0,即將CF和0F同時置1(高位不全為1)

指令例子:

MULBL;(AL)X(BL),乘積在AX中

MULCX;(AX)X(CX),乘積在DX,AX中

MULBYTEPTR[BX]

(2)有符號數(shù)乘法指令I(lǐng)MUL

格式與MUL指令類似,只是要求兩操作數(shù)均為有符號數(shù)。

指令例子:

IMULBL;(AX)一(AL)x(BL)

IMULWORDPTR[SI];

(DX,AX)-(AX)x([SI+l][SI])

注意:MUL/IMUL指令中

?AL(AX)為隱含的乘數(shù)寄存器;(其中一個操作數(shù)默認放在AL或AX中,而另一個操作數(shù)由

指令給出)

?AX(DX,AX)為隱含的乘積寄存器;

?OPRD不能為立即數(shù);

?除CF和OF外,對其它標志位無定義。

?8位數(shù)相乘,結(jié)果16位數(shù)放在AX中,16位數(shù)相乘結(jié)果為32位數(shù),其中高16位放在DX

中,低16位放在AX中。

4、除法指令

進行除法時:16位/8位~8位商

32位/16位-*16位商

對被除數(shù)、商及余數(shù)存放有如下規(guī)定:

被除數(shù)商余數(shù)

字節(jié)除法AXALAH

字除法DX:AXAXDX

字節(jié)運算時被除數(shù)放在AX中,運算結(jié)果商放在AL中,而余數(shù)放在AH中;字運算時被除

數(shù)位DX與AX構(gòu)成32位數(shù)(DX中放高16位),運算結(jié)果的商放在AX中,而余數(shù)放在

DX中

(1)無符號數(shù)除法指令DIV

格式:DIVsrc

操作:字節(jié)操作(AL)一(AX)/(SRC)的商

(AH)-(AX)/(SRC)的余數(shù)

字操作(AX)一(DX,AX)/(SRC)的商

(DX)一(DX,AX)/(SRC)的余數(shù)

指令例子:

DIVCL

DIVWORDPTR[BX]

(2)有符號數(shù)除法指令I(lǐng)DIV

格式:IDIVsrc

操作與DIV類似。商及余數(shù)均為有符號數(shù),且余數(shù)符號總是與被除數(shù)符號相同。

注意:對于DIV/IDIV指令

AX(DX,AX)為隱含的被除數(shù)寄存器。(被除數(shù)放在AX中)

AL(AX)為隱含的商寄存器。(運算結(jié)果商放在AL中)

AH(DX)為隱含的余數(shù)寄存器。(運算余數(shù)放在AH中)

src不能為立即數(shù)。

對所有條件標志位均無定

32位(一個字)被除數(shù)為DX,AX(DX中放高16位),運算結(jié)果AX放商,DX放余數(shù)

關(guān)于除法操作中的字長擴展問題

?除法運算要求被除數(shù)字長是除數(shù)字長的兩倍,若不滿足則需對被除數(shù)進行擴展,否則產(chǎn)生錯

誤。

?對于無符號數(shù)除法擴展,只需將AH或DX清零即可。

?對有符號數(shù)而言,則是符號位的擴展??墒褂们懊娼榻B過的符號擴展指令CBW和CWD

字節(jié)擴展指令CBW

格式:CBW

該指令執(zhí)行時將AL寄存器的最高位擴展到AH,即若(最高位)D7=0,則AH=0;否則

AH=OFFHo

字擴展指令CWD

格式:CWD

該指令執(zhí)行時將AX寄存器的最高位擴展到DX,即若(最高位)D1

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論