第10章80X86和Pentium指令系統(tǒng)簡(jiǎn)介電子教案_第1頁(yè)
第10章80X86和Pentium指令系統(tǒng)簡(jiǎn)介電子教案_第2頁(yè)
第10章80X86和Pentium指令系統(tǒng)簡(jiǎn)介電子教案_第3頁(yè)
第10章80X86和Pentium指令系統(tǒng)簡(jiǎn)介電子教案_第4頁(yè)
第10章80X86和Pentium指令系統(tǒng)簡(jiǎn)介電子教案_第5頁(yè)
已閱讀5頁(yè),還剩40頁(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)介

第十章80X86和Pentium指令系統(tǒng)簡(jiǎn)介第10章80X86和Pentium指令系統(tǒng)簡(jiǎn)介10.1指令的特點(diǎn)10.2尋址方式10.3指令系統(tǒng)第10章80X86和Pentium指令系統(tǒng)簡(jiǎn)介10.1指令的特點(diǎn)10.2尋址方式10.3指令系統(tǒng)第10章80X86和Pentium指令系統(tǒng)簡(jiǎn)介10.1指令的特點(diǎn)10.2尋址方式10.3指令系統(tǒng)10.2尋址方式80286CPU的尋址方式80386CPU的尋址方式80486CPU的尋址方式及Win32程序簡(jiǎn)介80286CPU的尋址方式10.2尋址方式80286CPU有兩種工作方式:實(shí)地址方式和保護(hù)虛地址方式。在實(shí)地址方式下,80286與8086.8088地址兼容,由16位段選擇字左移4位與16位的偏移地址相加得到20位物理地址,可尋址1MB的地址空間,與8086.8088的尋址方式相同。在保護(hù)虛地址方式下,可直接尋址的實(shí)存空間擴(kuò)大到16MB,由A23~A0形成24位物理地址,可尋址的虛空間擴(kuò)大到1GB,使用段描述符表來(lái)尋址。80386CPU的尋址方式10.2尋址方式80386CPU有三種工作方式:實(shí)模式保護(hù)模式虛擬8086模式。80386CPU的尋址方式10.2尋址方式在實(shí)地址方式下,80386與80286對(duì)內(nèi)存的訪問(wèn)方式相同,與8086.8088地址兼容,可尋址1MB的地址空間。80386CPU的尋址方式10.2尋址方式在保護(hù)虛地址方式下,由A23~A0形成24位物理地址,可直接尋址的實(shí)存空間擴(kuò)大到16MB;支持存儲(chǔ)器的段頁(yè)式結(jié)構(gòu),可尋址的虛空間擴(kuò)大到4GB,訪問(wèn)存儲(chǔ)器需要32位物理地址,由虛地址指示器提供48位地址指針,其中前16位是段選擇字,后32位是偏移地址。DOS操作系統(tǒng)和16位的Windows3X操作系統(tǒng)工作在實(shí)地址方式下,32位的Windows操作系統(tǒng)工作在保護(hù)模式下。32位的Windows操作系統(tǒng),將每一個(gè)Win32應(yīng)用程序放到分開(kāi)的虛擬地址空間中去運(yùn)行,也就是每一個(gè)應(yīng)用程序都擁有其相互獨(dú)立的4GB地址空間,但不是擁有4GB的物理地址空間,而是能夠在4GB的范圍內(nèi)尋址。操作系統(tǒng)將會(huì)在應(yīng)用程序運(yùn)行時(shí)完成4GB的虛擬地址和物理地址間的轉(zhuǎn)換。80386CPU的尋址方式10.2尋址方式虛擬8086模式下,處理器的工作方式類(lèi)似于8086.8088:尋址的地址空間是1MB;段寄存器的內(nèi)容作為段基值;20位存儲(chǔ)單元地址由段基值左移4位加偏移地址構(gòu)成。在虛擬8086模式下,代碼段是可寫(xiě)的,與實(shí)模式相同,同樣數(shù)據(jù)段也是可執(zhí)行的,但這可能引起異常??梢?jiàn)在虛擬8086模式下,可以運(yùn)行DOS及其平臺(tái)下的程序。但這種模式畢竟是虛擬8086的一種方式,并不完全等同于8086。80486CPU的尋址方式及Win32程序簡(jiǎn)介10.2尋址方式80486從指令系統(tǒng)、寄存器組和存儲(chǔ)器管理方式等方面來(lái)看,在體系結(jié)構(gòu)上與80386幾乎沒(méi)有多少區(qū)別。操作模式也同80386一樣,有實(shí)模式,保護(hù)模式和虛擬8086模式。80486CPU的尋址方式及Win32程序簡(jiǎn)介10.2尋址方式Win32程序運(yùn)行在保護(hù)模式下的32位的Windows(Win95、Win98等)操作系統(tǒng)環(huán)境中。Windows把每一個(gè)Win32應(yīng)用程序放到分開(kāi)的虛擬地址空間中去運(yùn)行,每一個(gè)應(yīng)用程序都擁有其相互獨(dú)立的4GB地址空間,能夠在4GB的地址空間范圍內(nèi)尋址。在DOS的實(shí)地址模式下編寫(xiě)匯編語(yǔ)言程序時(shí),我們可以管理系統(tǒng)的所有資源。32位的Windows(Win95、Win98等)工作在保護(hù)模式下,系統(tǒng)所有的資源對(duì)應(yīng)用程序來(lái)說(shuō)都是被“保護(hù)”的。

