微機(jī)原理--微機(jī)原理及應(yīng)用(第五版)_第1頁
微機(jī)原理--微機(jī)原理及應(yīng)用(第五版)_第2頁
微機(jī)原理--微機(jī)原理及應(yīng)用(第五版)_第3頁
微機(jī)原理--微機(jī)原理及應(yīng)用(第五版)_第4頁
微機(jī)原理--微機(jī)原理及應(yīng)用(第五版)_第5頁
已閱讀5頁,還剩473頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第一章 微型計(jì)算機(jī)基礎(chǔ)知識(shí) 常用常用數(shù)據(jù)類型數(shù)據(jù)類型數(shù)學(xué)數(shù)學(xué)協(xié)處理器的數(shù)據(jù)格式協(xié)處理器的數(shù)據(jù)格式1.1.1 數(shù)據(jù)在內(nèi)存儲(chǔ)器中的存儲(chǔ)方式字節(jié):8個(gè)二進(jìn)制位.一個(gè)字節(jié)也叫做一個(gè)存儲(chǔ)單元.地址:對(duì)內(nèi)存中存儲(chǔ)單元的編號(hào).從0開始直到CPU能支持的最高地址.字:相鄰兩個(gè)字節(jié)存放一個(gè)數(shù).16位.雙字:相鄰四個(gè)字節(jié)存放一個(gè)數(shù).32位. 多字節(jié)數(shù)據(jù)的存儲(chǔ)采取高位字節(jié)在高地址的原則.數(shù)據(jù)所在地址是低字節(jié)所在的地址.多字節(jié)數(shù)據(jù)的存儲(chǔ)情況例如字1234和雙字3C5D7E9F的存儲(chǔ)地址地址m+2m+1mm -1 1 2 3 4 3 C 5 D 7 E 9 Fm+4m+3m+2m+1mm-1(a) 字的存儲(chǔ)(b) 雙字

2、的存儲(chǔ)1.1.2 數(shù)的進(jìn)位制表示約定 二進(jìn)制:數(shù)的后面加后綴B. 十進(jìn)制:數(shù)的后面加后綴D或不加. 十六進(jìn)制:數(shù)的后面加后綴H. 十六進(jìn)制二進(jìn)制十進(jìn)制十六進(jìn)制二進(jìn)制十進(jìn)制000A101010111B1011112102C1100123113D11011341004E11101451015F1111156110610100001671117111000117810008等等等等等等9100191.1.3 整數(shù)1.無符號(hào)數(shù) 8、16、32位全部用來表示數(shù)值本身。 最低位LSB是0位,最高位MSB是7、15、31。2.帶符號(hào)整數(shù) 1).原碼: 設(shè)X=+1011100B,Y=-1011100B 此時(shí)X

3、和Y被稱為真值. 則X原=01011100,Y原=11011100 而+0原=00000000, -0原=10000000 綜上述X原=X X為正2n-1-X X為負(fù)2).補(bǔ)碼和反碼舉一實(shí)例:3點(diǎn)鐘-7小時(shí)=8時(shí) 3點(diǎn)鐘+5小時(shí)=8時(shí) 即:3-7=3+5 為什么?答:時(shí)鐘是以12為模,5是-7的補(bǔ)碼. 在計(jì)算機(jī)中采用補(bǔ)碼主要原因有二,一是可以將減法變成加法來運(yùn)算.二是補(bǔ)碼的符號(hào)位可以參加運(yùn)算. 計(jì)算機(jī)中是用2n為模為模2補(bǔ)碼.X補(bǔ)補(bǔ)=2n+X若以2n-1為模的補(bǔ)碼稱1補(bǔ)碼-反碼反碼X反反=2n-1+X根據(jù)上面的公式得:X為正時(shí): X反反=X補(bǔ)補(bǔ)=X原原X為負(fù)時(shí):求X補(bǔ)補(bǔ)是將X原原的符號(hào)位不變,

4、其余各位 變反加1. 求X反反是將X原原的符號(hào)位不變,其余各位 變反.補(bǔ)碼沒有+0和-0之分;反碼有+0和-0之分 +0補(bǔ)=00.00=0 -0補(bǔ)=00.00=0 +0反=00.00=0 -0反=00.00=111.11例如:X=+1010011B X反=X補(bǔ)=X原=01010011 X=-1010011B X原=11010011 X補(bǔ)=10101101 X反=101011003).移碼針對(duì)補(bǔ)碼不易比較大小的缺點(diǎn)而出現(xiàn)了移碼 X移= 2n-1 -1+X X-2n-1 且X=2n-12n-1-1為偏移量例如:X=+10010B=+18,Y=-10010B=-18 X移= 26-1 -1+X=01

5、1111+010010=110001B Y移= 26-1 -1+Y=011111-010010=001101B3.帶符號(hào)數(shù)的運(yùn)算 原碼原碼: :類似于正負(fù)數(shù)的筆算 優(yōu)點(diǎn):直觀. 缺點(diǎn):減法過程非常繁鎖. 適用:浮點(diǎn)數(shù)的有效數(shù)字. 二進(jìn)制乘除法. 補(bǔ)碼補(bǔ)碼:優(yōu)點(diǎn):符號(hào)位和數(shù)值一起運(yùn)算; 減法可以變成加法運(yùn)算. 缺點(diǎn):數(shù)值比較大小時(shí)易出錯(cuò). 適用:加減法的運(yùn)算中.運(yùn)算公式:x:x+ +yy補(bǔ)補(bǔ)=x=x補(bǔ)補(bǔ)+ +yy補(bǔ)補(bǔ) 其中:|x|,|y|,|x+y|2n-1 -y補(bǔ)補(bǔ)=y變補(bǔ)變補(bǔ)y變補(bǔ)變補(bǔ)就是將yy補(bǔ)補(bǔ)連同符號(hào)位一起各位變反加1. 反碼反碼: :常用在求反邏輯運(yùn)算中,其它運(yùn)算不用. 移碼移碼:優(yōu)

6、點(diǎn):能很方便的比較出真值的大小. 適用:A/D和D/A轉(zhuǎn)換器的雙極性編碼. 浮點(diǎn)數(shù)的階碼中. .4.無符號(hào)數(shù)運(yùn)算(補(bǔ)碼運(yùn)算) xx補(bǔ)補(bǔ)+ +yy補(bǔ)補(bǔ)= x= x+ +yy補(bǔ)補(bǔ) 其中:x、y及(x+y)=y, x補(bǔ)+-y補(bǔ)最高位有進(jìn)位,結(jié)果為正. x-y補(bǔ)=x-y原 2).若xy, x補(bǔ)+-y補(bǔ)最高位無進(jìn)位,結(jié)果為負(fù).將x-y補(bǔ)再求一次補(bǔ)前邊加上負(fù)號(hào)就得到x-y的真值.例1.1用補(bǔ)碼運(yùn)算:129-79 79-129解: .設(shè)x=129,y=79則 x補(bǔ)=10000001B,y補(bǔ)=01001111B-y補(bǔ)=y變補(bǔ)=10110001Bx-y補(bǔ)=x補(bǔ)+-y補(bǔ)=00110010B 最高位有進(jìn)位,結(jié)果為正

