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

下載本文檔

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

文檔簡(jiǎn)介

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

復(fù)習(xí)資料說(shuō)明:

1、標(biāo)有紅色星號(hào)“Q”的內(nèi)容為重點(diǎn)內(nèi)容

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

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

第一章概述

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

1、無(wú)符號(hào)數(shù)的表示方法:

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

特點(diǎn):以十為底,逢十進(jìn)一;

共有0-9十個(gè)數(shù)字符號(hào)。

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

特點(diǎn):以2為底,逢2進(jìn)位;

只有0和1兩個(gè)符號(hào)。

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

特點(diǎn):以16為底,逢16進(jìn)位;

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

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

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

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

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

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

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

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

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

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

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

以小數(shù)點(diǎn)為起點(diǎn)求得整數(shù)和小數(shù)的各個(gè)位。

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

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

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

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

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

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

替。

3、無(wú)符號(hào)數(shù)二進(jìn)制的運(yùn)算

無(wú)符號(hào)數(shù):機(jī)器中全部有效位均用來(lái)表示數(shù)的大小,例如N=1001,表示無(wú)符號(hào)數(shù)9

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

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

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

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

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

4、二進(jìn)制數(shù)的邏輯運(yùn)算

特點(diǎn):按位運(yùn)算,無(wú)進(jìn)借位

(1)與運(yùn)算

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

(2)或運(yùn)算

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

(3)非運(yùn)算

(4)異或運(yùn)算

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

二、計(jì)算機(jī)中的碼制(重點(diǎn)層)

1、對(duì)于符號(hào)數(shù),機(jī)器數(shù)常用的表示方法有原碼、反碼和補(bǔ)碼三種。數(shù)X的原碼記作[X]原,

反碼記作[X]反,補(bǔ)碼記作[X]補(bǔ).

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

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

(1)原碼

定義:

符號(hào)位:0表示正,1表示負(fù);

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

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

機(jī)器數(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ù)值位。

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

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

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

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

(3)補(bǔ)碼

定義:

若X>0,則兇補(bǔ)=兇反=兇原

若X<0,則兇補(bǔ)=[X]反+1

注意:機(jī)器字長(zhǎng)為8時(shí),數(shù)0的補(bǔ)碼唯一,同為00000000

2、8位二進(jìn)制的表示范圍:

原碼:-127-+127

反碼:-127~+127

補(bǔ)碼:-128~+127(因?yàn)?位二進(jìn)制數(shù)有2之256種表達(dá)方式,原碼,反碼都是+0~+127;

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

3、特殊數(shù)10000000

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

?在反碼中定義為:-127

?在補(bǔ)碼中定義為:-128

?對(duì)無(wú)符號(hào)數(shù):(10000000)2=128

補(bǔ)碼加法:[A+B卜卜=[A]訃+舊卜卜

補(bǔ)碼運(yùn)算步驟

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

2)進(jìn)行加法得到兩數(shù)和的補(bǔ)碼(符號(hào)位作為數(shù)的一部分參加運(yùn)算)

3)判斷是否溢出

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

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

②溢出的判斷:

溢出:帶符號(hào)數(shù)運(yùn)算的結(jié)果超出計(jì)算機(jī)可以表示的范圍,就是溢出。

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

兩個(gè)負(fù)數(shù)補(bǔ)碼相加后得到正數(shù)的補(bǔ)碼,或兩個(gè)正數(shù)的補(bǔ)碼相加后到負(fù)數(shù)的補(bǔ)碼,

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

計(jì)算(-70)補(bǔ)+(-60)撲

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

=10111010+11000100=101111110

兩個(gè)負(fù)數(shù)之和卻產(chǎn)生了正的結(jié)果,同樣是因?yàn)楫a(chǎn)生了溢出。因是超出了負(fù)的最

大范圍,所以是負(fù)向溢出

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

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

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

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

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

三、信息的編碼

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

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

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

十進(jìn)制數(shù)。

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

表示0~9

2、字符的編碼

計(jì)算機(jī)采用7位二進(jìn)制代碼對(duì)字符進(jìn)行編碼

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

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

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

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

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

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

微處理器

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

也稱CPU,是計(jì)算機(jī)的核心部件。

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

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

值來(lái)進(jìn)行劃分,可分為4位,8位,32位,64位

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

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

主存容量:主存儲(chǔ)器所能存儲(chǔ)的最大信息總量為主存容量,是衡量微型計(jì)算機(jī)處理能力

大小的一個(gè)重要指標(biāo)

主頻:決定計(jì)算機(jī)的處理速度,頻率越高,處理速度越快