Win32匯編的有關(guān)內(nèi)容10.2尋址方式1.Win32ASM編譯器Borland公司的MASM5.0Microsoft的MASM6.11

Win32匯編的有關(guān)內(nèi)容10.2尋址方式TASM帶了Import庫(kù),而MASM沒(méi)有帶,但SteveHutchesson為MASM建立了一個(gè)很全的Import庫(kù),基本上包括了Windows絕大部分的API函數(shù),這些庫(kù)、Include文件和其他工具還有MASM6.14版本一起做成了一個(gè)MASM32編譯器———MASM32V5。MASM32宏匯編器有很多特色,像“invoke”,可簡(jiǎn)化對(duì)API函數(shù)的調(diào)用并對(duì)數(shù)據(jù)類(lèi)型進(jìn)行檢查。

Win32匯編的有關(guān)內(nèi)容10.2尋址方式使用32位的編譯器時(shí),首先要指定內(nèi)存模式。如要生成.com文件,內(nèi)存模式應(yīng)指定為tiny,然后按.com文件的規(guī)范寫(xiě)文件;生成.exe文件,內(nèi)存模式應(yīng)指定為small等。要生成.com文件十分方便,用mlfilename.asm即可完成編譯鏈接,不需要exe2bin轉(zhuǎn)換。與MASM5.0相比,MASM32的偽指令功能十分強(qiáng)大,應(yīng)用起來(lái)特別方便。

Win32匯編的有關(guān)內(nèi)容10.2尋址方式2.資源編輯器BorlandResourceWorkshop推薦網(wǎng)址:

Win32匯編的有關(guān)內(nèi)容10.2尋址方式3.文本編輯器Ultraedit網(wǎng)址:

Win32匯編的有關(guān)內(nèi)容10.2尋址方式4.參考手冊(cè)《Win32程序員參考手冊(cè)》推薦網(wǎng)址:

Win32匯編的有關(guān)內(nèi)容10.2尋址方式Win32程序框架: .386 .MODELFLAT,STDCALL .DATA <已初始化的數(shù)據(jù)>... .DATA? <未初始化的數(shù)據(jù)> ... .CONST <定義的常量> ... .CODE <label> <用戶程序代碼> ... end<label>第10章80X86和Pentium指令系統(tǒng)簡(jiǎn)介10.1指令的特點(diǎn)10.2尋址方式10.3指令系統(tǒng)10.3指令系統(tǒng)80286的新增指令80386的新增指令80486的新增指令80286的新增指令10.3指令系統(tǒng)1.普通指令共有四條: PUSHA———把8個(gè)寄存器值壓入堆棧。

POPA———從堆棧中彈出數(shù)據(jù)恢復(fù)8個(gè)寄存器的值。

INS———字符串輸入指令。

OUTS———字符串輸出指令。