7、x-y補(bǔ)= x-y原=00110010B x-y=50 .設(shè)x=79,y=129則 x補(bǔ)=01001111B,y補(bǔ)=10000001B-y補(bǔ)=y變補(bǔ)=01111111Bx-y補(bǔ)=x補(bǔ)+-y補(bǔ)=11001110B 最高位無進(jìn)位,結(jié)果為負(fù) x-y=-50總結(jié):對(duì)于無符號(hào)數(shù)和有符號(hào)數(shù)的補(bǔ)碼運(yùn)算,計(jì)算機(jī)運(yùn)算的方法都是一樣的.只是結(jié)果判斷正負(fù)的方法不同. 無符號(hào)數(shù). 加法:結(jié)果必為正.只要不溢出(最高位沒有 進(jìn)位)結(jié)果就是正確的. 減法:補(bǔ)碼運(yùn)算結(jié)果有進(jìn)位結(jié)果為正.否 則為負(fù). 有符號(hào)數(shù).加減法結(jié)果看符號(hào)位.是否溢 出用下述方法判別. .5.有符號(hào)數(shù)加減運(yùn)算溢出判別 采用雙高位判別法.在計(jì)算機(jī)內(nèi)設(shè)置兩個(gè)

8、進(jìn)位位分別是: CS:表示符號(hào)位向前進(jìn)位情況.如有進(jìn)位CS=1,否 則CS=0. CP:表示數(shù)值部分最高位向符號(hào)進(jìn)位情況,如有進(jìn)位CP=1, 否則CP=0. 分析: CS CP 溢出情況 0 0 無溢出 0 1 正溢出 1 0 負(fù)溢出 1 1 無溢出例1.2 01011010B +90 + 01101011B +107 11000101B 197 CS =0 CP =1 是正溢出例1.3 10010010B -110補(bǔ) + 10100100B -92補(bǔ) 100110110B CS =1 CP =0 是負(fù)溢出例1.4 00101101B +45 + 00101101B +45 01011010B

9、 +90 CS =0 CP =0 無溢出例1.5 11111110B -2補(bǔ) + 11111110B -2補(bǔ) 111111100B -4補(bǔ) CS =1 CP =1 無溢出例1.6 10001011B -117補(bǔ) + 01111001B +121 100000100B +4 CS =1 CP =1 無溢出,結(jié)果為正 11110100B -12 + 00001001B +9 11111101B -3 CS =0 CP =0 無溢出,結(jié)果為負(fù)6.算術(shù)移位 對(duì)寄存器和存儲(chǔ)器中的數(shù),左移一位,絕對(duì)值增大一倍.右移一位絕對(duì)值減少一半.(只要沒把有效數(shù)值移出).1).對(duì)于正數(shù),左移或右移,空位都補(bǔ)0 例 0

10、0001110B +14 左移一位 00011100B +28 右移一位 00000111B +72).補(bǔ)碼表示的負(fù)數(shù) 左移低位補(bǔ)0,右移高位補(bǔ)1. 例 11110010B -14補(bǔ) 左移一位 11100100B -28補(bǔ) 右移一位 11111001B -7補(bǔ)3).反碼表示的負(fù)數(shù) 左移和右移空位全補(bǔ)1. 例 11110001B -14補(bǔ) 左移一位 11100011B -28補(bǔ) 右移一位 11111000B -7補(bǔ)7.有關(guān)0的問題 原碼和反碼都+0和-0之分,而補(bǔ)碼沒有,補(bǔ)碼中的10000000表示-128(8位機(jī)) 下面用例題說明這一點(diǎn):例1.7 -128補(bǔ)=10000000B,下面運(yùn)算正確

11、-64 11000000B +)-64 + 11000000B -128 110000000B -128補(bǔ)符號(hào)位進(jìn)位丟失 -128 10000000B +)+127 01111111B -1 11111111B -1補(bǔ)例1.8 若誤認(rèn)為-0補(bǔ)=10000000B,運(yùn)算便會(huì)出錯(cuò): -0 10000000 +)+1 + 00000001 +1 10000001 -127補(bǔ)+1出錯(cuò) 1.1.4 字符串 字符串是存儲(chǔ)器中相鄰存儲(chǔ)單元字符序列. 80386對(duì)字符串的操作有:移動(dòng);傳送;比較;查找等. 分類:字節(jié)串;字串;雙字串.1.1.5 位及位串 80 x86CPU都支持位操作.80386/80486

12、有位串操作.位串最長(zhǎng)是232個(gè)位. 位偏移量:一個(gè)位在位串中的地址.由字節(jié)地址和位余數(shù)組成.設(shè)位串是從地址開始存儲(chǔ)的,位偏移量分別為23和-18的位在什么地方? 23/8=27 在第m+2字節(jié)中的第7位. -18/8=36 在第m-3字節(jié)中的第6位. mm-1m+1m+2m-207.1.1.6 BCD碼及ASC碼1.十進(jìn)制數(shù)的二進(jìn)制編碼 1).8421碼 2).2421碼 3).余3碼 見P12表1.42.ASCII碼 1)7位的ASC碼. 2)8位的ASC碼. 見P13表1.53.奇偶校驗(yàn)碼奇校驗(yàn):編碼“1”的個(gè)數(shù)為奇數(shù),校驗(yàn)位置“0” 否則校驗(yàn)位置“1”.缺點(diǎn):雙重差錯(cuò)是無法校驗(yàn)出來的.1

13、.2 數(shù)學(xué)協(xié)處理器的數(shù)據(jù)格式80387支持的數(shù)據(jù)類型數(shù)據(jù)類型二進(jìn)制位數(shù)十進(jìn)制值大致范圍字整數(shù)16-32768到32767短整數(shù)32-2x109到2x109長(zhǎng)整數(shù)64-9x1018到9x1018壓縮BCD80-9999到99.99(18位)短實(shí)數(shù)32-3.39x10-38到3.39x1038長(zhǎng)實(shí)數(shù)64-1.19x10-308到1.19x10308臨時(shí)實(shí)數(shù)80-1.19x10-4932到1.19x1049321.2.1 整型數(shù)80387支持長(zhǎng)整型數(shù),而80386支持字節(jié)整型數(shù). 1.2.2 BCD碼壓縮BCD碼占80位,即10個(gè)字節(jié).能存儲(chǔ)20位BCD數(shù),但在80387中只用了18位BCD數(shù).余下

14、1個(gè)字節(jié)的最高位為符號(hào)位.其余7位不用.m+9 m+8 m+7 m+6 m+5 m+4 m+3 m+2 m+1 m最高位是符號(hào)位7位不用1.2.3 實(shí)型數(shù)任何一個(gè)二進(jìn)制數(shù)可以表示成: N=+S2J 稱為浮點(diǎn)表示法80387規(guī)定:指數(shù)采用移碼表示。短型實(shí)數(shù)階碼占8位;長(zhǎng)型實(shí)數(shù)階碼占11位。臨時(shí)實(shí)數(shù)階碼占15位。短型實(shí)數(shù)和長(zhǎng)型實(shí)數(shù)的尾數(shù)中的1和小數(shù)點(diǎn)均隱藏。臨時(shí)實(shí)數(shù)小數(shù)點(diǎn)前的1不省略。作業(yè):P37 2.5.6.9.10.14 閱讀引論.S指數(shù)有效數(shù)字第二章第二章 微型計(jì)算機(jī)組成及微型計(jì)算機(jī)組成及 微處理器功能結(jié)構(gòu)微處理器功能結(jié)構(gòu) 2.1 2.1 微型計(jì)算機(jī)的組成及工作原理微型計(jì)算機(jī)的組成及工作原理