運(yùn)算速度:計(jì)算機(jī)每秒運(yùn)算的次數(shù)

第二章微機(jī)組成原理

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

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

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

為CPU)

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

制為二進(jìn)制。

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

執(zhí)行。

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

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

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

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

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

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

如讀信號(hào),寫信號(hào);也包括其他部件送往CPU的,如中斷請(qǐng)求信號(hào),總線請(qǐng)求信號(hào)。為雙向

總線

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

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

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

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

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

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

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

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

節(jié)。BIU要保證指令隊(duì)列始終是滿的,當(dāng)指令隊(duì)列有2個(gè)空字節(jié)(8088為1個(gè))時(shí),BIU

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

而堆棧是先進(jìn)后出

3、8086處理器的啟動(dòng)

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

8086微處理器包含有13個(gè)16位的寄存器和9位標(biāo)志位。

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

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

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

指令指針(IP)

1)、通用寄存器

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

?AX3AH,AL

?BX9BH,BL

?CXfCH,CL

?DX9DH,DL

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

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

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

口傳送信息;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4)、指令指針(IP)

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

5)、標(biāo)志寄存器

(1)狀態(tài)標(biāo)志:

?進(jìn)位標(biāo)志位(CF):運(yùn)算結(jié)果的最高位有進(jìn)位或有借位,則CF=1

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

中)

?溢出標(biāo)志位(OF):運(yùn)算結(jié)果有溢出,則0F=1

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

?符號(hào)標(biāo)志位(SF):指出該指令的執(zhí)行是否產(chǎn)生一個(gè)負(fù)的結(jié)果,當(dāng)最高位為1時(shí),SF=1,

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

(2)控制標(biāo)志位

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

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

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

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

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

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

?INTR:可屏蔽中斷請(qǐng)求輸入信號(hào),高電平有效?可通過(guò)設(shè)置IF的值來(lái)控制。

?NMI:非屏蔽中斷輸入信號(hào)。不能用軟件進(jìn)行屏蔽。

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

?MN/MX:最小最大模式輸入控制信號(hào)。

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

式(MN/MX接電源)

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

6.存儲(chǔ)器組織

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

地址從上到下,從低到高

字:1123H

當(dāng)一個(gè)字存入存儲(chǔ)器時(shí)需要占用兩個(gè)存儲(chǔ)單元,字單元的地址采用它的低地址來(lái)表示

例如(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

讀寫一個(gè)字節(jié)時(shí),只需訪問(wèn)某個(gè)存儲(chǔ)體(奇地址存儲(chǔ)體或偶地

物理地址

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

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

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

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

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

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

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

為了加快運(yùn)行速度,通常從偶地址開(kāi)始存放字?jǐn)?shù)據(jù)

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

取指令

CS無(wú)IP

堆棧操作SS無(wú)SP

變量DSCS,ES,SS有效地址

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

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

作為基址寄存器使用

SSCS,DS,ES有效地址

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

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

8086尋址方式

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

8086指令格式:

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

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

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

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

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

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

操作數(shù)的來(lái)源:

1.指令中:MOVAX,1234H

2.寄存器中:MOVAX,BX

3.存儲(chǔ)器中:MOVAX,[1234H]

1、立即尋址

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

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

例:MOVAX,1C8FH

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

MOVAL,01H

錯(cuò)誤例:

XMOV2A00H,AX;錯(cuò)誤!

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

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

主要用來(lái)給寄存器賦初值

2、寄存器尋址

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

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

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

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

例:

MOVAX,BX

MOV[3F00H],AX

MOVCL,AL

錯(cuò)誤例:

XMOVAX,BL;字長(zhǎng)不同

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

3、直接尋址

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

Address)

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

(3)偏移地址也可用符號(hào)地址來(lái)表示,如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

加了[]表示存儲(chǔ)單元的地址,

4、間接尋址

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

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

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

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

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

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

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

?例:MOVAX,[BX]

MOVCL,CS:[DI]

錯(cuò)誤例:XMOVAX,[DX]

XMOVCL,[AX]

XMOV[SP],AX

5、寄存器變址尋址

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

?例:MOVAX,[BX+8]

MOVex,TABLE[SI]

MOVAX,IBP];默認(rèn)段寄存器為SS

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

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

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

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

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

6、相對(duì)基址變址尋址

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

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

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

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

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

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

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

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

中,當(dāng)基址寄存器為BP時(shí),操作數(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ù)默認(rèn)段

寄存器

立即尋址Data無(wú)

寄存器尋址寄存器無(wú)

直接尋址[Data]DS

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

