第七章 更靈活的定位內存地址的方法
阿新 • • 發佈:2018-08-20
xid 字符 一段 描述 靈活 方式 轉換 兩個 定位
引言
前面,我們用 [0] 、[bx] 的方法,在訪問內存的指令中,定位內存單元的地址。這一章中,我們主要講解一些更靈活的定位內存地址的方法和相關的編程方法。
我們的講解將通過具體的問題來進行。
7.1 and 和 or 指令
7.2 關於ASCII碼
7.3 以字符形式給出的數據
7.4 大小寫轉換的問題
7.5 [bx+idata]
在前面,我們可以用 [bx] 的方式來指明一個內存單元,我們還可以用一種更為靈活的方式來指明內存單元:
[bx+idata] 表示一個內存單元,它的偏移地址為 (bx)+idata(bx中的數值加上idata)
我們看一下指令 mov ax, [bx+200] 的含義:
- 將一個內存單元的內容送入 ax,這個內存單元的長度為2字節(字單元),存放一個字,偏移地址為 bx 中的數值加上200,段地址在 ds 中。
- 數學化的描述為:(ax) = ((ds)*16+(bx)+200)
指令 mov ax, [bx+200] 也可以寫成如下格式(常用):
- mov ax, [200+bx]
- mov ax, 200[bx]
- mov ax, [bx].200
7.6 用[bx+idata]的方式進行數組的處理
數組元素在內存中的組織是一段地址連續的內存單元。
7.7 SI 和 DI
- SI和DI是8086CPU中和bx功能相近的寄存器,但是SI和DI不能夠分成兩個8位寄存器來使用(SI和DI在8086CPU中是16位寄存器)。
7.8 [bx+si] 和 [bx+di]
7.9 [bx+si+idata] 和 [bx+di+idata]
註:mov ax,[bx+2+si]
這句的意思是把內存中偏移地址 bx+2+si 處的兩個內存單元(雙字節)內容拷貝到 ax 寄存器中。因為 ax 是16位寄存器,以後的學習中,記住拷貝的長度和相關寄存器的長度一致。
7.10 不同的尋址方式的靈活應用
第七章 更靈活的定位內存地址的方法