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

2022-03-06 17:06:58 字數 1554 閱讀 3295

7.1 and 和 or 指令

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

示例:mov al,01100011b

and al,00111011b

執行結果:(al)=00100011b

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

示例:mov al,01100011b

or al,00111011b

執行結果:(al)=01111011b

7.2 關於ascii碼

簡單的說,所謂編碼方案,就是一套規則,它約定了在計算機中,用什麼樣的資訊來表示現實物件。ascii就是一種編碼方案。

7.3 以字元形式給出的資料

我們可以在匯程式設計序中,用'......'的形式指明資料是以字元的形式給出的,編譯器將把它們轉化為相對應ascii碼。

示例程式:

assume cs:code,ds:data

data segment

db 'unix'

db 'fork'

data ends

code segment

start:mov al,'a'

mov bl,'b'

mov ax,4c00h

int 21h

code ends

end start

注:程式中,「db」表示定義位元組型資料,「db 'unix'」表示「db 75h,6eh,49h,58h」

7.4 大小寫轉換問題

tips:「a」的十六進製制編碼為「41h」,二進位制編碼為「01000001b」,「a」的十六進製制編碼為「61h」,二進位制編碼為「01100001b」,所有英文本母的二進位制編碼中,從左數第三位為「0」的,是大寫字母,為「1」的,是小寫字母,可利用and或or的指令對字母進行大小寫轉換。

7.5 [bx+idata]

[bx+idata]也可以寫成idata[bx]或者[bx].idata,表示((ds)*16+(bx)+idata)

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

7.7 si和di

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

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

也可以寫為:[bx][si]和[bx][di]

[bx+si]=((ds)*16+(bx)+(si))

[bx+di]=((ds)*16+(bx)+(di))

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

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

(1) [idata]用乙個常量來表示位址,可用於直接定位乙個記憶體單元

(2) [bx]用乙個變數來表示記憶體位址,可用於間接定位乙個記憶體單元

(3) [bx+idata]用乙個變數和常量表示位址,可在乙個起始位址的基礎上用變數間接定位乙個記憶體單元

(4) [bx+si]用兩個變數表示位址

(5) [bx+si+idata]用兩個變數和乙個常量表示位址

注:一般來說,在需要暫存資料的時候,我們都應該使用棧。

實驗6 實踐課程中的程式

組合語言學習筆記(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章 更靈活的定位記憶體位址的方法

7.1 and和or 指令 1 and 指令 邏輯與指令,按位進行與運算。2 or 指令 邏輯或指令,按位進行或運算。7.2 關於ascii碼 ascii是一種編碼方案,就是一套規則,它約定了用什麼樣的資訊來表示現實物件。例 61h 表示 a 7.3以字元形式給出的資料 用 的方式指明資料時以字元的...

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

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