




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030浴巾市場(chǎng)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2020-2025年企業(yè)人力資源管理師之四級(jí)人力資源管理師高分通關(guān)題庫(kù)A4可打印版
- 學(xué)習(xí)者內(nèi)在動(dòng)力對(duì)教學(xué)質(zhì)量的影響分析
- 2025至2030老年旅游行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2025至2030網(wǎng)上書店行業(yè)市場(chǎng)深度研究與戰(zhàn)略咨詢分析報(bào)告
- 2025至2030移液器尖端行業(yè)市場(chǎng)占有率及有效策略與實(shí)施路徑評(píng)估報(bào)告
- 2025至2030電影后期制作行業(yè)市場(chǎng)深度研究與戰(zhàn)略咨詢分析報(bào)告
- 2025至2030消費(fèi)者車輛遠(yuǎn)程信息處理行業(yè)市場(chǎng)占有率及有效策略與實(shí)施路徑評(píng)估報(bào)告
- 偏科原因課件
- 智能教室的環(huán)保理念與技術(shù)應(yīng)用
- 亞朵酒店施工方案
- 公共管理學(xué):理論、實(shí)踐與方法 課件匯 汪大海 第10-18章 綠色公共管理- 公共管理的變革
- 人工智能賦能教師數(shù)字素養(yǎng)提升
- T-CPPIA 44-2024 流延聚乙烯纏繞膜
- C919機(jī)組培訓(xùn)-導(dǎo)航系統(tǒng)
- 醫(yī)院四懂四會(huì)消防培訓(xùn)
- 保險(xiǎn)投訴處理培訓(xùn)
- 《星級(jí)酒店人力資源管理模式探究:以W酒店為例》12000字(論文)
- 小學(xué)三年級(jí)上冊(cè)數(shù)學(xué)(青島63)63計(jì)算題每日一練(無(wú)答案)
- 教師課堂管理行為多模態(tài)解碼:行為特征、分類識(shí)別與時(shí)序發(fā)展
- 村莊保潔服務(wù)投標(biāo)方案(技術(shù)方案)
評(píng)論
0/150
提交評(píng)論