組合語言 第7章 更靈活的定位記憶體位址的方法

2021-08-31 02:57:39 字數 2197 閱讀 9235

7.1 and和or 指令

(1)and 指令:邏輯與指令,按位進行與運算。

(2)or 指令:邏輯或指令,按位進行或運算。

7.2 關於ascii碼

ascii是一種編碼方案,就是一套規則,它約定了用什麼樣的資訊來表示現實物件。例:61h 表示「a」。

7.3以字元形式給出的資料

用』…』 的方式指明資料時以字元的形式給出的,編譯器把它們轉化為相對應的ascii嗎。

7.4 大小寫轉換的問題

q:將datasg中的第一字串轉化為大寫,第二個字串轉化為小寫?

字母的大、小寫字元對應的ascii碼對比:

規律:大寫字母+20h=小寫字母,小寫字母-20h=大寫字母;

就2進製形式來看,除第5位(位數從0開始計算)外,大、小寫字母的其它各位都一樣。即:大寫字母第5位為0,小寫字母第5位為1.

程式如下:

mov ax,[bx+200]的含義:

數學化描述:ax=((ds)*16+(bx)+200)

將乙個記憶體單元的內容送入ax,這個記憶體單元的長度為2個位元組(字單元),存放乙個字,偏移位址為bx中的數值+200,段位址在ds中。

7.6 用[bx+idata]的方式進行陣列的處理

7.4節中的程式寫成如下形式:

7.7 si和di

si和di 是8086cpu中和bx功能相近的暫存器,si和di 不能分成2個8位的暫存器來使用。

q:用si 和 di 實現將字串『welcome to masm!』複製到它後面的資料區中?

7.8[bx+si] 和 [bx+di]

[bx+si]表示乙個記憶體單元,它的偏移位址為 (bx)+(si),即bx中的數值+si中的數值。

指令mov ax,[bx+si] 含義如下:

將乙個記憶體單元的內容送入ax,這個記憶體單元的長度為2位元組(字單元),存放乙個字,偏移位址為bx中的數值加上si中的數值,段位址在ds中。

數位化描述:(ax)=((ds)*16+(bx)+(si))

也可寫成mov ax,[bx] [si]

7.9 [bx+si+idata]和[bx+di+idata]

[bx+si+idata] 表示乙個記憶體單元,它的偏移位址為(bx)+(si)+idata,即bx中的數值+si中的數值+idata。

指令mov ax,[bx+si+idata] 的含義如下:

將乙個記憶體單元的內容送入ax,這個記憶體單元的長度為2位元組(字單元),存放乙個字,偏移位址為bx中的數值加上si中的數值再加上idata,段位址在ds中。

數位化描述:(ax)=((ds)*16+(bx)+(si)+idata)

該指令也可寫成如下形式:

mov ax,[bx+200+si]

mov ax,[200+bx+si]

mov ax,200[bx] [si]

mov ax,[bx].200 [si]

mov ax,[bx] [si].200

7.10 不同的定址方式的靈活應用

q:將datasg段中每個單詞改為大寫字母?

用棧暫存外層迴圈cx 值

筆記 組合語言 第7章 更靈活地定位記憶體的方法

7.1 and 和 or 指令 1 and 指令 邏輯與指令,按位進行與運算。示例 mov al,01100011b and al,00111011b 執行結果 al 00100011b 2 or 指令 邏輯或指令,按位進行或運算。示例 mov al,01100011b or al,00111011...

組合語言學習筆記(7) 更靈活地定位記憶體

1 and指令 邏輯與指令,按位進行與運算,例如 mov al,01100011b and al,00111011b計算後的al結果為 00100011b 計算過程 0 1 1 0 0 0 1 1 b 0 0 1 1 1 0 1 1 b 0 0 1 0 0 0 1 1 b可以看出,邏輯與運算兩個二進...

組合語言讀書筆記(7 更靈活的定位記憶體位址的方法)

組合語言 第三版,王爽 讀書筆記 and指令 邏輯與,按位進行與運算and al,00111011b or指令 邏輯或,按位進行或運算or al,00100000b 用 的方式指明資料是以字元的形式給出的,編譯器將他們轉化位ascii碼 例如db unix 相當於db 75h,6eh,49h,58h...