15、 2.2 8086/80882.2 8086/8088及及8028680286微處理器微處理器 2.3 803862.3 80386微處理器的功能結(jié)構(gòu)微處理器的功能結(jié)構(gòu) 2.4 804862.4 80486微處理器的功能結(jié)構(gòu)微處理器的功能結(jié)構(gòu) 2.5 Pentium2.5 Pentium級(jí)微處理器簡(jiǎn)介級(jí)微處理器簡(jiǎn)介2.1 微型計(jì)算機(jī)的組成及工作原理微型計(jì)算機(jī)的組成:CPU存儲(chǔ)器I./O接口I/O設(shè)備控制總線地址總線數(shù)據(jù)總線2.1.1微處理器(CPU) 組成:控制器;運(yùn)算器;寄存器組成。 控制器是由指令寄存器;指令譯碼器; 控制電路組成。 指令:是一組二進(jìn)制編碼信息,包括操作碼 和操作數(shù)或操作數(shù)

16、地址2.1.2 存儲(chǔ)器 組成:內(nèi)存儲(chǔ)器是由半導(dǎo)體存儲(chǔ)器芯片組成。 讀/寫操作:稱為CPU訪存操作.讀就是取.寫就是 送(存).讀操作原存儲(chǔ)單元內(nèi)容不變,寫 操作原存儲(chǔ)單元內(nèi)容被改寫.2.1.3 輸入/輸出設(shè)備及其接口電路輸入設(shè)備:將程序、原始數(shù)據(jù)及現(xiàn)場(chǎng)信息以計(jì)算機(jī)能 識(shí)別的形式送到計(jì)算機(jī)中,供計(jì)算機(jī)自動(dòng)計(jì) 算或處理。(鍵盤 鼠標(biāo) 數(shù)字化儀 掃描儀 A/D等)輸出設(shè)備:將計(jì)算機(jī)處理的結(jié)果以人能識(shí)別的形式輸 出來。(顯示器 打印機(jī) 繪圖儀 D/A等)外部存儲(chǔ)器:軟.硬磁盤即是輸入設(shè)備也是輸出設(shè)備. 只讀光盤是輸入設(shè)備.接口電路:是CPU與I/O設(shè)備聯(lián)系的必經(jīng)之路.起信息統(tǒng) 一和聯(lián)系作用.2.1.4

17、 總線 總線是具有邏輯控制功能的信號(hào)線.1.數(shù)據(jù)總線(DB): 在CPU,內(nèi)存和接口之間傳遞指令和數(shù)據(jù).是雙向的.總線寬度(總線中信號(hào)線的條數(shù))有8位、16位、32位、64位。2.地址總線(AB): 用于傳送CPU要訪問的存儲(chǔ)單元或I/O接口的地址號(hào).是單向的。3.控制總線(CB): 用于CPU向其它部件傳送控制信號(hào),其它部件向CPU傳送狀態(tài)信號(hào)及請(qǐng)求信號(hào)。2.1.5 微型計(jì)算機(jī)整機(jī)工作原理簡(jiǎn)述人 程序 計(jì)算機(jī)的內(nèi)存 指令指針控制部件 譯碼器 指令隊(duì)列 經(jīng)DB各執(zhí)行部件 結(jié)果輸出轉(zhuǎn)移指令修改指令指針.2.2 8086/8088及80286微處理器的功能結(jié)構(gòu) 屬Intel公司生產(chǎn)的第三代16位微

18、處理器.新增功能:總線加寬一倍,增加了流水執(zhí)行部 件和總線接口分為兩個(gè)獨(dú)立部件. 并行工作.取指令譯碼取數(shù)據(jù)執(zhí)行 存儲(chǔ)結(jié)果 重復(fù)前面操作.取指令1 取指令2 取數(shù)據(jù)1取指令3存儲(chǔ)結(jié)果1 取指令4譯碼1執(zhí)行1譯碼2執(zhí)行22.2.1 8086/8088CPU的功能結(jié)構(gòu)1.8086/8088CPU的內(nèi)部結(jié)構(gòu)寄存器陣列ALU及標(biāo)志寄存器控制電路指令譯碼器段寄存器及指令指針地址加法器總線控制電路指令流隊(duì)列2.指令流隊(duì)列 是一個(gè)先進(jìn)先出的棧,6/4個(gè)指令字節(jié).總線周期:CPU訪問一次存儲(chǔ)器或I/O端口所需時(shí)間.3.存儲(chǔ)器的分段結(jié)構(gòu)和物理地址的形成 物理地址:每個(gè)存儲(chǔ)單元的實(shí)際地址編碼. 8086/8088

19、 20位地址總線 1MB空間 分段結(jié)構(gòu):1MB可分若干段,大小根據(jù)需要而定.每段不超過64KB 段首地址:段的啟始地址稱段首地址,要求低4位為0. 段基址:段首地址的高16位. 地址偏移量:段內(nèi)相對(duì)于段首址的地址.內(nèi)存儲(chǔ)器單元地址的兩種表示方法: 邏輯地址 段基址段基址:偏移量偏移量 物理地址 物理地址物理地址=段基址段基址x10H+偏移量偏移量2.2.2 80286的功能結(jié)構(gòu)1.CPU主要性能:集成了13.5萬只晶體管;68個(gè)引腳;四列直插式封裝;地址/數(shù)據(jù)總線分開(16位數(shù)據(jù)線,24位地址線);時(shí)鐘頻率為8MHz10MHz;增加存儲(chǔ)器管理和保護(hù)機(jī)構(gòu). 工作方式:1)實(shí)地址方式. 2)虛地址

20、方式. 配80287數(shù)學(xué)協(xié)處理器.2.80286CPU的內(nèi)部結(jié)構(gòu) 地址部件地址部件物理地址發(fā)生器段寄存器段描述符Cache指令譯碼器已譯碼指令隊(duì)列通用寄存器ALU及標(biāo)志寄存器控制總線接口 預(yù)取器預(yù)取隊(duì)列1).總線接口部件BIU: 負(fù)責(zé)處理CPU和系統(tǒng)總線之間的所有通信和數(shù) 據(jù)傳輸.2).指令部件IU: 從預(yù)取隊(duì)列取出指令字節(jié)到指令譯碼器,譯成 69位內(nèi)部碼送已譯碼指令隊(duì)列.3).執(zhí)行部件EU: 由ALU;FR;控制電路組成.完成指令的執(zhí)行操作.4).地址部件AU: 實(shí)地址方式:與8086一樣. 保護(hù)方式:AU必須做許可性檢查和當(dāng)前任務(wù)的段 限制檢查.2.32.3 8038680386微處理器的

21、功能結(jié)構(gòu)微處理器的功能結(jié)構(gòu) 主要性能指標(biāo): 32位;132條引腳;網(wǎng)絡(luò)陣列式封裝;32條地址線;12.5MHz及16MHz. 具有段頁式存儲(chǔ)器管理部件,4級(jí)保護(hù)機(jī)構(gòu). 有兩種芯片:80386SX(準(zhǔn)32位機(jī))和80386DX. 工作方式: 1).實(shí)地址方式 2).虛地址保護(hù)方式:每段長(zhǎng)4GB;可尋實(shí)地址4GB;尋虛地址64TB最多可用16K個(gè)段. 3).虛擬8086方式:實(shí)地址方式的同時(shí),利用虛擬保護(hù)機(jī)構(gòu)運(yùn)行多用戶操作系統(tǒng)及程序.2.3.1 80386CPU的功能結(jié)構(gòu) 分段部件分段部件 分頁部件分頁部件 總線接總線接口部件口部件三輸入加法器描述符高速緩沖存儲(chǔ)器界限和屬性PLA加法器頁高速緩沖存