儲(chǔ)相對(duì)基址/變址尋址偏移量DS

器[BP]+偏移量SS

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

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

相對(duì)基址變址尋址[BX][SIorDI]+偏移量DS

[BP][SIorDI]+偏移量SS

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

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

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

■寄存器相對(duì)一個(gè)寄存器加上位移量

■基址一變址兩個(gè)不同類別的寄存器

■相對(duì)基址-變址兩個(gè)不同類別的寄存器加上位移量

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

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

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

段內(nèi)間接word

段間直接far

段間間接dword

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

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

1、通用傳送指令

(1)MOVdest,src;desl-src

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

傳送指令不影響標(biāo)志位

具體來(lái)說(shuō)可實(shí)現(xiàn):

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

MOVBX,AX

MOVBH,AL

MOVSI,BP

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

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

MOVBX,50H;

MOVBX,500H;

MOVAX,0(AX清零)

MOVAX,12H=MOVAL,12H

MOVAL,1000HX

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

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

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

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

單元賦值為25H)

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

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

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

④存儲(chǔ)單元送寄存器

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

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

⑤寄存器送存儲(chǔ)單元

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

⑥存儲(chǔ)單元/寄存器送段寄存器

MOV[BX],DS保護(hù)段地址

MovDS,|BX]給地址賦值

⑦段寄存器送存儲(chǔ)單元/寄存器

MOVDS,AX給段地址賦值

MOVAX,DS保護(hù)段地址

立即數(shù)

儲(chǔ)通用寄存器

器AXBXCXDX

BPSPSIDIJ

段寄存器

DSESSS

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

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

2.兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器操作數(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)、堆棧指令

什么是堆棧?

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

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

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

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

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

①壓棧指令PUSH

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

(因?yàn)橄热氲臄?shù)據(jù)會(huì)被壓入棧底,而后的數(shù)據(jù)地址會(huì)越來(lái)越小)

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

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

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

SPf(SP)-1

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

故(SP)-(SP)-2

注意進(jìn)棧方向是高地址向低地址發(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

堆棧指令在使用時(shí)需注意的幾點(diǎn):

①堆棧操作總是按字進(jìn)行

②不能從棧頂彈出一個(gè)字給CS

③堆棧指針為SS:SP,SP永遠(yuǎn)指向棧頂

④SP自動(dòng)進(jìn)行增減量(-2,+2)

(3)、交換指令XCHG

格式:XCHGreg,mem/reg

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

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

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

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

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

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

(4)查表指令XLAT

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

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

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

實(shí)驗(yàn)一(8255)中涉及

2、累加器輸入輸出指令

只限于用累加器AL或AX來(lái)傳送信息。

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

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

格式:

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

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

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

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

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

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

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

INAX,DX(AH-|DX+1],AL-[DX])字,相鄰的兩個(gè)單位的內(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è)當(dāng)中)

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

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

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

如:MOVDX,220H

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

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

3、目標(biāo)地址傳送指令

(1)LEA

傳送偏移地址

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

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

要求:

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

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

例:LEABX,[SI+10H]

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

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

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

LEABX,BUFFER

MOVBX,BUFFER

前者表示將符號(hào)地址為BUFFER的存儲(chǔ)單元的偏移地址取到BX中;后者表示將BUFFER存

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

下面兩條指令等效:

LEABX,BUFFER

MOVBX,OFFSETBUFFER

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

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

靜態(tài)的地址。

(2)LDS

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

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

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

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

(3)LES

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

標(biāo)志寄存器傳送

(1)LAHF(LOADAHWITHFLAG)

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

空位沒(méi)有定義。

(2)SAHF(STOREAHWITHFLAG)

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

容,影響上述標(biāo)志位,對(duì)O、D和I無(wú)影響。

(3)PUSHF(Pushflag)

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

(4)POPF(Popflag)

將堆棧頂部的一個(gè)字傳送到標(biāo)志寄存器中,同時(shí)修改堆棧指針

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

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

二、算術(shù)運(yùn)算指令(會(huì)影響標(biāo)志位)

1、加法指令

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

格式:ADDOPRD1,OPRD2

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

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

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

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

ADD存儲(chǔ)器1/寄存器1,存儲(chǔ)器2/寄存器2

實(shí)例

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

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

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

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

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

?ADD指令對(duì)6個(gè)狀態(tài)標(biāo)志均產(chǎn)生影響。

例:已知(BX)=D75FH

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

D75FH=1110011101011111

8046H=1000000001000110

111111

0110011110100101

結(jié)果:因?yàn)樽罡呶挥羞M(jìn)位,故CF=1;最后8位有4個(gè)1,故PF=1;最后4位向第5位有進(jìn)

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

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

