1. 程式人生 > >第七章 更靈活的定位內存地址的方法

第七章 更靈活的定位內存地址的方法

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 不同的尋址方式的靈活應用

第七章 更靈活的定位內存地址的方法