關(guān)于在808688內(nèi)存尋址方式_第1頁
關(guān)于在808688內(nèi)存尋址方式_第2頁
關(guān)于在808688內(nèi)存尋址方式_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、關(guān)于在8086/88內(nèi)存尋址方式 在學(xué)匯編時(shí),很多初學(xué)者對(duì)PC的尋址方式和很不理解,甚至是很難理解。的確,這方面的知識(shí)是很抽象的,需要比較強(qiáng)的空間想象能力。尤其是我們?cè)谳斎胱址畷r(shí),那這些字符是如何進(jìn)行排列的呢?對(duì)于,這個(gè)問題,我相信很多初學(xué)者也是很難想象是如何排列。但是,我可以這樣比喻:內(nèi)存就是有很多棟“樓房”,“樓房”又是由“單元號(hào)”,“門戶號(hào)”組成,那“樓房”就相當(dāng)于內(nèi)存地址的段地址,“單元號(hào)”就相當(dāng)于內(nèi)存的的 偏移地址,“門戶號(hào)(家)”就相當(dāng)于“變地址”,而每個(gè)單元有16個(gè)"門戶號(hào)(家)",又當(dāng)我們找到"門戶號(hào)(家)"后,走進(jìn)這個(gè)&qu

2、ot;門戶號(hào)(家)"就會(huì)見到里面會(huì)有"人",而我們所說的人就是寄存器所指的"內(nèi)容"了,我畫個(gè)圖給你們看就會(huì)一目了然了。用DEBUG的D命令得出這樣的效果:|->0B1F就是"樓房"->段地址 |     |->右邊的就是"單元號(hào)"->偏移地址|     |     |        &

3、#160;   |->這部分就是"門戶號(hào)"->變地址|     |          |<->|0B1F:0100 00 80 FF 02 75 05 C6 46-00 00 C3 E8 8C EB B4 3B0B1F:0110 CD 21 72 39 8B FA 33 C0-8B C8 49 26 34 00 0E 0B看完這個(gè)圖之后,是不是就很明了呢?但是聰明的人就會(huì)有疑問,那我們?cè)趺醋哌M(jìn)"

4、;門戶號(hào)(家)"呢?問得好,所以了為了可以走進(jìn)"門戶號(hào)(家)",就出現(xiàn)了一個(gè)叫做"尋址方式"的概念!說白了,就是教你如何找到這個(gè)"門戶號(hào)(家)".呵呵!好現(xiàn)在都明白了嗎?那你們就看看我是怎么理解PC的尋址方式(通俗易懂)。在這我就只介紹比較難理解的: 1:寄存器直接尋址: 你就想成:其實(shí)你已經(jīng)站在你要找的"門戶號(hào)(家)"面前了,直接敲門進(jìn)去就OK了!例子: MOV AX,2000H MOV AX,2000H ->2000H為存放操作數(shù)單元號(hào)的符號(hào)地址上面兩者是不等效的2:寄存器間接尋址方式:你就想成

5、:你已經(jīng)站在你要找的"門戶號(hào)(家)"的"單元號(hào)",你要找到它,必須知道它在當(dāng)前"單元號(hào)"幾樓.假如它在6樓,那你就上到6樓就OK了!注意,最高只有16樓,因?yàn)槭裁茨?那就用DEBUG的D命令看看呀,慢慢數(shù)哦,呵呵!例子: MOV AX,BX計(jì)算公式: 物理地址=16d*(DS)+(BX)物理地址=16d*(DS)+(SI)物理地址=16d*(DS)+(DI)物理地址=16d*(SS)+(BP)3:寄存器相對(duì)尋址方式:你就想成:你要找的"門戶號(hào)(家)"其實(shí)就在你家的樓上或者樓下,你要找到它,就 必須知道它在你樓上幾樓

6、,或者在樓下幾樓!就OK了!例子: MOV AX,COUNTSIMOV AX,COUNT+SI其中 COUNT為位移量的符號(hào)地址計(jì)算公式: 物理地址=16d*(DS)+(BX)+8位位移量或+(SI) 或 16位位偏移量或+(DI)物理地址=16d*(SS)+(BP)+8位偏移量4:基址變址尋址方式:你就想成:你要找的"門戶號(hào)(家)"是跟住在同一棟樓的不同"單元號(hào)",你要找到它,就必須知道它是該棟的哪個(gè)"單元號(hào)",并且住在幾樓!那樣你就可以找到它了 !例子: MOV AX,BXDIMOV AX,BX+DI計(jì)算公式: 物理地址=16d*

7、(DS)+(BX)+(SI)或+(DI)物理地址=16d*(SS)+(BP)+(SI)或+(DI)5:相對(duì)基址變址尋址方式:你就想成:你就想成:你要找的"門戶號(hào)(家)"是跟住在同一棟樓的不同"單元號(hào)",它比你高幾層樓或者低幾層樓,然后用的你目前的樓數(shù)+/-就可以得出你要找的住在幾樓了!例子: MOV,AX,MASKBXSIMOV,AX,MASKBX+SIMOV,AX,MASK+BX+SI以上三個(gè)例子是等效的!計(jì)算公式: 物理地址=16d*(DS)+(BX)+(SI)+8位位移量或+(DI) 或 16位位偏移量物理地址=16d*(SS)+(BP)+(SI)

8、+8位位移量或+(DI) 或 16位位偏移量-呵呵,終于寫完了這篇教程,好累哦! 是不是覺得我的思維很另類呀,要?jiǎng)?chuàng)新呀!書上太理論了,我就創(chuàng)新一個(gè),不知道你們看得懂嗎?呵呵,反正你們不要!#)(#$*!(我就行了,我很努力寫了!下面,我舉個(gè)程序例子,讓你們加深印象!-編程步驟:1: 建立緩沖區(qū),為輸入字符串(最多能輸入9個(gè))2: 取緩沖區(qū)的首地址,以便后面進(jìn)行"寄存器間接尋址方式"3: 利用"寄存器間接尋址方式"取得實(shí)際輸入字符個(gè)數(shù),以便確認(rèn)循環(huán)次數(shù)4: 利用"寄存器間接尋址方式"輸入字符串的最后一個(gè)字符5: 利用LOOP指令和2號(hào)顯

9、示功能來進(jìn)行倒著顯示-;程序功能:任意輸入幾個(gè)字符(最多能輸入9個(gè)),按回車則倒著輸出!data segmentuser_string db 10,0,10 dup(?)data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,ax lea dx,user_string ;建立輸入字符串緩沖區(qū)mov ah,0ahint 21hxor si,sixor bx,bxmov bx,dx mov cx,bx+si+1 ;看這個(gè)就是"寄存器間接尋址方式"xor ch,ch ;其目的就是取實(shí)際輸入字符個(gè)數(shù)mov di,c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論