第七章 更靈活的定位內(nèi)存地址的方法_第1頁
第七章 更靈活的定位內(nèi)存地址的方法_第2頁
第七章 更靈活的定位內(nèi)存地址的方法_第3頁
第七章 更靈活的定位內(nèi)存地址的方法_第4頁
第七章 更靈活的定位內(nèi)存地址的方法_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第七章 更靈活的定位內(nèi)存地址的方法以前學(xué)習(xí)的訪問內(nèi)存的方式nmov ax, ds:0020nmov ax, es:0020nmov ax, bxnmov ax, es:bx7.1 and 和 or 指令nand 按位進(jìn)行 邏輯與n該指令可將操作對(duì)象的相應(yīng)位設(shè)為0nor 按位進(jìn)行 邏輯或n該指令可將操作對(duì)象的相應(yīng)位設(shè)為17.2 關(guān)于 ASCII碼7.3 以字符形式給出的數(shù)據(jù)n定義數(shù)據(jù)ndw 0123h, 0abcdhndb 12h, 0efhndb unIXndb abcdndb 75h, 6eh, 49h, 58hndb 61h, 62h, 63h, 64h7.4 大小寫轉(zhuǎn)換問題n問題:n 有

2、如下字符串, data segmentdb BaSicdb iNfOrMaTiOndata endsn將第一個(gè)字符串轉(zhuǎn)化為大寫,第二個(gè)字符串轉(zhuǎn)化為小寫。大、小寫字母ASCII碼的規(guī)律7.5 bx + idatanbx + idata 表示一個(gè)內(nèi)存單元,它的偏移地址是 (bx)+idatanmov ax, bx+200n數(shù)學(xué)化描述為: (ax) = (ds)*16+(bx)+200)nbx + idatanidatabxnbx.idatan例如:nmov ax, bx+200nmov ax, 200bxnmov ax, bx.200問題7.1n2000:1000 BE 00 06 00 00 0

3、0 n指令序列nmov ax, 2000hnmov ds, axnmov bx, 1000hnmov ax, bxnmov cx, bx+1nmov cx, bx+27.6 用bx+idata的方式進(jìn)行數(shù)組的處理n問題:n 將如下數(shù)據(jù)段中的第一個(gè)字符串轉(zhuǎn)化為大寫,第二個(gè)字符串轉(zhuǎn)化為小寫。ndata segment db BaSiC db MinIX data ends7.7 si 和 dinsi 和 di 是8086 CPU 中和bx功能相近的寄存器。nsi 和 di 不能分成兩個(gè)8位寄存器使用。nsi : Source Index 源變址寄存器ndi : Destination Index

4、目的變址寄存器si 和 dinmov bx, 0 mov ax, bxnmov si, 0 mov ax, sinmov di, 0 mov ax, dinmov bx, 0 mov ax, bx+123nmov si, 0 mov ax, si+123nmov di, 0 mov ax, di+123問題:n 用寄存器si和di實(shí)現(xiàn)將字符串welcome to masm復(fù)制到它后面的數(shù)據(jù)區(qū)n數(shù)據(jù)段如下:ndata segment db welcome to masm! db . data ends7.8 bx+si 和 bx+dinbx+si 表示一個(gè)內(nèi)存單元,它的偏移地址為(bx)+(si

5、) (即bx中的數(shù)值加上si中的數(shù)值)。nbx+di 表示一個(gè)內(nèi)存單元,它的偏移地址為(bx)+(di) (即bx中的數(shù)值加上di中的數(shù)值)。bx+si 和 bx+din也可寫成nbxsinbxdin例如nmov ax, bx+sinmov ax, bx+dinmov ax, bxsinmov ax, bxdi問題7.4n用debug查看內(nèi)存,結(jié)果如下 2000:1000 BE 00 06 00 00 00 n寫出下面的程序執(zhí)行后,ax, bx, cx中的內(nèi)容mov ax, 2000hmov ds, axmov bx, 1000hmov si, 0mov ax, bx+siinc simov

6、cx, bx+siinc simov di, siadd cx, bx+di7.9 bx+si+idata和bx+di+idatanbx+si+idata表示一個(gè)內(nèi)存單元,它的偏移地址為(bx)+(si)+idatanbx+di+idata表示一個(gè)內(nèi)存單元,它的偏移地址為(bx)+(di)+idatabx+si+idata和bx+di+idatan也可以寫成如下格式nidatabxsinbx.idatasinbxsi.idatanidatabxdinbx.idatadinbxsi.idatan例如:nmov ax, bx+200+sinmov ax, 200+bx+sinmov ax, 200

7、bxsinmov ax, bx.200sinmov ax, bxsi.200問題7.5n用debug查看內(nèi)存,結(jié)果如下 2000:1000 BE 00 06 00 6A 22 n寫出下面的程序執(zhí)行后,ax, bx, cx中的內(nèi)容mov ax, 2000hmov ds, axmov bx, 1000hmov si, 0mov ax, bx+2+siinc simov cx, bx+2+siinc simov di, siadd cx, bx+2+di7.10 不同尋址方式的靈活應(yīng)用n(1) idata用一個(gè)常量來表示地址,可用于直接定位一個(gè)內(nèi)存單元n(2) bx用一個(gè)變量來表示內(nèi)存地址,可用于間

8、接定位一個(gè)內(nèi)存單元n(3) bx+idata用一個(gè)變量和一個(gè)常量表示地址,可在一個(gè)起始地址的基礎(chǔ)上用變量間接定位一個(gè)內(nèi)存單元n(4) bx+si用兩個(gè)變量表示地址n(5) bx+si+idata用兩個(gè)變量和一個(gè)常量表示地址問題 7.6n編程,將dataseg段中每個(gè)單詞的頭一個(gè)字母改成大寫字母dataseg segmentdb 1. file db 2. edit db 3. search db 4. view db 5. options db 6. help dataseg ends 分析數(shù)據(jù)段中數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)問題 7.7n編程,將dataseg段中每個(gè)單詞改成大寫字母dataseg segmentdb ibm db dec db dos db vax dataseg ends分析數(shù)據(jù)段中數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)代碼片段 mov ax, dataseg mov ds, ax mov bx, 0 mov cx, 4s0: mov si, 0 mov cx, 3 s: mov al, bx+si and al, 11011111b mov bx+si, al inc si loop s add bx, 16 loop s0

溫馨提示

  • 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)論