22、儲(chǔ)器控制和屬性PLA地址驅(qū)動(dòng)器流水線總線寬度控制收發(fā)器桶形移位器ALU乘/除硬件寄存器組指令譯碼器已譯碼指令隊(duì)列預(yù)取器/校驗(yàn)器16字節(jié)預(yù)取隊(duì)列譯碼和定序控制ROM保護(hù)檢測(cè)部件請(qǐng)求判優(yōu)器1.總線接口部件 主要用于將CPU與外部總線連接起來.CPU內(nèi)部的其它部件都能與BIU直接通信,并將它們的總線請(qǐng)求傳給BIU.2.指令預(yù)取部件 當(dāng)BIU空閑時(shí),預(yù)取隊(duì)列有空單元或有轉(zhuǎn)移時(shí),便通過分頁部件向BIU發(fā)指令預(yù)取請(qǐng)求.3.指令譯碼部件 從指令預(yù)取隊(duì)列中取出指令碼譯成內(nèi)碼送已譯碼指令隊(duì)列. 以上三部分構(gòu)成了指令流水線. 4.執(zhí)行部件 從已譯碼隊(duì)列取來內(nèi)碼變成一系列控制信息發(fā)向其它部件完成指令的執(zhí)行.5.分段

23、部件 將邏輯地址轉(zhuǎn)換成線性地址.送分頁部件.6.分頁部件 在操作系統(tǒng)軟件的控制下,若分頁部件處于允許狀態(tài),便將分段部件或代碼預(yù)取部件產(chǎn)生的線性地址轉(zhuǎn)換成物理地址. 分段部件,分頁部件和BIU構(gòu)成地址流水線2.3.2 80386CPU的寄存器1.通用寄存器:(共4個(gè))主要用來存放操作數(shù)或操作數(shù)地址的。 2.變址寄存器(共2個(gè)) 源變址源變址3.指針寄存器(共3個(gè))堆棧:是一組寄存器或一個(gè)存儲(chǔ)區(qū).堆棧的用途:在調(diào)用子程序或中斷時(shí)存放斷 點(diǎn)數(shù)據(jù)的.主程序調(diào)用子程序1調(diào)用子程序1子程序1調(diào)用子程序2.返回子程序2.返回堆棧的工作原理: 存儲(chǔ)器高地址存儲(chǔ)器低地址4.段寄存器段描述符寄存器 段寄存器:(共

24、6個(gè),16位) 數(shù)據(jù)段寄存器DS:存放數(shù)據(jù)段的段基址. 堆棧段寄存器SS:存放堆棧段的段基址. 代碼段寄存器CS:存放代碼段的段基址. 附加段寄存器ES;FS;GS:存放當(dāng)前附加段 段基址. 段描述符寄存器:64位,一個(gè)段選擇器對(duì)應(yīng)一個(gè)段描述符寄存器.32位段基址 20位段限12位其它屬性5.標(biāo)志寄存器EFLAGS(32位)3103002902802702602502402302202001901801515050301).狀態(tài)標(biāo)志:保存ALU運(yùn)算結(jié)果的特殊信息. CF:有進(jìn)位(借位)置“1”,否則置“0”. PF:算術(shù)邏輯運(yùn)算結(jié)果低8位中“1”的個(gè)數(shù)為偶置“1”,否則置“0”. AF:ALU

25、加法運(yùn)算時(shí)結(jié)果的第3位向第4位有進(jìn)位(借位)置“1”,否則置“0”. ZF:ALU的結(jié)果為全零置“1”,否則置“0”. SF:ALU的結(jié)果最高位是“1”,表示負(fù)數(shù)置“1”,否則置“0”. OF:有符號(hào)加(減)結(jié)果產(chǎn)生溢出時(shí)置“1”,否則置“0”.CsCp=1時(shí)溢出.判別兩個(gè)帶符號(hào)數(shù)a與b的大小(a-b)OF SF=1說明ab 否則說明ab以上6個(gè)標(biāo)志位與8086/8088 80286完全兼容.CF;ZF;SF;OF支持8位;16位;32位運(yùn)算.PF:只反映低8位中“1”的個(gè)數(shù).AF:只反映第3位向第4位進(jìn)位或借位情況.2).控制標(biāo)志:(共7個(gè))可用程序來置位或清零, 具有一定的控制能力 TF:

26、陷阱標(biāo)志(單步操作標(biāo)志)TF=1時(shí),CPU每執(zhí)行完一條指令,就去執(zhí)行服務(wù)程序,向用戶提供各寄存器狀況等.用于程序調(diào)試. IF:中斷允許標(biāo)志,IF=1時(shí)可接受并響應(yīng)可屏蔽中斷. DF:方向標(biāo)志,指定字符串處理指令的步進(jìn)方向.DF=1時(shí)是減地址,DF=0時(shí)是增地址. 以上3個(gè)標(biāo)志位與8086/8088 80286兼容. IOPL:輸入/輸出特權(quán)級(jí)標(biāo)志,有四種狀態(tài). 00最高特權(quán);11最低特權(quán).當(dāng)前特權(quán)級(jí)高于或等于IOPL所表示的特權(quán)級(jí)I/O指令可以執(zhí)行.否則產(chǎn)生一個(gè)保護(hù)異常. NT:嵌套任務(wù)標(biāo)志,用于控制返回指令的運(yùn)行.NT=1當(dāng)前任務(wù)正嵌套在另一任務(wù)之中.返回操作通過任務(wù)切換來執(zhí)行.即不同任務(wù)之

27、間的返回.NT=0時(shí)是同一任務(wù)的返回. 以上兩個(gè)標(biāo)志只在保護(hù)方式有效,8086仿真方式(實(shí)方式)下無效. RF:重新啟動(dòng)標(biāo)志(調(diào)整恢復(fù)標(biāo)志) RF=0時(shí),調(diào)試故障被接受并應(yīng)答. RF=1時(shí),調(diào)試故障被忽略. VM:虛擬8086方式標(biāo)志,VM=1時(shí)CPU在虛擬8086方式下運(yùn)行,VM=0時(shí)CPU在一般方式下運(yùn)行. 以上兩個(gè)標(biāo)志是80386新增的控制標(biāo)志.6.控制寄存器(4個(gè)32位)CR0:PG 保留 機(jī)器狀態(tài)字ETTSEMMPPE1).PE:允許保護(hù)標(biāo)志,用于CPU是否進(jìn)入保護(hù)方式,PE=1進(jìn)入保護(hù)方式.若想解除,只有通過系統(tǒng)復(fù)位重新啟動(dòng).系統(tǒng)默認(rèn)是實(shí)地址方式.2).MP:監(jiān)控?cái)?shù)學(xué)協(xié)處理器擴(kuò)充標(biāo)

28、志,用來表示協(xié)處理器是否存在.MP=1時(shí)表示協(xié)處理器存在.MP=0時(shí)協(xié)處理器不存在.3).EM:仿真協(xié)處理器擴(kuò)充標(biāo)志,用來表示是否用軟件來仿真數(shù)學(xué)協(xié)處理器.EM=1時(shí)表示采用軟件仿真數(shù)學(xué)協(xié)處理器的功能.4).TS:任務(wù)轉(zhuǎn)換標(biāo)志,由硬件置位,由軟件復(fù)位.當(dāng)一個(gè)任務(wù)轉(zhuǎn)換完成后,TS自動(dòng)置“1”.下一條企圖使用數(shù)學(xué)協(xié)處理器的指令將產(chǎn)生一個(gè)“無數(shù)學(xué)協(xié)處理器”的異常. 以上4個(gè)系統(tǒng)標(biāo)志與80286兼容.5).ET:擴(kuò)充類型標(biāo)志,表示系統(tǒng)中所使用的 數(shù)學(xué)協(xié)處理器的類型.ET=1時(shí)表示系 統(tǒng)內(nèi)使用的是80387.否則表示系統(tǒng) 使用的是80287或沒有協(xié)處理器.當(dāng) EM=1時(shí),ET無效.6).PG:允許分頁標(biāo)

