版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
匯編語(yǔ)言程序設(shè)計(jì)張緒輝電子教案3.2寄存器型尋址方式寄存器尋址方式:存取數(shù)據(jù)到寄存器,則必須要知道該數(shù)據(jù)存放在哪個(gè)寄存器。確定寄存器的方式稱為寄存器尋址方式。例:MOVAL,30該指令就是將30存到寄存器AL中。該指令的二進(jìn)制的機(jī)器指令是:1011000000011110。該指令的機(jī)器指令格式是1011wrrr,對(duì)比看rrr=000,即8位通用寄存器AL的機(jī)器碼。這種尋址方式比較簡(jiǎn)單,就是在指令的操作數(shù)部分寫(xiě)寄存器的名稱。可用的名稱有:8位的通用寄存器——AH、AL、BH、BL、CH、CL、DH、DL;16位的通用寄存器——AX、BX、CX、DX、SI、DI、BP、SP;16位的段寄存器——CS、DS、SS、ES;【注意】指令指針I(yè)P、標(biāo)志寄存器PSW以及所有標(biāo)志位的代號(hào)CF、ZF、OF等都不能作為寄存器尋址方式的操作數(shù),不允許出現(xiàn)在匯編語(yǔ)言的任何指令中。另外,匯編語(yǔ)言還規(guī)定,不允許用MOV等具有賦值功能的指令修改CS的值,也就是說(shuō),類(lèi)似于“MOVCS,30”試圖對(duì)CS賦值的指令在匯編語(yǔ)言中是不允許的。3.3內(nèi)存型尋址方式內(nèi)存是存放數(shù)據(jù)的主要部件,內(nèi)存以字節(jié)為最小的存取單位,內(nèi)存的標(biāo)識(shí)是內(nèi)存地址,所以存取內(nèi)存的數(shù)據(jù)首先就是要確定數(shù)據(jù)存放在內(nèi)存的哪個(gè)內(nèi)存字節(jié)中,即確定內(nèi)存地址,確定內(nèi)存地址的方式稱為內(nèi)存尋址方式。存型尋址又細(xì)分為5種具體情況,分別稱為直接尋址、寄存器間接尋址、寄存器相對(duì)尋址、基址變址和相對(duì)基址變址。段寄存器的確定有兩種情況,即缺省段寄存器和非缺省段寄存器。3.3.1直接尋址方式操作數(shù)的偏移地址在指令中直接寫(xiě)明,在程序執(zhí)行時(shí),在取得指令時(shí)就可得到操作數(shù)在內(nèi)存邏輯地址的偏移地址,直接用這個(gè)偏移地址與段寄存器的內(nèi)容進(jìn)行地址加法,即可獲得操作數(shù)在內(nèi)存的物理地址,此時(shí)才能獲得操作數(shù)。我們把以這種得到偏移地址的方式稱為直接尋址方式。在匯編語(yǔ)言中,這個(gè)偏移地址通常以變量的形式出現(xiàn),在指令中就是直接寫(xiě)變量的名字。設(shè)buf是已經(jīng)定義的字節(jié)型變量,指令“MOVAL,[buf]”中源操作數(shù)尋址方式就是直接尋址。用方括號(hào)把變量名字括起來(lái)是直接尋址的基本寫(xiě)法。上述指令中的“[buf]”表示以變量buf對(duì)應(yīng)的偏移地址和缺省段寄存器中的值作為完整的邏輯地址,操作數(shù)在邏輯地址所確定的內(nèi)存單元中。假定上述指令中變量buf的缺省段寄存器是DS,執(zhí)行上述指令時(shí)DS的值是1234H,buf的偏移地址是123H,該指令的二進(jìn)制機(jī)器指令是10001010000001100010001100000001(十六進(jìn)制8A062301H匯編源程序中直接尋址一般形式是“[變量±數(shù)值]”的寫(xiě)法,匯編程序在翻譯匯編源程序先找出變量名所對(duì)應(yīng)的偏移地址,再與另一個(gè)數(shù)值相加減,計(jì)算結(jié)果作為操作數(shù)的偏移地址,以直接尋址方式翻譯到機(jī)器指令中。這個(gè)結(jié)果在匯編程序翻譯源程序時(shí)就能直接得到。3.3.2寄存器間接尋址方式操作數(shù)的偏移地址存放在寄存器,在指令中寫(xiě)明從存放偏移地址的寄存器即可。因此在匯編程序翻譯匯編源程序就不能直接得到偏移地址了,而必須在程序執(zhí)行時(shí)從該寄存器中取得偏移地址。此時(shí)寄存器中存放的數(shù)據(jù)不是操作數(shù),而是操作數(shù)在內(nèi)存中邏輯地址的偏移地址,因此從該寄存器中取得的數(shù)據(jù)是偏移地址,再和段寄存器內(nèi)容進(jìn)行地址加法運(yùn)算才能得到操作數(shù)在內(nèi)存的物理地址,此時(shí)才能獲得操作數(shù)。我們把以這種得到偏移地址的方式稱為寄存器間址尋址方式。操作數(shù)的寄存器間址尋址方式的寫(xiě)法是以該寄存器的名字加上方括號(hào)(以區(qū)別寄存器型尋址方式)。這表示寄存器的內(nèi)容作為偏移地址,而不是參與操作的數(shù)據(jù)本身,操作數(shù)需要到內(nèi)存中去找。注意與寄存器尋址方式相區(qū)分。MOVAL,[BX]MOVAL,[SI]MOVAL,[BP]假定指令MOVAL,[BX]中寄存器BX中存放的數(shù)據(jù)是123H,BX對(duì)應(yīng)的缺省段寄存器是DS,執(zhí)行該指令時(shí)DS的值是1234H,由于在程序的執(zhí)行過(guò)程中,寄存器的內(nèi)容是可變的,所以程序中欲使用的內(nèi)存操作數(shù)在編寫(xiě)程序時(shí)不能確定,而必須根據(jù)程序的執(zhí)行情況取得該操作數(shù)。較直接尋址方式而言,這種寄存器間址的尋址方式解決了程序執(zhí)行過(guò)程中動(dòng)態(tài)讀寫(xiě)內(nèi)存數(shù)據(jù)。3.3.3寄存器相對(duì)尋址方式寄存器間址尋址方式中從間址寄存器中獲得的數(shù)據(jù)是偏移地址,是相對(duì)段地址的偏移地址。如果偏移地址不是從間址寄存器中獲得的數(shù)據(jù),而是將該數(shù)據(jù)與一個(gè)16位的數(shù)據(jù)進(jìn)行ALU的加法運(yùn)算得到加的結(jié)果,把這個(gè)相加的結(jié)果作為偏移地址,再和段寄存器內(nèi)容進(jìn)行地址加法運(yùn)算才能得到操作數(shù)在內(nèi)存的物理地址,此時(shí)就能獲得操作數(shù)。我們把以這種得到偏移地址的方式稱為寄存器相對(duì)尋址方式。操作數(shù)的寄存器相對(duì)尋址方式的寫(xiě)法是以該方括號(hào)內(nèi)填寫(xiě)寄存器的名字加一個(gè)字型數(shù)據(jù),該字型數(shù)據(jù)可以是變量名,也可以是一個(gè)數(shù)值,也可以是一個(gè)數(shù)值表達(dá)式。其中的方括號(hào)不能省略,方括號(hào)中不允許出現(xiàn)一個(gè)變量減一個(gè)寄存器的寫(xiě)法。(1)MOVAL,[buf+SI](2)MOVAL,buf[DI](3)MOVAL,[buf+BP](4)MOVAL,buf[BX](5)MOVAL,[BX+15](6)MOVAL,[BX+buf]假定指令MOVAL,[BX+15]中寄存器BX中存放的數(shù)據(jù)是123H,BX對(duì)應(yīng)的缺省段寄存器是DS,執(zhí)行該指令時(shí)DS的值是1234H?!纠?.1】設(shè)變量bufl和buf2定義在同一個(gè)段中,偏移地址分別是102H和3ACH,寄存器BX的值是3000H。試計(jì)算下列各指令中源操作數(shù)的偏移地址值。MOVAL,[bufl+BX]MOVAL,[BX+13]MOVAL,[BX+bufl-buf2]MOVAL,[buf2+BX-4000H]3.3.4基址變址尋址方式這種尋址方式是用一個(gè)基址寄存器與一個(gè)變址寄存器的值相加,計(jì)算結(jié)果作為操作數(shù)的偏移地址。如果加法運(yùn)算的最高位向前有進(jìn)位則被忽略。書(shū)寫(xiě)形式是用加號(hào)把兩個(gè)寄存器連接起來(lái),并加上方括號(hào),稱為基址變址尋址方式。匯編語(yǔ)言的語(yǔ)法規(guī)定,必須用一個(gè)基址寄存器與一個(gè)變址寄存器相加。基址寄存器只有BX和BP,變址寄存器只有SI和DI組合起來(lái)只可能出現(xiàn)4種情況。MOVAL,[BX+SI]MOVAL,[BX+DI]MOVAL,[BP+SI]MOVAL,[BP+DI]匯編語(yǔ)言的語(yǔ)法還允許把基址變址方式中的兩個(gè)寄存器分別寫(xiě)在兩個(gè)方括號(hào)中一起不用加號(hào)“+”。假定指令MOVAL,[BX+SI]中寄存器BX中存放的數(shù)據(jù)是123H,寄存器SI中存放的數(shù)據(jù)是23H,對(duì)應(yīng)的缺省段寄存器是DS,執(zhí)行該指令時(shí)DS的值是1234H3.3.5基址變址相對(duì)尋址方式這種尋址方式是把一個(gè)基址寄存器和一個(gè)變址寄存器的值以及一個(gè)字型數(shù)據(jù)三者相加,結(jié)果作為操作數(shù)的偏移地址。字型數(shù)據(jù)可以是一個(gè)變量,也可以是一個(gè)數(shù)值。在基址變址相對(duì)尋址方式中的基址寄存器和變址寄存器的組合方式完全同基址變址尋址方式的規(guī)定,再加一個(gè)字型數(shù)值或字型數(shù)值表達(dá)式,共有8種組合形式。MOVAL,[buf+BX+SI]MOVAL,[buf+BX+DI]MOVAL,[buf+BP+SI]MOVAL,[buf+BP+DI]MOVAL,[BX+SI+buf]MOVAL,[BX+DI+buf]MOVAL,[BP+SI+buf]MOVAL,[BP+DI+buf]與基址變址類(lèi)似,相對(duì)基址變址在書(shū)寫(xiě)時(shí)也可以用兩個(gè)方括號(hào)把基址寄存器和變址寄存器括起來(lái),并且不寫(xiě)加號(hào)“+”?!ぜ俣ㄖ噶頜OVAL,[BX+SI+15]中寄存器BX中存放的數(shù)據(jù)是123H,寄存器SI中存放的數(shù)據(jù)是23H,對(duì)應(yīng)的缺省段寄存器是DS,執(zhí)行該指令時(shí)DS的值是1234H,3.3.6段寄存器缺省段寄存器(1)如果尋址方式的組合中是開(kāi)始的第一項(xiàng)是變量,例如[BUF]、[BUF+BX]、[BUF+BX+SI]等,則缺省段寄存器是DS。(2)如果尋址方式的組合中是開(kāi)始的第一項(xiàng)是寄存器,例如[BX]、[BP]、[SI]、[BP]、[DI]、[BX+SI]、[BP+SI]、[BX+SI+BUF]、[BP+SI+BUF]等,則缺省段寄存器的確定看第一個(gè)寄存器。具體規(guī)定有如下兩種情況:①BP寄存器對(duì)應(yīng)的缺省段寄存器是SS。②BX、SI、DI寄存器對(duì)應(yīng)的缺省段寄存器是DS。(3)如果尋址方式的組合中是開(kāi)始的第一項(xiàng)是具體數(shù)值,例如[15]、[15+BX]、[15+BX+SI]、[15+BP+SI]等。如果該組合中只有一項(xiàng)數(shù)值,沒(méi)有其它項(xiàng),則缺省段寄存器就是DS;如果有其它項(xiàng),就看第二項(xiàng),如果第二項(xiàng)是變量,此時(shí)按第1條原則確定缺省段寄存器,即DS;如果第二項(xiàng)是寄存器,此時(shí)按第2條原則確定缺省段寄存器,即是寄存器BP,則缺省段寄存器是SS,是BX、SI、DI則缺省段寄存器是DS非缺省段寄存器非缺省段寄存器的使用也稱“段跨越”。非缺省段寄存器就是在邏輯地址中明確段寄存器,此時(shí)段地址就是指定的段寄存器。例如邏輯地址DS:[BP]到物理地址的轉(zhuǎn)換就是數(shù)據(jù)段寄存器DS的數(shù)據(jù)與棧基地址寄存器BP的數(shù)據(jù)經(jīng)地址加法器運(yùn)算,而不是采用地址段寄存器SS。段寄存器內(nèi)容的填寫(xiě)段地址填寫(xiě)到段寄存器具體填寫(xiě)方法如下:(1)代碼段寄存器CS的內(nèi)容在程序啟動(dòng)運(yùn)行之前由系統(tǒng)將代碼段的段地址填寫(xiě)。(2)堆棧段寄存器SS的內(nèi)容在程序啟動(dòng)運(yùn)行之前由系統(tǒng)將堆棧段的段地址填寫(xiě)。(3)數(shù)據(jù)段寄存器DS和附加數(shù)據(jù)段寄存器ES的內(nèi)容由用戶程序填寫(xiě)。3.4外部設(shè)備型尋址方式計(jì)算機(jī)需要從外設(shè)獲得數(shù)據(jù),也需要將數(shù)據(jù)通過(guò)外設(shè)輸出數(shù)據(jù),從哪個(gè)外設(shè)獲得數(shù)據(jù),從哪個(gè)外設(shè)輸出數(shù)據(jù)呢?同樣的道理,必須找到這個(gè)外設(shè),確定外設(shè)的方式就是外設(shè)型尋址方式。8086/8088系統(tǒng)中把內(nèi)存的每個(gè)字節(jié)進(jìn)行編號(hào),形成內(nèi)存的物理地址,類(lèi)似地也把控制各種外部設(shè)備的接口中的各部件編排號(hào)碼,每個(gè)號(hào)碼對(duì)應(yīng)的一個(gè)外設(shè)部件稱為一個(gè)外設(shè)端口,這個(gè)號(hào)碼就是外設(shè)地址,又稱外設(shè)端口號(hào)。外設(shè)是多種多樣的,各自的接口也不同,但接口中的各個(gè)部件卻有一個(gè)共同特點(diǎn),就是能夠以1字節(jié)為基本單位存放來(lái)自系統(tǒng)總線的數(shù)據(jù),或者向系統(tǒng)總線提供數(shù)據(jù)。
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年絨布帶帽針織衫項(xiàng)目可行性研究報(bào)告
- 2025年電磁式節(jié)能開(kāi)關(guān)配匙牌項(xiàng)目可行性研究報(bào)告
- 2025年充氣大棚項(xiàng)目可行性研究報(bào)告
- 多層次加密技術(shù)應(yīng)用-深度研究
- 2025年P(guān)P貯槽項(xiàng)目可行性研究報(bào)告
- 2025至2030年中國(guó)耐磨地面養(yǎng)護(hù)劑數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年真空吸貼手機(jī)殼鏡片膠紙治具項(xiàng)目投資價(jià)值分析報(bào)告
- 植物療愈的力量家養(yǎng)植物的心理健康效應(yīng)
- 2025至2030年杜仲平壓膠囊項(xiàng)目投資價(jià)值分析報(bào)告
- 醫(yī)藥零售行業(yè)競(jìng)爭(zhēng)態(tài)勢(shì)-深度研究
- 小學(xué)六年級(jí)數(shù)學(xué)上冊(cè)《簡(jiǎn)便計(jì)算》練習(xí)題(310題-附答案)
- 地理標(biāo)志培訓(xùn)課件
- 培訓(xùn)如何上好一堂課
- 高教版2023年中職教科書(shū)《語(yǔ)文》(基礎(chǔ)模塊)下冊(cè)教案全冊(cè)
- 2024醫(yī)療銷(xiāo)售年度計(jì)劃
- 人教版英語(yǔ)七年級(jí)上冊(cè)閱讀理解專(zhuān)項(xiàng)訓(xùn)練16篇(含答案)
- 面向機(jī)器人柔順操作的力位精準(zhǔn)控制方法
- 七年級(jí)下冊(cè)英語(yǔ)單詞默寫(xiě)表直接打印
- 瓦斯防治八招培訓(xùn)課件
- 《他汀長(zhǎng)期治療》課件
- 糖尿病性視網(wǎng)膜病變匯報(bào)演示課件
評(píng)論
0/150
提交評(píng)論