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...