29、志,表示CPU是否允許對(duì) 存儲(chǔ)器線性地址進(jìn)行分頁.并進(jìn)行物 理地址轉(zhuǎn)換.PG=1時(shí)允許分頁,分頁 部件將線性地址轉(zhuǎn)換成物理址.PG=0 時(shí)禁止分頁,線性地址直接當(dāng)作物理 地址.CR1:是未定義的控制寄存器,待CPU升級(jí)時(shí) 用.CR2:頁故障線性地址寄存器,保存最后出現(xiàn) 頁故障的全32位線性地址,以便當(dāng)產(chǎn)生 頁故障時(shí)用來報(bào)告錯(cuò)誤信息.CR3:頁目錄基址寄存器,保存頁目錄表的物 理基地址.7.系統(tǒng)地址寄存器:(共4個(gè))47 3247 32位線性基地址位線性基地址 16 15 16 15 界限界限 0 0選擇符選擇符選擇符選擇符1).GDTR:全局描述符表寄存器.48位.保存全局描述符表的32位線性

30、基地址和16位界限.2).IDTR:中斷描述符表寄存器.48位.保存中斷描述符表的32位線性基地址和16位界限.3).LDTR:局部描述符表寄存器.16位.保存當(dāng)前任務(wù)的局部描述符表的16位選擇符.4).TR:任務(wù)狀態(tài)寄存器.16位.保存當(dāng)前任務(wù)的任務(wù)狀態(tài)段的16位選擇符.8.調(diào)試寄存器(共8個(gè),32位) 線性斷點(diǎn)地址0線性斷點(diǎn)地址1線性斷點(diǎn)地址2線性斷點(diǎn)地址3保留保留斷點(diǎn)狀態(tài)斷點(diǎn)控制9.測(cè)試寄存器(共2個(gè).32位) TR6:測(cè)試命令寄存器.存放命令. TR7:數(shù)據(jù)寄存器.保存對(duì)旁視緩沖器測(cè)試時(shí)的狀態(tài)數(shù)據(jù). 程序員可在芯片加電后,測(cè)試分頁部件中轉(zhuǎn)換旁視緩沖器TLB的操作是否正確.2.4 804

31、862.4 80486微處理器的功能結(jié)構(gòu)微處理器的功能結(jié)構(gòu) 主要性能指標(biāo): 32位;120萬個(gè)晶體管;168條引線;網(wǎng)絡(luò)陣列式封裝;32條地址線;尋址4GB實(shí);64TB虛;25MHz和33MHz;80486DX達(dá)50MHz60MHz.CPU,協(xié)處理器及cache集成在一個(gè)芯片上,工作速度加快.還具有外部高速緩沖存儲(chǔ)器.9個(gè)處理部件,并行流水,對(duì)大多數(shù)指令以一個(gè)時(shí)鐘周期一條指令的速度持續(xù)執(zhí)行.高緩存控制器8KCache轉(zhuǎn)換監(jiān)視緩沖頁轉(zhuǎn)換器段寄存段描高緩存儲(chǔ)段轉(zhuǎn)換通寄存桶形移ALU乘除法預(yù)取預(yù)取隊(duì)列指令譯碼控制保測(cè)部件浮點(diǎn)控制浮寄和堆總線接口總線控制寫緩沖器整數(shù)部件分段部件分頁部件Cache部件預(yù)

32、取部件指令譯碼部件控制部件浮點(diǎn)部件總線接口部件地址總線數(shù)據(jù)總線硬件的微指令指令字80486CPU框圖2.4.1 總線接口部件 負(fù)責(zé)與處理器外部總線的連接。 與80386不同的是BIU只與Cache和指令預(yù)取部件交換數(shù)據(jù)。其它訪存請(qǐng)求都要經(jīng)過Cache。2.4.2 高速緩沖存儲(chǔ)部件 用于管理芯片上8KB高速緩沖RAM.所有總線請(qǐng)求先到這里.如命中,則不產(chǎn)生總線周期.如未命中,BIU一次從內(nèi)存取16B送高速緩存-行填充. 寫通:在高緩中找到目標(biāo)修改寫回存儲(chǔ)器.2.4.3 代碼預(yù)取部件 只要總線空閑時(shí),預(yù)取部件向BIU發(fā)請(qǐng)求.一次取16B的代碼送32B的預(yù)取隊(duì)列. 如Cache能命中,則不產(chǎn)生總線周

33、期. 當(dāng)遇到轉(zhuǎn)移,中斷,子程序調(diào)用時(shí)預(yù)取隊(duì)列清空.2.4.4 指令譯碼部件 從預(yù)取隊(duì)列取機(jī)器碼轉(zhuǎn)換成各處理部件的控制信號(hào).譯碼分兩步:取操作數(shù)和譯碼同時(shí)進(jìn)行.沒有已譯碼隊(duì)列.2.4.5 控制部件 對(duì)整數(shù)部件,浮點(diǎn)部件和分段部件進(jìn)行控制.使它們完成已譯碼指令的執(zhí)行.2.4.6 整數(shù)部件 完成整數(shù)的傳輸,加,減運(yùn)算和邏輯運(yùn)算. 有4個(gè)32位通用寄存器;2個(gè)32位變址寄存器;2個(gè)32位指針寄存器;64位桶形移位器;ALU;EFLAGS.2.4.7 分段部件和分頁部件 一起構(gòu)成存儲(chǔ)器管理. 分頁部件:完成虛擬存儲(chǔ)器管理,將線性地址轉(zhuǎn)換成物理地址. 分段部件:將部件邏輯地址轉(zhuǎn)換成線性地址.并用高速緩存提

34、高速度.2.4.8 浮點(diǎn)部件 與外部協(xié)處理器的功能完全一樣. 80486SX需配80487SX等效80486DX.2.5 Pentium級(jí)微處理器簡(jiǎn)介2.5.1 Pentium微處理器 第5代微處理器.1993年Intel公司推出. 0.35um工藝;金屬配線;雙級(jí)CMOS技術(shù);310萬個(gè)晶體管;數(shù)據(jù)總線64位;地址總線36位;60MHz-66MHz目前已有133MHz-166MHz; 超標(biāo)量流水技術(shù),多個(gè)執(zhí)行單元,一個(gè)指令周期內(nèi)執(zhí)行多條指令.兩條超標(biāo)量流水線U和V,各自有地址生成邏輯,算術(shù)邏輯部件及數(shù)據(jù)高速緩存.(V流水不能執(zhí)行浮點(diǎn))2.5.2 Pentium Pro微處理器 1996年推出

35、;0.35um工藝;4層金屬配線;CMOS技術(shù);5.5百萬個(gè)晶體管;3條超標(biāo)量流水線;3個(gè)并行譯碼器;5個(gè)執(zhí)行單元;2個(gè)一級(jí)8KB高速緩沖存儲(chǔ)器(數(shù)據(jù)和指令各一個(gè));200MHz-250MHz;1個(gè)二及高速緩沖存儲(chǔ)器(界于一級(jí)高緩和內(nèi)存之間);8個(gè)整數(shù)通用寄存器;8個(gè)浮點(diǎn)數(shù)通用寄存器;還增加了40個(gè)通用寄存器.2.5.3 MMX Pentium微處理器(多能奔騰) 芯片管腳與Pentium相兼容.增加視頻信號(hào),音頻信號(hào)的處理功能和速度.內(nèi)部高緩比Pentium增加一倍.指令和數(shù)據(jù)高緩都是16KB的.適用于便攜式電腦.2.5.4 Pentium II微處理器 第6代微處理器.1997年推出.26

