第10章80X86和Pentium指令系統(tǒng)簡介電子教案_第1頁
第10章80X86和Pentium指令系統(tǒng)簡介電子教案_第2頁
第10章80X86和Pentium指令系統(tǒng)簡介電子教案_第3頁
第10章80X86和Pentium指令系統(tǒng)簡介電子教案_第4頁
第10章80X86和Pentium指令系統(tǒng)簡介電子教案_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

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

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.參考手冊《Win32程序員參考手冊》推薦網(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)簡介10.1指令的特點10.2尋址方式10.3指令系統(tǒng)10.3指令系統(tǒng)80286的新增指令80386的新增指令80486的新增指令80286的新增指令10.3指令系統(tǒng)1.普通指令共有四條: PUSHA———把8個寄存器值壓入堆棧。

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

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

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

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

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

結(jié)果為假,8位寄存器或內(nèi)存單元置0。 這類指令有: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則寄存器.存儲器地址=1,否則寄存器.存儲器地址=0。80386的新增指令10.3指令系統(tǒng)2.增強功能的指令(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中帶符號的雙字到EDX,EAX中為帶符號的四字。它把EAX中的符號位擴展到EDX中的所有位來實現(xiàn)轉(zhuǎn)換。

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

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

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

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

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

PUSHA———把8個寄存器值壓入堆棧,

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

我們

溫馨提示

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

評論

0/150

提交評論