判斷溢出與進(jìn)位(重點(diǎn)△)

從硬件的角度:默認(rèn)參與運(yùn)算的操作數(shù)都是有符號(hào)數(shù),當(dāng)兩數(shù)的符號(hào)位相同,而和的結(jié)果相

異時(shí)有溢出,貝iJOF=l,否則OF=0

(2)帶進(jìn)位的加法ADC

ADC指令在形式上和功能上與ADD類似,只是相加時(shí)還要包括進(jìn)位標(biāo)志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語(yǔ)言中的++操作:對(duì)指定的操作數(shù)加1

例:INCAL

INCSI

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

注:本指令不影響CF標(biāo)志。

(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

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

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

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

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

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

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

?除OF外,DAA指令影響所有其它標(biāo)志。

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

2、減法指令

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

格式:SUBOPRD1.OPRD2

操作:dest-OPRD1-OPRD2

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

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

3.不能進(jìn)行段寄存器減法

指令例子:

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語(yǔ)言中的“一一”操作符。

格式:DECopr

操作:opr-(opr)-1

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

指令例子:

DECCL

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

DECSI

(4)求補(bǔ)指令NEG

格式:NEGopr

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

對(duì)一個(gè)操作數(shù)取補(bǔ)碼相當(dāng)于用0減去此操作數(shù),故利用NEG指令可得到負(fù)數(shù)的絕對(duì)值。

相當(dāng)于:NOTopr

INCopr

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

(AL)=04H,CF=1

(5)比較指令CMP

格式:CMPOPRD1,OPRD2

操作:OPRD1-OPRD2

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

有符號(hào)數(shù),進(jìn)行比較后,溢出標(biāo)志位OF與符號(hào)標(biāo)志位SF的值相同時(shí),則OPRD1〉

OPRD2,否貝ijOPRD1VOPRD2

無(wú)符號(hào)數(shù),CF=0,則OPRD1NOPRD2,若CF=1,OPRDKOPRD2

指令例子:

CMPAL,0AH

CMPCX,SI

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

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

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

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

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

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

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

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

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

對(duì)AL中由兩個(gè)非壓縮的BCD碼相減的結(jié)果進(jìn)行調(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

對(duì)AL中由兩個(gè)壓縮BCD碼相減的結(jié)果進(jìn)行調(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對(duì)OF無(wú)定義,但影響其余標(biāo)志位。

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

3、乘法指令

進(jìn)行乘法時(shí):8位*8位-16位乘積

16位*16位f32位乘積

相乘后是雙倍長(zhǎng)的積

(1)無(wú)符號(hào)數(shù)的乘法指令MUL(MEM/REG)

格式:MULOPRD

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

其16位積的高8位放在AH中,低8位放在AL中(因?yàn)閮蓴?shù)相乘可以為10位或以上)

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

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

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

高位字節(jié)或高位字無(wú)效:即All=0或DX=O,將CF和0F兩標(biāo)志位同時(shí)0(因?yàn)楦呶蝗珵?,

肯定不存在溢出和進(jìn)位)

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

指令例子:

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

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

MULBYTEPTR[BX]

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

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

指令例子:

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

IMULWORDPTR[SI];

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

注意:MUL/IMUL指令中

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

指令給出)

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

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

?除CF和OF外,對(duì)其它標(biāo)志位無(wú)定義。

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

中,低16位放在AX中。

4、除法指令

進(jìn)行除法時(shí):16位/8位~8位商

32位/16位-*16位商

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

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

字節(jié)除法AXALAH

字除法DX:AXAXDX

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

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

DX中

(1)無(wú)符號(hào)數(shù)除法指令DIV

格式:DIVsrc

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

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

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

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

指令例子:

DIVCL

DIVWORDPTR[BX]

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

格式:IDIVsrc

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

注意:對(duì)于DIV/IDIV指令

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

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

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

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

對(duì)所有條件標(biāo)志位均無(wú)定

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

關(guān)于除法操作中的字長(zhǎng)擴(kuò)展問(wèn)題

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

誤。

?對(duì)于無(wú)符號(hào)數(shù)除法擴(kuò)展,只需將AH或DX清零即可。

?對(duì)有符號(hào)數(shù)而言,則是符號(hào)位的擴(kuò)展。可使用前面介紹過(guò)的符號(hào)擴(kuò)展指令CBW和CWD

字節(jié)擴(kuò)展指令CBW

格式:CBW

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

AH=OFFHo

字?jǐn)U展指令CWD

格式:CWD

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

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論