36、6MHz451MHz;功耗低;廣泛用于商業(yè)領(lǐng)域. 作業(yè):P69 1、3、4、5、6、11 第三章 80X86尋址方式與指令系統(tǒng) 3.1 計(jì)算機(jī)指令格式 3.2 指令長(zhǎng)度與字長(zhǎng)的關(guān)系 3.3 80 x86指令尋址方式 3.4 8086/8088指令系統(tǒng) 3.5 80 x86尋址方式及新增指令3.1 計(jì)算機(jī)指令格式1.零地址指令 格式: 指令中只給出操作碼,沒有顯地址.有幾種可能: 1).無操作數(shù)的指令.(空操作;CPU控制) 2).操作數(shù)是隱含約定的.(棧操作;串操 作;累加器操作)OP2.一地址指令 格式: 一地址指令有兩種常見的形態(tài),根據(jù)操作碼含義確定它是哪一種. 1).只有目的操作數(shù)的單操

37、作數(shù)指令(加1;減1;取補(bǔ);取反) 2).隱含約定目的地址的雙操作數(shù)指令(乘;除等) OPD3.二地址指令格式:功能:(D1)OP(D2) D1二地址指令是最常用的.4.三地址指令格式:功能(D2)OP(D3) D1OPD1D2OPD1D2D33.2 指令長(zhǎng)度與字長(zhǎng)的關(guān)系 指令位數(shù)多,信息多,功能強(qiáng).但存儲(chǔ)空間大,取指時(shí)間長(zhǎng).所以目前都采用變字長(zhǎng)指令格式.能短則短,需長(zhǎng)則長(zhǎng).8086/8088變字長(zhǎng)指令格式:指令長(zhǎng)16個(gè)字節(jié).80286指令長(zhǎng):1 10字節(jié).80386指令長(zhǎng):1 15字節(jié).操作碼尋址方式與寄存器號(hào)位移量/立即數(shù)位移量/立即數(shù)立即數(shù)立即數(shù)3.3 80 x86指令(編碼)格式與尋址

38、方式3.3.1 8086/8088/80286指令編碼格式opcodemod reg r/mdispdata 8086/8088不同字長(zhǎng)的指令格式類型如下:opcodeopcode mod opcode mod data/dispopcode mod data/disp(低) data/disp(高)opcode mod disp(低) disp(高) data opcode mod disp (低) disp (高) data (低) data (高) 操作碼和尋址方式字節(jié)格式如下: D W mod reg r/mD7 D6 D5 D4 D3 D2 D1 D0D7 D6 D5 D4 D3 D

39、2 D1 D0 1.操作碼字節(jié):W=0 操作數(shù)均是8位,字節(jié)操作.W=1 操作數(shù)均是16位,字操作. D=0 reg域指定源操作數(shù).D=1 reg域指定目的操作數(shù).2.尋址方式字節(jié):指出第二操作數(shù)的存放地址, 尋求EA的方法.reg域:確定一個(gè)寄存器.(3位)regW=1W=0000AXAL001CXCL010DXDL011BXBL100SPAH101BPCH110SIDH111DIBHMod域:說明是寄存器尋址還是存儲(chǔ)器尋址.mod方 式00存儲(chǔ)器尋址,沒有位移量01存儲(chǔ)器尋址,有8位位移量10存儲(chǔ)器尋址,有16位位移量11寄存器尋址,沒有位移量r/m域:mod=11時(shí)是寄存器尋址,指出第二

40、操 作數(shù)所在的寄存器號(hào). mod=00、01、10時(shí)是存儲(chǔ)器尋址,指 出如何求得操作數(shù)的有效地址。modr/m存儲(chǔ)器尋址寄存器尋址邏輯地址的計(jì)算公式W=0W=1mod=00mod=01mod=10mod=11000DS:BX+SI DS:BX+SI+disp8DS:BX+SI+disp16ALAX001DS:BX+DI DS:BX+DI+disp8DS:BX+DI+disp16CLCX010SS:BP+SI SS:BP+SI+disp8SS:BP+SI+disp16DLDX011SS:BP+DI SS:BP+DI+disp8SS:BP+DI+disp16BLBX100DS:SIDS:SI+di

41、sp8DS:SI+disp16AHSP101DS:DIDS:DI+disp8DS:DI+disp16CHBP110DS:disp16 SS:BP+disp8SS:BP+disp16DHSI111DS:BXDS:BX+disp8DS:BX+disp16BHDImod與r/m域所組合的尋址方式例3.1 寫出指令 MOV BX+DI-6,CL 的機(jī)器 語言編碼MOV指令操作碼:100010D:0(源操作數(shù)) W:0(8位,字節(jié)操作)reg:001(CL) mod:01 r/m:001 disp8:-6的補(bǔ)碼為11111010指令編碼:10001000 01 001 001 11111010寫成十六進(jìn)

42、制:88H、49H、FAH例3.2 寫出 MOV AH,BX+DI+50H 的機(jī)器語 言編碼.MOV的操作碼:100010 D:1 W:0mod:01 reg:100 r/m:001指令編碼:10001010 01 100 001 01010000寫成十六進(jìn)制:8AH、61H、50H例3.3 寫出 ADD AX,BX+DI+0826H 的機(jī)器語 言編碼. 00000011 10 000 001 0010011000001000 寫成十六進(jìn)制:03H、81H、26H、08H3.3.2 8086/8088的尋址方式操作數(shù)存在的地方有:寄存器;存儲(chǔ)器;指令字 節(jié)中;I/O端口.目的操作數(shù):用指令的執(zhí)

43、行結(jié)果替換掉的操作數(shù).源操作數(shù):指令執(zhí)行過程中保持原值不變.1.操作數(shù)的尋址方式 8086/8088有7種尋址方式. 1).立即數(shù)尋址方式 操作數(shù)(8位或16位)是指令碼中的組成部分.例:MOV AL,80H立即數(shù):只能是源操作數(shù); 只能是整數(shù)或字符,若是字符加引號(hào); 16進(jìn)制的立即數(shù)以字母開頭時(shí)前邊要 加“0”.且低8位跟在操作碼后面,高8位 在其后.例如:MOV CX,0B3CAH MOV AL,25 MOV BX,“AB” MOV AH,C2).寄存器尋址方式 操作數(shù)存放在CPU內(nèi)的通用寄存器或段寄存器中.在指令中給出寄存器的地址(寄存器的名字)例如:INC CX MOV AX,CX M

44、OV DS,AX3).直接尋址方式 操作數(shù)存放在存儲(chǔ)單元中,該單元的有效地址在指令中直接給出.不特指,默認(rèn)段寄存器是DS.例如:MOV AL,1064H源操作數(shù)的物理地址(DS)10H+1064H數(shù)據(jù)段YY代碼段操作碼64H10HAXIPCSDSm m m mn nn nh hh hnnnn0 + mmmm ppppm ppppm ppppm+1 ppppm+2 hhhh0 + 1064 gggg4 gggg4 注:符號(hào)地址和數(shù)值地址問題4).寄存器間接尋址方式 操作數(shù)存放在存儲(chǔ)單元中,該單元的有效地址存放在指令中的寄存器(BX;BP或SI;DI)里.用BP間址隱含段寄存器是SS. 例如:MO