INS指令的功能是從指定的端口輸入一字符串到指定內(nèi)存地址中去??梢允褂肦EP前綴。80286的新增指令10.3指令系統(tǒng)2.高級(jí)指令共有三條: ENTER———進(jìn)入過(guò)程,為過(guò)程保留堆??臻g和確定過(guò)程嵌套級(jí); LEAVE———退出過(guò)程,釋放過(guò)程所占堆??臻g; BOUND———檢查地址寄存器的值是否在數(shù)組邊界內(nèi)。80286的新增指令10.3指令系統(tǒng)3.保護(hù)方式指令 這類(lèi)指令用于實(shí)地址模式和保護(hù)虛地址模式的切換,并完成保護(hù)模式下的一些專(zhuān)門(mén)操作。共有16條指令: ARPL———調(diào)整請(qǐng)求和特權(quán)級(jí)別; CLTS———清除任務(wù)切換標(biāo)志位; LAR———將段描述符中的存取權(quán)限裝入寄存器; LGDT———將從指定地址開(kāi)始的6個(gè)字節(jié)裝入全局描述符表寄存器中; LIDT———將從指定地址開(kāi)始的6個(gè)字節(jié)裝入中斷描述符表寄存器中; LLDT———將16位值裝入局部描述符表寄存器;80286的新增指令10.3指令系統(tǒng) LMSW———裝入機(jī)器狀態(tài)字寄存器; LSL———將段描述符中的段限值裝入寄存器; LTR———將16位值裝入任務(wù)寄存器; SGDT———把全局描述符表寄存器的內(nèi)容存放到內(nèi)存6個(gè)字節(jié)單元; SIDT———把中斷描述符表寄存器的內(nèi)容存放到內(nèi)存6個(gè)字節(jié)單元; SLDT———將局部描述符表的16位值存入內(nèi)存或寄存器中; SMSW———存儲(chǔ)機(jī)器狀態(tài)字寄存器的值; VERR———校驗(yàn)讀訪問(wèn); VERW———校驗(yàn)寫(xiě)訪問(wèn); STR———存儲(chǔ)任務(wù)寄存器(與LTR方向相反)。80386的新增指令10.3指令系統(tǒng)1.增加的新指令(1)測(cè)試與置位類(lèi)指令(2)位掃描指令(3)數(shù)的傳送與擴(kuò)展指令(4)雙精度移位指令(5)條件設(shè)置類(lèi)指令80386的新增指令10.3指令系統(tǒng)(1)測(cè)試與置位類(lèi)指令格式1:BT寄存器.存儲(chǔ)器地址,寄存器.立即數(shù)功能:位測(cè)試指令,用于檢查指定位,并將該位復(fù)制到進(jìn)位標(biāo)志位中。格式2:BTR寄存器.存儲(chǔ)器地址,寄存器.立即數(shù)功能:位測(cè)試且取反指令,用于檢查指定位,將該位復(fù)制到進(jìn)位標(biāo)志位中,并將原指定位取反再置入位。80386的新增指令10.3指令系統(tǒng)(1)測(cè)試與置位類(lèi)指令格式3:BTR寄存器.存儲(chǔ)器地址,寄存器.立即數(shù)功能:位測(cè)試且復(fù)位指令,用于檢查指定位,將該位復(fù)制到進(jìn)位標(biāo)志位中,并將原指定位復(fù)位。格式4:BTS寄存器.存儲(chǔ)器地址,寄存器.立即數(shù)功能:位測(cè)試且置位指令,用于檢查指定位,將該位復(fù)制到進(jìn)位標(biāo)志位中,并將原指定位置位。80386的新增指令10.3指令系統(tǒng)(2)位掃描指令格式1:BSF寄存器,寄存器.存儲(chǔ)器地址功能:位掃描指令,它從源寄存器.存儲(chǔ)器地址中的數(shù)的最低位(第0位)開(kāi)始掃描直到置位位為止,并將該置位位的索引(位號(hào))送入目的寄存器中。格式2:BSR寄存器,寄存器.存儲(chǔ)器地址功能:位掃描指令,它從源寄存器.存儲(chǔ)器地址中的數(shù)的最高位(第31.15位)開(kāi)始掃描直到置位位為止,并將該置位位的索引(位號(hào))送入目的寄存器中。80386的新增指令10.3指令系統(tǒng)(3)數(shù)的傳送與擴(kuò)展指令格式1:MOVSX寄存器,寄存器.存儲(chǔ)器地址功能:傳送有符號(hào)數(shù)到目的寄存器中,并將符號(hào)擴(kuò)展到操作數(shù)的所有位。格式2:MOVZX寄存器,寄存器.存儲(chǔ)器地址功能:傳送無(wú)符號(hào)數(shù)到目的寄存器中,并用0進(jìn)行擴(kuò)展。80386的新增指令10.3指令系統(tǒng)(4)雙精度移位指令格式1:SHLD寄存器.存儲(chǔ)器地址,寄存器,CL.立即數(shù)功能:雙精度左移指令,第一個(gè)操作數(shù)左移N(第三個(gè)操作數(shù)指出)位,其右邊空出位由第二個(gè)操作數(shù)的左邊N位填補(bǔ),CF保持第一個(gè)操作數(shù)最后一次的移出位。格式2:SHRD寄存器.存儲(chǔ)器地址,寄存器,CL.立即數(shù)功能:雙精度右移指令,參見(jiàn)SHLD。80386的新增指令10.3指令系統(tǒng)(5)條件設(shè)置類(lèi)指令 這類(lèi)指令用于測(cè)試指定的標(biāo)志位所處的狀態(tài),根據(jù)測(cè)試結(jié)果,將指定的一個(gè)8位寄存器或內(nèi)存單元置1或0:

結(jié)果為真,8位寄存器或內(nèi)存單元置1;

結(jié)果為假,8位寄存器或內(nèi)存單元置0。 這類(lèi)指令有:SETA.SETNBE,還有SETAE.SETNC、SETB.SETNAE.SETC、SETNA.SETBE、SETE.SETZ、SETG.SETNLE、SETGE.SETNL、SETL.SETNGE、SETLE.SETNG、SETNE.SETNZ、SETNO、SETNS、SETO、SETP.SETPE、SETPO.SETNP、SETS等。80386的新增指令10.3指令系統(tǒng)

格式:SETE8位寄存器.內(nèi)存單元 功能:如果ZF=1則寄存器.存儲(chǔ)器地址=1,否則寄存器.存儲(chǔ)器地址=0。80386的新增指令10.3指令系統(tǒng)2.增強(qiáng)功能的指令(1)轉(zhuǎn)換指令(2)字符串操作指令(3)整數(shù)乘指令I(lǐng)MUL(4)堆棧操作指令(5)中斷返回指令I(lǐng)RETD80386的新增指令10.3指令系統(tǒng)(1)轉(zhuǎn)換指令

CDQ:轉(zhuǎn)換在EAX中帶符號(hào)的雙字到EDX,EAX中為帶符號(hào)的四字。它把EAX中的符號(hào)位擴(kuò)展到EDX中的所有位來(lái)實(shí)現(xiàn)轉(zhuǎn)換。

CWDE:把字轉(zhuǎn)換為雙字。它把AX中的符號(hào)位擴(kuò)展到EAX中的其他位來(lái)把AX中的字轉(zhuǎn)換成EAX中的雙字。80386的新增指令10.3指令系統(tǒng)(2)字符串操作指令 字符串操作指令CMPSD、INSD、LODSD、MOVSD、OUTSD、SCASD、STOSD

可見(jiàn)它們是在字符串操作指令CMPS、INS、LODS、MOVS、OUTS、SCAS、STOS各指令后加D,變成了對(duì)雙字的操作,類(lèi)似于加B對(duì)字節(jié)操作、加W對(duì)字操作。仍然是由寄存器DS:SI指向源串,ES:DI指向目標(biāo)串。80386的新增指令10.3指令系統(tǒng)(3)整數(shù)乘指令I(lǐng)MUL

在80286中,IMUL有兩種格式: IMUL16位寄存器,立即數(shù)

IMUL16位寄存器,16位存儲(chǔ)器,立即數(shù) 在80386中,新增一種格式: IMUL寄存器,寄存器.存儲(chǔ)器

;注意源和目標(biāo)操作數(shù)位數(shù)必須相同80386的新增指令10.3指令系統(tǒng)(4)堆棧操作指令 在80286中,

PUSHA———把8個(gè)寄存器值壓入堆棧,

POPA———從堆棧中彈出數(shù)據(jù)恢復(fù)8個(gè)寄存器的值。 上述兩個(gè)指令對(duì)8個(gè)16位的寄存器進(jìn)行堆棧操作,在80386中要對(duì)相應(yīng)的8個(gè)32位寄存器進(jìn)行堆棧操作,需使用PUSHAD、POPAD指令。在80386中要對(duì)32位的標(biāo)志寄存器EFLAG寄存器進(jìn)行堆棧操作,需使用PUSHFD、POPFD指令。80386的新增指令10.3指令系統(tǒng)(5)中斷返回指令I(lǐng)RETD

我們

溫馨提示

  • 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)論