版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第十章80X86和Pentium指令系統(tǒng)簡介第10章80X86和Pentium指令系統(tǒng)簡介10.1指令的特點(diǎn)10.2尋址方式10.3指令系統(tǒng)第10章80X86和Pentium指令系統(tǒng)簡介10.1指令的特點(diǎn)10.2尋址方式10.3指令系統(tǒng)第10章80X86和Pentium指令系統(tǒng)簡介10.1指令的特點(diǎn)10.2尋址方式10.3指令系統(tǒng)10.2尋址方式80286CPU的尋址方式80386CPU的尋址方式80486CPU的尋址方式及Win32程序簡介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,使用段描述符表來尋址。80386CPU的尋址方式10.2尋址方式80386CPU有三種工作方式:實(shí)模式保護(hù)模式虛擬8086模式。80386CPU的尋址方式10.2尋址方式在實(shí)地址方式下,80386與80286對內(nèi)存的訪問方式相同,與8086.8088地址兼容,可尋址1MB的地址空間。80386CPU的尋址方式10.2尋址方式在保護(hù)虛地址方式下,由A23~A0形成24位物理地址,可直接尋址的實(shí)存空間擴(kuò)大到16MB;支持存儲器的段頁式結(jié)構(gòu),可尋址的虛空間擴(kuò)大到4GB,訪問存儲器需要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)用程序放到分開的虛擬地址空間中去運(yùn)行,也就是每一個(gè)應(yīng)用程序都擁有其相互獨(dú)立的4GB地址空間,但不是擁有4GB的物理地址空間,而是能夠在4GB的范圍內(nèi)尋址。操作系統(tǒng)將會在應(yīng)用程序運(yùn)行時(shí)完成4GB的虛擬地址和物理地址間的轉(zhuǎn)換。80386CPU的尋址方式10.2尋址方式虛擬8086模式下,處理器的工作方式類似于8086.8088:尋址的地址空間是1MB;段寄存器的內(nèi)容作為段基值;20位存儲單元地址由段基值左移4位加偏移地址構(gòu)成。在虛擬8086模式下,代碼段是可寫的,與實(shí)模式相同,同樣數(shù)據(jù)段也是可執(zhí)行的,但這可能引起異常。可見在虛擬8086模式下,可以運(yùn)行DOS及其平臺下的程序。但這種模式畢竟是虛擬8086的一種方式,并不完全等同于8086。80486CPU的尋址方式及Win32程序簡介10.2尋址方式80486從指令系統(tǒng)、寄存器組和存儲器管理方式等方面來看,在體系結(jié)構(gòu)上與80386幾乎沒有多少區(qū)別。操作模式也同80386一樣,有實(shí)模式,保護(hù)模式和虛擬8086模式。80486CPU的尋址方式及Win32程序簡介10.2尋址方式Win32程序運(yùn)行在保護(hù)模式下的32位的Windows(Win95、Win98等)操作系統(tǒng)環(huán)境中。Windows把每一個(gè)Win32應(yīng)用程序放到分開的虛擬地址空間中去運(yùn)行,每一個(gè)應(yīng)用程序都擁有其相互獨(dú)立的4GB地址空間,能夠在4GB的地址空間范圍內(nèi)尋址。在DOS的實(shí)地址模式下編寫匯編語言程序時(shí),我們可以管理系統(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建立了一個(gè)很全的Import庫,基本上包括了Windows絕大部分的API函數(shù),這些庫、Include文件和其他工具還有MASM6.14版本一起做成了一個(gè)MASM32編譯器———MASM32V5。MASM32宏匯編器有很多特色,像“invoke”,可簡化對API函數(shù)的調(diào)用并對數(shù)據(jù)類型進(jìn)行檢查。
Win32匯編的有關(guān)內(nèi)容10.2尋址方式使用32位的編譯器時(shí),首先要指定內(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的偽指令功能十分強(qiáng)大,應(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指令的特點(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.高級指令共有三條: ENTER———進(jìn)入過程,為過程保留堆??臻g和確定過程嵌套級; LEAVE———退出過程,釋放過程所占堆??臻g; BOUND———檢查地址寄存器的值是否在數(shù)組邊界內(nèi)。80286的新增指令10.3指令系統(tǒng)3.保護(hù)方式指令 這類指令用于實(shí)地址模式和保護(hù)虛地址模式的切換,并完成保護(hù)模式下的一些專門操作。共有16條指令: ARPL———調(diào)整請求和特權(quán)級別; CLTS———清除任務(wù)切換標(biāo)志位; LAR———將段描述符中的存取權(quán)限裝入寄存器; LGDT———將從指定地址開始的6個(gè)字節(jié)裝入全局描述符表寄存器中; LIDT———將從指定地址開始的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———存儲機(jī)器狀態(tài)字寄存器的值; VERR———校驗(yàn)讀訪問; VERW———校驗(yàn)寫訪問; STR———存儲任務(wù)寄存器(與LTR方向相反)。80386的新增指令10.3指令系統(tǒng)1.增加的新指令(1)測試與置位類指令(2)位掃描指令(3)數(shù)的傳送與擴(kuò)展指令(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ù)的傳送與擴(kuò)展指令格式1:MOVSX寄存器,寄存器.存儲器地址功能:傳送有符號數(shù)到目的寄存器中,并將符號擴(kuò)展到操作數(shù)的所有位。格式2:MOVZX寄存器,寄存器.存儲器地址功能:傳送無符號數(shù)到目的寄存器中,并用0進(jìn)行擴(kuò)展。80386的新增指令10.3指令系統(tǒng)(4)雙精度移位指令格式1:SHLD寄存器.存儲器地址,寄存器,CL.立即數(shù)功能:雙精度左移指令,第一個(gè)操作數(shù)左移N(第三個(gè)操作數(shù)指出)位,其右邊空出位由第二個(gè)操作數(shù)的左邊N位填補(bǔ),CF保持第一個(gè)操作數(shù)最后一次的移出位。格式2:SHRD寄存器.存儲器地址,寄存器,CL.立即數(shù)功能:雙精度右移指令,參見SHLD。80386的新增指令10.3指令系統(tǒng)(5)條件設(shè)置類指令 這類指令用于測試指定的標(biāo)志位所處的狀態(tài),根據(jù)測試結(jié)果,將指定的一個(gè)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.增強(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中帶符號的雙字到EDX,EAX中為帶符號的四字。它把EAX中的符號位擴(kuò)展到EDX中的所有位來實(shí)現(xiàn)轉(zhuǎn)換。
CWDE:把字轉(zhuǎn)換為雙字。它把AX中的符號位擴(kuò)展到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個(gè)寄存器值壓入堆棧,
POPA———從堆棧中彈出數(shù)據(jù)恢復(fù)8個(gè)寄存器的值。 上述兩個(gè)指令對8個(gè)16位的寄存器進(jìn)行堆棧操作,在80386中要對相應(yīng)的8個(gè)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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度銀行卡跨境支付清算服務(wù)合作協(xié)議
- 2025年度智能城市建設(shè)顧問聘用合同
- 2025年度房地產(chǎn)項(xiàng)目質(zhì)押貸款合同模板
- 2025年度石材行業(yè)專利申請與保護(hù)合同
- 二零二五年度股東退股協(xié)議書:XX電商公司合伙人股權(quán)退出及退股合同
- 2021年中國人口發(fā)展現(xiàn)狀與趨勢分析報(bào)告-20211107131719
- 觀看紅色革命電影的個(gè)人觀后感800字5篇
- 2025年影視編劇合同
- 2025年膠木模項(xiàng)目投資可行性研究分析報(bào)告
- 2025年中國鎖陽行業(yè)投資研究分析及發(fā)展前景預(yù)測報(bào)告
- 高中語文:選擇性必修中冊第三單元拓展閱讀
- 耳穴壓豆課件
- 2023年江蘇省南京市中考化學(xué)真題(原卷版)
- 2023年湖北省襄陽市中考數(shù)學(xué)真題(原卷版)
- 變電站現(xiàn)場運(yùn)行通用規(guī)程考試試題及答案
- 湖南高速鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試參考試題庫(含答案)
- 中醫(yī)護(hù)理查房制度
- 母嬰護(hù)理員題庫
- 老年人預(yù)防及控制養(yǎng)老機(jī)構(gòu)院內(nèi)感染院內(nèi)感染基本知識
- SWITCH暗黑破壞神3超級金手指修改 版本號:2.7.6.90885
- 2023高考語文全國甲卷詩歌閱讀題晁補(bǔ)之《臨江仙 身外閑愁空滿眼》講評課件
評論
0/150
提交評論