匯編語言第二章課件_第1頁
匯編語言第二章課件_第2頁
匯編語言第二章課件_第3頁
匯編語言第二章課件_第4頁
匯編語言第二章課件_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2.8段的概念錯誤認(rèn)識:內(nèi)存被劃分成了一個一個的段,每一個段有一個段地址。其實:內(nèi)存并沒有分段,段的劃分來自于CPU,由于8086CPU用“(段地址×16)+偏移地址=物理地址”的方式給出內(nèi)存單元的物理地址,使得我們可以用分段的方式來管理內(nèi)存。2.8段的概念2.8段的概念以后,在編程時可以根據(jù)需要,將若干地址連續(xù)的內(nèi)存單元看作一個段,用段地址×16定位段的起始地址(基礎(chǔ)地址),用偏移地址定位段中的內(nèi)存單元。兩點需要注意兩點需要注意(1)段地址×16必然是16的倍數(shù),所以一個段的起始地址也一定是16的倍數(shù);(2)偏移地址為16位,16位地址的尋址能力為64K,所以一個段的長度最大為64K。內(nèi)存單元地址小結(jié)CPU訪問內(nèi)存單元時,必須向內(nèi)存提供內(nèi)存單元的物理地址。8086CPU在內(nèi)部用段地址和偏移地址移位相加的方法形成最終的物理地址。思考兩個問題內(nèi)存單元地址小結(jié)(1)觀察下面的地址,讀者有什么發(fā)現(xiàn)?結(jié)論:CPU可以用不同的段地址和偏移地址形成同一個物理地址。內(nèi)存單元地址小結(jié)(2)如果給定一個段地址,僅通過變化偏移地址來進行尋址,最多可以定位多少內(nèi)存單元?結(jié)論:偏移地址16位,變化范圍為0~FFFFH,僅用偏移地址來尋址最多可尋64K個內(nèi)存單元。比如:給定段地址1000H,用偏移地址尋址,CPU的尋址范圍為:10000H~1FFFFH。沒有小結(jié)的小結(jié)在8086PC機中,存儲單元的地址用兩個元素來描述。即段地址和偏移地址?!皵?shù)據(jù)在21F60H內(nèi)存單元中?!睂τ?086PC機的兩種描述:(a)數(shù)據(jù)存在內(nèi)存2000:1F60單元中;(b)數(shù)據(jù)存在內(nèi)存的2000段中的1F60H單元中。可根據(jù)需要,將地址連續(xù)、起始地址為16的倍數(shù)的一組內(nèi)存單元定義為一個段。檢測點2.2沒有通過檢測點請不要向下學(xué)習(xí)!2.9段寄存器段寄存器就是提供段地址的。8086CPU有4個段寄存器: CS、DS、SS、ES當(dāng)8086CPU要訪問內(nèi)存時,由這4個段寄存器提供內(nèi)存單元的段地址。2.10CS和IPCS和IP是8086CPU中最關(guān)鍵的寄存器,它們指示了CPU當(dāng)前要讀取指令的地址。CS為代碼段寄存器;IP為指令指針寄存器。8086PC讀取和執(zhí)行指令相關(guān)部件8086PC讀取和執(zhí)行指令演示8086PC工作過程的簡要描述8086PC工作過程的簡要描述(1)從CS:IP指向內(nèi)存單元讀取指令,讀取的指令進入指令緩沖器;(2)IP=IP+所讀取指令的長度,從而指向下一條指令;(3)執(zhí)行指令。轉(zhuǎn)到步驟(1),重復(fù)這個過程。8086PC工作過程的簡要描述在8086CPU加電啟動或復(fù)位后(即CPU剛開始工作時)CS和IP被設(shè)置為CS=FFFFH,IP=0000H。即在8086PC機剛啟動時,CPU從內(nèi)存FFFF0H單元中讀取指令執(zhí)行。FFFF0H單元中的指令是8086PC機開機后執(zhí)行的第一條指令。2.10CS和IP在任何時候,CPU將CS、IP中的內(nèi)容當(dāng)作指令的段地址和偏移地址,用它們合成指令的物理地址,到內(nèi)存中讀取指令碼,執(zhí)行。如果說,內(nèi)存中的一段信息曾被CPU執(zhí)行過的話,那么,它所在的內(nèi)存單元必然被CS:IP指向過。2.11修改CS、IP的指令在CPU中,程序員能夠用指令讀寫的部件只有寄存器,程序員可以通過改變寄存器中的內(nèi)容實現(xiàn)對CPU的控制。CPU從何處執(zhí)行指令是由CS、IP中的內(nèi)容決定的,程序員可以通過改變CS、IP中的內(nèi)容來控制CPU執(zhí)行目標(biāo)指令。我們?nèi)绾胃淖僀S、IP的值呢?2.11修改CS、IP的指令8086CPU必須提供相應(yīng)的指令先回想我們?nèi)绾涡薷腁X中的值?mov指令不能用于設(shè)置CS、IP的值,8086CPU沒有提供這樣的功能。8086CPU為CS、IP提供了另外的指令來改變它們的值:轉(zhuǎn)移指令如何修改AX中的值?mov指令如:movax,123mov指令可以改變8086CPU大部分寄存器的值,被稱為傳送指令。能夠通過mov指令改變CS、IP的值嗎?Return2.11修改CS、IP的指令同時修改CS、IP的內(nèi)容: jmp段地址:偏移地址 jmp2AE3:3 jmp3:0B16 功能:用指令中給出的段地址修改CS,偏移地址修改IP。2.11修改CS、IP的指令僅修改IP的內(nèi)容: jmp某一合法寄存器 jmpax(類似于movIP,ax) jmpbx 功能:用寄存器中的值修改IP。問題分析:CPU運行的流程內(nèi)存中存放的機器碼和對應(yīng)匯編指令情況:(初始:CS=2000H,IP=0000H)問題分析結(jié)果:(1)movax,6622(2)jmp1000:3(3)movax,0000(4)movbx,ax(5)jmpbx(6)movax,0123H(7)轉(zhuǎn)到第(3)步執(zhí)行2.12代碼段對于8086PC機,在編程時,可以根據(jù)需要,將一組內(nèi)存單元定義為一個段。可以將長度為N(N≤64KB)的一組代碼,存在一組地址連續(xù)、起始地址為16的倍數(shù)的內(nèi)存單元中,這段內(nèi)存是用來存放代碼的,從而定義了一個代碼段。2.12代碼段這段長度為10字節(jié)的字節(jié)的指令,存在從123B0H~123B9H的一組內(nèi)存單元中,我們就可以認(rèn)為,123B0H~123B9H這段內(nèi)存單元是用來存放代碼的,是一個代碼段,它的段地址為123BH,長度為10字節(jié)。例如:2.12代碼段如何使得代碼段中的指令被執(zhí)行呢?將一段內(nèi)存當(dāng)作代碼段,僅僅是我們在編程時的一種安排,CPU并不會由于這種安排,就自動地將我們定義得代碼段中的指令當(dāng)作指令來執(zhí)行。CPU只認(rèn)被CS:IP指向的內(nèi)存單元中的內(nèi)容為指令。所以要將CS:IP指向所定義的代碼段中的第一條指令的首地址。如剛才的CS=123BH,IP=0000H。2.9節(jié)~2.12節(jié)小結(jié)1、段地址在8086CPU的寄存器中存放。當(dāng)8086CPU要訪問內(nèi)存時,由段寄存器提供內(nèi)存單元的段地址。8086CPU有4個段寄存器,其中CS用來存放指令的段地址。2、CS存放指令的段地址,IP存放指令的偏移地址。8086機中,任意時刻,CPU將CS:IP指向的內(nèi)容當(dāng)作指令執(zhí)行。2.9節(jié)~2.12節(jié)小結(jié)(續(xù))3、8086CPU的工作過程:(1)從CS:IP指向內(nèi)存單元讀取指令,讀取的指令進入指令緩沖器;(2)IP指向下一條指令;(3)執(zhí)行指令。(轉(zhuǎn)到步驟(1),重復(fù)這個過程。)4、8086CPU提供轉(zhuǎn)移指令修改CS、IP的內(nèi)容。檢測點2.3沒有通

溫馨提示

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

最新文檔

評論

0/150

提交評論