45、V CH,SI MOV AX,BX5).寄存器相對(duì)尋址 操作數(shù)存放在存儲(chǔ)單元中,該單元的在效地址等于指令中給出的基址或變址寄存器的內(nèi)容和一個(gè)帶符號(hào)的8位或16位的位移量之和. 用BP間址隱含段寄存器是SS. 例如:MOV AX,BX+1234H MOV AL,BP-10H 6).基址加變址尋址方式 操作數(shù)存放在存儲(chǔ)單元中,該單元的有效地 址等于基址寄存器的內(nèi)容加變址寄存器的內(nèi) 容. BP間址隱含段寄存器是SS. EA=(BX)/(BP)+(SI)/(DI) 例如:MOV AX,BX+SI MOV AX,BP+SI MOV ES:BX+DI,AX7).相對(duì)的基址和變址尋址方式 操作數(shù)存放在存儲(chǔ)單

46、元中,該單元的有效地址等于基址寄存器的內(nèi)容加變址寄存器的內(nèi)容再加上指令中給出的8位或16位位移量. BP間址隱含段寄存器是SS.EA=(BX)/(BP)+(SI)/(DI)+disp8/disp16 例如:AND DL,BX+SI+20H MOV SS:BX+SI+100H,BX若I/O端口不是與內(nèi)存統(tǒng)一編址,I/O端口有兩種尋址方式1).直接端口尋址方式 指令中直接給出由8位地址碼表示的端口 地址號(hào). 例如:IN AL,21H2).間接端口尋址方式 端口地址用16位表示,并固定存儲(chǔ)在DX寄 存器中. 例如:OUT DX,AL2.程序轉(zhuǎn)移地址的尋址方式1). .段內(nèi)直接(相對(duì))尋址方式 轉(zhuǎn)移的

47、地址是當(dāng)前的IP內(nèi)容和指令規(guī)定 的8位或16位位移量之和. 8位是短程轉(zhuǎn)移;16位是近程轉(zhuǎn)移.2).段內(nèi)間接尋址方式 轉(zhuǎn)移的地址存放在寄存器或存儲(chǔ)單元中. 用它來更新IP的內(nèi)容.3).段間直接尋址方式作業(yè):P118 13.4 8086/8088指令系統(tǒng)學(xué)習(xí)指令的注意事項(xiàng) 指令的功能該指令能夠?qū)崿F(xiàn)何種操作。通常指令助記符就是指令功能的英文單詞或其縮寫形式 指令支持的尋址方式該指令中的操作數(shù)可以采用何種尋址方式 指令對(duì)標(biāo)志的影響該指令執(zhí)行后是否對(duì)各個(gè)標(biāo)志位有影響,以及如何影響 其他方面該指令其他需要特別注意的地方,如指令執(zhí)行時(shí)的約定設(shè)置、必須預(yù)置的參數(shù)、隱含使用的寄存器等3.4.1 數(shù)據(jù)傳送類指令

48、 數(shù)據(jù)傳送是計(jì)算機(jī)中最基本、最重要的一種操作 傳送指令也是最常使用的一類指令 傳送指令把數(shù)據(jù)從一個(gè)位置傳送到另一個(gè)位置 除標(biāo)志寄存器傳送指令外,均不影響標(biāo)志位 重點(diǎn)掌握MOV XCHG XLAT PUSH POP LEA1.通用數(shù)據(jù)傳送指令 1).基本傳送指令MOV格式:MOV DEST,SRC功能:DEST (SRC) 即將源地址的內(nèi)容(源操作數(shù))傳送到目的地址中.傳送指令執(zhí)行完后源操作數(shù)保持不變. 說明:1)標(biāo)志寄存器內(nèi)容不變. 2)兩操作數(shù)位數(shù)應(yīng)相同.(字節(jié)或字) 3)其它規(guī)則見下圖. MOV指令的傳送規(guī)定段寄存器DS ES SSCS立即數(shù)通用寄存器存儲(chǔ)器非法傳送種種 兩個(gè)操作數(shù)的類型不

49、一致例如源操作數(shù)是字節(jié),而目的操作數(shù)是字;或相反 兩個(gè)操作數(shù)不能都是存儲(chǔ)器傳送指令很靈活,但主存之間的直接傳送卻不允許 段寄存器的操作有一些限制段寄存器屬專用寄存器,對(duì)他們的操作能力有限2).堆棧操作指令壓棧:用壓棧指令PUSH可以將通用寄存器、 段寄存器或字存儲(chǔ)單元內(nèi)容壓入堆棧。例如:PUSH AX ;將AX內(nèi)容送入棧頂字單元中壓棧指令執(zhí)行分兩步進(jìn)行:.(SP)-2 SP;.操作數(shù) SP;后SPAH ALXXXXSP內(nèi)存SS增地址方向出棧:用彈出指令POP可以將當(dāng)前棧頂字單元內(nèi)容取出送到通用寄存器、段寄存器或字存儲(chǔ)單元中。例如:POP AX ;將棧頂字單元內(nèi)容送到AX中出棧指令分兩步進(jìn)行:.

50、(SP) 寄存器/字單元.(SP)+2 SP內(nèi)存SSSP后SP增地址方向XXXXAH ALXXXX3).交換指令指令格式:XCHG DEST, SRC功能:(DEST) (SEC),即將源地址的內(nèi)容(源操作數(shù))與目的地址的內(nèi)容(目的操作數(shù))相互交換. 說明:1).標(biāo)志寄存器內(nèi)容不變. 2).所交換的數(shù)據(jù)可以是字節(jié)或字. 3).數(shù)據(jù)交換只能在通用寄存器之間或通用寄存器存儲(chǔ)單元之間進(jìn)行.AX BX CX DXSI DI BP SP 存儲(chǔ)器2.累加器專用傳送指令1) 輸入指令 直接尋址:0255個(gè)端口地址號(hào). 格式:IN AX,port IN AL,port 功能:將來自端口地址號(hào)是port的數(shù)據(jù)送

51、 到累加器中. 間接尋址:可尋64K個(gè)端口地址號(hào). 格式:IN AX,DX IN AL,DX 功能:將來自DX內(nèi)的端口地址號(hào)的數(shù)據(jù)送到累 加器中. 2) 輸出指令 直接尋址: 0255個(gè)端口地址號(hào). 格式:OUT port,AX OUT port,AL 功能:將累加器的內(nèi)容送到port端口地址. 間接尋址:可以64K個(gè)端口地址號(hào). 格式:OUT DX,AX OUT DX,AL 功能:將累加器的內(nèi)容送到DX所指的端口 地址.說明:輸入輸出指令都不改變標(biāo)志寄存器. 換碼指令執(zhí)行前:在主存建立一個(gè)字節(jié)量表格,內(nèi)含要轉(zhuǎn)換成的目的代碼表格首地址存放于BX,AL存放相對(duì)表格首地址的位移量 換碼指令執(zhí)行后:

52、將AL寄存器的內(nèi)容轉(zhuǎn)換為目標(biāo)代碼3). 換碼指令XLAT 將BX指定的緩沖區(qū)中、AL指定的位移處的一個(gè)字節(jié)數(shù)據(jù)取出賦給ALXLATXLAT;alds:bx+alalds:bx+al例例 代碼轉(zhuǎn)換代碼轉(zhuǎn)換mov bx,100hmov al,03hxlat 換碼指令沒有顯式的操作數(shù),但使用換碼指令沒有顯式的操作數(shù),但使用了了BX和和AL;因?yàn)閾Q碼指令使用了隱含;因?yàn)閾Q碼指令使用了隱含尋址方式尋址方式采用默認(rèn)操作數(shù)采用默認(rèn)操作數(shù)3.地址傳送指令1).取有效地址指令 格式:LEA REG,MEM 功能:取源操作數(shù)(變量、標(biāo)號(hào)、地址表達(dá) 式)地址的EA送目的操作數(shù)地址(通用 寄存器). 說明:該指令不改

