匯編語言程序設(shè)計及上機指導(dǎo) 第2章 寄存器與存儲器_第1頁
匯編語言程序設(shè)計及上機指導(dǎo) 第2章 寄存器與存儲器_第2頁
匯編語言程序設(shè)計及上機指導(dǎo) 第2章 寄存器與存儲器_第3頁
匯編語言程序設(shè)計及上機指導(dǎo) 第2章 寄存器與存儲器_第4頁
匯編語言程序設(shè)計及上機指導(dǎo) 第2章 寄存器與存儲器_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章寄存器與存儲器【本章提要】本章將著重講解Intel系列CPU內(nèi)部寄存器的組織結(jié)構(gòu)、命名、功能及其常見的用途,還要介紹存儲器的分段管理模式、存儲單元地址的表示法以及其物理地址的形成方式?!緦W(xué)習(xí)目標】熟練掌握CPU內(nèi)部寄存器的組織結(jié)構(gòu)熟練掌握標志寄存器各定義位的功能掌握存儲器的分段管理方案19十一月20232.1寄存器組織寄存器是CPU內(nèi)部重要的數(shù)據(jù)存儲資源,是匯編程序員能直接使用的硬件資源之一。Intel系列微處理器從早期的16位8086開始,到Pentium系列,以至于現(xiàn)在的CORE(酷睿)系列,雖然CPU內(nèi)部結(jié)構(gòu)和功能變化很大,但其寄存器的組織情況卻是有規(guī)律的。寄存器類型IA-32寄存器IA-32E寄存器字節(jié)寄存器(8位)AH,BH,CH,DH,AL,BL,CL,DLAL,BL,CL,DL,DIL,SIL,BPL,SPL,R8L-R15L字寄存器(16位)AX,BX,CX,DX,DI,SI,BP,SPAX,BX,CX,DX,DI,SI,BP,SP,R8W-R15W雙字寄存器(32位)EAX,EBX,ECX,EDX,EDI,ESI,EBP,ESPEAX,EBX,ECX,EDX,EDI,ESI,EBP,ESP,R8D-R15D四字寄存器(64位)無RAX,RBX,RCX,RDX,RDI,RSI,RBP,RSP,R8-R1519十一月202319十一月202319十一月2023Debug簡介在受控環(huán)境中測試程序;裝入,顯示或修改任何文件;執(zhí)行DOS程序;完成磁盤實際讀/寫操作;建立或匯編匯編語言程序。19十一月2023啟動DEBUG段寄存器CS、DS、ES和SS置為DEBUG程序后的第一個段。指令指針寄存器IP置為100H(程序段前綴PSP后的第一個語句)。堆棧指針SP置為段末或COMMAND.COM暫駐部分的結(jié)束地址(其中較小的那個地址)。其余通用寄存器均置為0,標志寄存器置為下述狀態(tài)。

NV

UP

EI

PL

NE

NA

PO

NC

如果DEBUG命令行含有文件名,段寄存器DS和ES指向PSP。寄存器BX和CX含有程序長度。19十一月2023各標志位在計算機上的表示19十一月2023Debug命令:1.顯示和修改某個寄存器內(nèi)容R命令

-R

registername如RaxRF等2.匯編命令A(yù)(Assemble)

-A[address]3.逐條指令跟蹤

-T[=address]

從指定地址起執(zhí)行一條指令后停下來,顯示所有寄存器內(nèi)空及標志位的值。如未指定則從當前的CS:IP開始執(zhí)行。