53、變標(biāo)志寄存器. 例如:LEA AX,DI+10 設(shè)(DI)=0500H 該指令執(zhí)行后 (AX)=050AH2).地址指針裝入DS指令 格式:LDS REG,MEM 功能:將源操作數(shù)有效地址所對(duì)應(yīng)的雙字長(zhǎng) 的內(nèi)存單元中的高字內(nèi)容送入DS,低 字內(nèi)容送入指令中指定的寄存器.3).地址指針裝入ES指令 格式:LES REG,MEM 功能:將源操作數(shù)有效地址所對(duì)應(yīng)的雙字長(zhǎng) 的內(nèi)存單元中的高字內(nèi)容送入ES,低 字內(nèi)容送入指令中指定的寄存器.以上兩條指令均不影響標(biāo)志寄存器.4.標(biāo)志傳送指令1).標(biāo)志裝入AH指令 格式:LAHF 功能:將標(biāo)志寄存器中的低8位傳送到AH中. 說明:該指令不影響標(biāo)志位.2)設(shè)置

54、標(biāo)志指令 格式:SAHF 功能:將AH的內(nèi)容傳送至標(biāo)志寄存器的低8 位. 說明:該指令改變標(biāo)志寄存器的低8位.即 以下標(biāo)志位:CF PF AF ZF SF3).標(biāo)志壓入堆棧指令 格式:PUSHF 功能:將標(biāo)志寄存器的內(nèi)容壓入堆棧. 說明:該指令不影響標(biāo)志寄存器.4).標(biāo)志彈出堆棧指令 格式:POPF 功能:從堆棧中彈出一個(gè)字送標(biāo)志寄存器. 說明:該指令影響標(biāo)志寄存器的所有標(biāo)志 位.3.4.2 算術(shù)運(yùn)算指令 四則運(yùn)算是計(jì)算機(jī)經(jīng)常進(jìn)行的一種操作。算術(shù)運(yùn)算指令實(shí)現(xiàn)二進(jìn)制(和十進(jìn)制)數(shù)據(jù)的四則運(yùn)算 請(qǐng)注意算術(shù)運(yùn)算類指令對(duì)標(biāo)志的影響 掌握:ADD/ADC/INC、SUB/SBB/DEC/ NEG/CMP

55、 熟悉:MUL/IMUL、DIV/IDIV 理解:CBW/CWD、DAA/DAS、 AAA/ AAS/AAM/AAD1.加法指令1).加法指令 格式:ADD DEST,SRC 功能:DEST (SRC)+(DEST),并根據(jù)結(jié) 果設(shè)置標(biāo)志寄存器的OF SF ZF AF PF CF. 說明:兩操作數(shù)均可以存放在通用寄存器或存儲(chǔ)單元中.源操作數(shù)還可以是立即數(shù).但不能同時(shí)為存儲(chǔ)器操作數(shù).例3.4 設(shè)(AL)=3AH,則執(zhí)行ADD AL,7CH后, (AL)=?.各標(biāo)志位如何?解: 00111010 + 01111100 10110110 B6H AL CF=0 PF=0 AF=1 ZF=0 SF=1

56、 OF=1 2).帶進(jìn)位加指令 格式:ADC DEST,SRC 功能:DEST (SRC)+(DEST)+CF 并根據(jù)結(jié)果設(shè)置標(biāo)志位CF PF AF ZF SF OF. 說明:該指令常用于多字節(jié)運(yùn)算.3).加1指令 格式:INC DEST 功能:DEST (DEST)+1 并根據(jù)結(jié)果設(shè)置標(biāo)志位PF AF ZF SF OF但不影響CF.2.減法指令1).不帶借位的減法指令 格式:SUB DEST,SRC 功能:DEST (DEST)-(SRC) 并根據(jù)結(jié)果設(shè)置標(biāo)志位CF PF AF ZF SF OF. 說明:兩操作數(shù)的要求與ADD指令一樣.例3.5 SUB SI+14H,0136H 設(shè)(DS)=

57、3000H;(SI)=0040H;則EA=0054H 目的操作數(shù)的物理地址:30054H 設(shè)30054H單元的內(nèi)容是4336H 4336H補(bǔ): 0100 0011 0011 0110-0136H補(bǔ): 1111 1110 1100 1010 1 0100 0010 0000 0000丟失符號(hào)位SF=0減法進(jìn)位標(biāo)志取反CF=011=0不溢出OF=0減法,輔助進(jìn)位取反AF=0偶數(shù)個(gè)“1”,PF=1結(jié)果非零,ZF=02).帶借位減法指令 格式: SBB DEST,SRC 功能:DEST (DEST)-(SRC)-CF 并根據(jù)結(jié)果設(shè)置CF PF AF ZF SF OF. 說明:與ADC指令一樣,主要用于

58、多字節(jié)減 法運(yùn)算中.例3.6 SBB BP+SI+0102H,0A034H 設(shè)(BP)=0F6AH;(SI)=0018H;(SS)=2F00H; CF=1.目的操作數(shù)的 EA=0F6AH+0018H+0102H=1084H 物理地址:2F000H+1084H=30084H又設(shè)30084H單元FA42H.指令執(zhí)行的運(yùn)算是:FA42H-A034H-1=5A0DH將5A0DH送30084H單元. FA42H - A034H 5A0EH 再減CF后得5A0DH30084H0DFA30085H.增地址方向425ACF=0 PF=0 AF=1 ZF=0 SF=0 OF=03).減1指令 格式: DEC D

59、EST 功能:DEST (DEST)-1 并根據(jù)結(jié)果設(shè)置OF SF ZF AF PF, 但不影響CF.(與加1指令相同) 說明:DEST可以是字節(jié),也可以是字.且 被當(dāng)成是無符號(hào)數(shù),不能是立即 數(shù). 4).求負(fù)數(shù)指令 格式: NEG DEST 功能:DEST 0-(DEST) 并根據(jù)結(jié)果設(shè)置CF PF AF ZF SF OF. 說明:DEST可以是字節(jié),也可以是字.且被當(dāng)作補(bǔ)碼表示的帶符號(hào)數(shù).不能是立即數(shù).只要(DEST)非0,求負(fù)后CF總置1.5).比較指令 格式:CMP DEST, SRC 功能:(DEST)-(SRC)并設(shè)置CF PF AF ZF SF OF,而不保留兩數(shù)相減的差.對(duì)標(biāo)志

60、位的影響與SUB指令一樣. 3.乘法指令 1).無符號(hào)數(shù)的乘法指令 格式:MUL OPRD 功能:字節(jié)相乘:AX (OPRD)(AL) 字相乘:DX:AX (OPRD)(AX) 說明:該指令只影響CF和OF標(biāo)志位.指令 執(zhí)行后,如果AH(字節(jié)乘法)或 DX(字乘法)為全“0”,則CF=0和 OF=0;否則CF=1,OF=1(表示AH或DX 中有乘積的有效數(shù)字).例3.7 MOV AL,0A7H MOV BL,85H MUL BL2).帶符號(hào)數(shù)的乘法指令 格式:IMUL OPRD 功能:字節(jié)相乘:AX (OPRD)(AL) 字相乘:DX:AX (OPRD)(AX) 并根據(jù)結(jié)果設(shè)置CF OF. 說

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論