4.退出命令Q(quit)19十一月20232.1.2標志寄存器Intel的16位CPU中設(shè)置了16位的標志寄存器FLAGS,其中定義了9個標志位,主要用來反映CPU的狀態(tài)和運算結(jié)果的特征。后來在32位和64位環(huán)境下,F(xiàn)LAGS又分別被擴展到了32位和64位(即EFLAGS和RFLAGS),同時又增加一些新的標志位定義。1514131211109876543210OFDFIFTFSFZFAFPFCF圖2.2FLAGS定義示意圖19十一月20231、進位標志CF(CarryFlag)如果運算結(jié)果的最高位產(chǎn)生了一個進位或借位,其值為1,否則其值為0。2、奇偶標志PF(ParityFlag)運算結(jié)果中最低8位中“1”的個數(shù)為偶數(shù),則PF的值為1,否則其值為0。3、輔助進位標志AF(AuxiliaryCarryFlag)在字操作時,發(fā)生低字節(jié)向高字節(jié)進位或借位,或者在字節(jié)操作時,發(fā)生低4位向高4位進位或借位,則AF的值被置為1,否則其值為0。4、零標志ZF(ZeroFlag)如果運算結(jié)果為0,則其值為1,否則其值為0。5、符號標志SF(SignFlag)符號標志SF用來反映運算結(jié)果的符號位,它與運算結(jié)果的最高位相同。6、溢出標志OF(OverflowFlag)如果運算結(jié)果超過當前運算位數(shù)所能表示的范圍,則稱為溢出,OF的值被置為1,否則,OF的值被清為0。1514131211109876543210OFDFIFTFSFZFAFPFCF圖2.2FLAGS定義示意圖19十一月20237、追蹤標志TF(TrapFlag)當追蹤標志TF被置為1時,CPU進入單步執(zhí)行方式,即每執(zhí)行一條指令,產(chǎn)生一個單步中斷請求。8、中斷允許標志IF(Interrupt-enableFlag)中斷允許標志IF是用來決定CPU是否響應(yīng)CPU外部的可屏蔽中斷發(fā)出的中斷請求。(1)當IF=1時,CPU可以響應(yīng)CPU外部的可屏蔽中斷發(fā)出的中斷請求;(2)當IF=0時,CPU不響應(yīng)CPU外部的可屏蔽中斷發(fā)出的中斷請求。9、方向標志DF(DirectionFlag)方向標志DF用來決定在串操作指令執(zhí)行時有關(guān)指針寄存器發(fā)生調(diào)整的方向。1514131211109876543210OFDFIFTFSFZFAFPFCF圖2.2FLAGS定義示意圖19十一月20232.2存儲器的管理模式Intel的80X86系列CPU基本上采用內(nèi)存分段的管理模式。它把內(nèi)存和程序分成若干個段,每個段的起點用一個段寄存器來保存。2.2.1實地址方式內(nèi)存管理目前的Intel系列CPU都能工作在實地址方式或保護地址方式下。實地址方式下只能訪問1MB的內(nèi)存空間,只能單任務(wù)運行,8086只有這一種工作方式,80286以后的系列CPU的可以運行在保護地址方式。如果工作在實地址模式,則任何高檔處理器只相當于快速的8086,因此尋址方法與8086一樣,在這種方式下處理器沒有充分發(fā)揮處理器的性能。只有在保護方式下,處理器才真正發(fā)揮應(yīng)有的作用。19十一月202319十一月20231.段地址與偏移地址在實地址方式下,段地址定義了段起始地址的高16位,并存放在段寄存器中。邏輯段的起始地址(通常簡稱為:段地址)必須是16的倍數(shù),即最低4位二進制必須全為0。1M內(nèi)存最多可分成64K個段,即65536個段(段之間相互重疊),至少可分成16個相互不重疊的段。偏移地址描述目的地址在該段中的相對位置,即離段基址的偏移量,它指示在64KB段內(nèi)任何一個單元。偏移地址保存在16位寄存器中,因此段的大小最大為64KB。2.默認段地址與偏移地址寄存器訪問存儲器類型默認段地址寄存器可指定段地址寄存器段內(nèi)偏移地址來源取指令CS無IP堆棧操作SS無SP字符串操作源地址DSCS,SS,ESSI字符串操作目的地址ES無DIBP用作基址寄存器時SSCS,DS,ES據(jù)尋址方式得偏移地址一般數(shù)據(jù)存取DSCS,ES,SS據(jù)尋址方式得偏移地址19十一月20233.邏輯地址與物理地址邏輯地址是段地址與偏移地址的合稱,用“段地址:偏移地址”表示,如1234H:1200H表示段地址為1234H,段內(nèi)偏移地址為1200H。物理地址是存儲器的實際地址,在實地址方式下物理地址通過段地址乘以16加上偏移地址得到。而16位的段地址乘以16等同于左移4位二進制位,這樣變成20位的段基地址,最后段基地址加上段內(nèi)偏移地址就是物理地址。【例2.1】有一邏輯地址為1200H:0340H,求物理地址。解:由邏輯地址知段地址=1200H,偏移地址=0340H,因此物理地址=12000H+0340H=12340H?!纠?.2】已經(jīng)DS=1000H,CS=2200H,指令MOV[2000H],AX在代碼段中的偏移量是IP=0150H,求(1)該指令所在的物理地址。(2)目的操作數(shù)對應(yīng)的物理地址。解:(1)指令對應(yīng)的物理地址=CS*16+IP=22000H+0150H=22150H。(2)該指令指示的目的操作數(shù)對應(yīng)段地址默認存在DS中,偏移地址已由指令給出2000H,因此該指令指示的目的操作數(shù)所在物理地址=DS*16+2000H=10000H+2000H=12000H。19十一月2023Debug命令二:內(nèi)存單元的訪問和修改1.顯示存儲單元的命令D(Dump)

-D[address]或2.修改存儲單元內(nèi)容的命令E(Enter)-E

address

[list]

如,-E

DS:100

F3'XYZ'8D

-E

address3.填寫命令F(Fill),其格式為:

-F

range

list

例如,-F

4BA:0100

5

F3'XYZ'8D

19十一月20234.存儲單元的內(nèi)容存儲單元是按照地址進行訪問的,相鄰兩個單元的地址編號是連續(xù)的,一般以無符號數(shù)表示,Intel系列CPU都以字節(jié)為單位分配地址編號的。1)一個字節(jié)的內(nèi)容占用一個存儲單元并分配一個地址編號;2)一個字的內(nèi)容是該字地址所指向的單元及其后繼1個單元的內(nèi)容拼接而成;3)一個32位的內(nèi)容是該字地址所指向的單元及其后繼3個單元的內(nèi)容拼接而成;4)一個64位的內(nèi)容是該字地址所指向的單元及其后繼7個單元的內(nèi)容拼接而成。在拼接多個內(nèi)存單元時,按“高對高低對低”的原則來處理,即:高存儲單元(地址大的存儲單元)的值是高數(shù)據(jù)位,低存儲單元(地址小的存儲單元)的值是低數(shù)據(jù)位。內(nèi)容地址12H

溫馨提示

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

評論

0/150

提交評論