第七章
1.db 'unix'
相當於db 75h,6eh,49h,58h(
可以用單引號括住)
2.mov ax,[bx+200]
把段位址為
ds,偏移位址為
(bx+200)
的記憶體單元的內容
(2bytes)
賦值給ax
也可以寫成
movax,200[bx]
或mov ax,[bx].200 3.
不能直接對
data
段中的元素進行算術運算 如
and [bx],20h
是非法的,應先
mov al,[bx]
and al,0x20h
mov [bx],al
4.si和di
是與bx
功能相近
(用來作下標
)的暫存器
,但其不可分成兩個
8位暫存器使用 5.
更常用[bx+si]
和[bx+di]
來表示乙個記憶體單元
,也可寫成
mov ax,[bx][si]
第八章
1.只有
bx,bp,si,di
這四個暫存器可以
(單獨或組合
)出現在
[...]中(
但是除了
[bx+bp],[si+di] 2.
只要在中使用了暫存器
bp,且指令中沒有顯式給出段位址
,則此時段位址預設取ss
3.對於機器指令這一層
,並不關心資料的值是多少
,只關心指令執行前一刻將要處理的資料所在的位置
指令執行前所要處理的資料可以在三個地方
:cpu內部,
記憶體,埠. 例如:
mov bx,[0]
記憶體的ds:[0]單元
mov bx,ax cpu
內部的ax
暫存器
mov bx,1 cpu
內部的指令緩衝器 4.
定址方式的種類:
[idata],
直接定址
, ea=idata(
彙編中稱為立即數
), sa=ds
[bx],[si],[di],[bp]
暫存器間接定址
sa=ds(
除了[bp])
[bx+idata]
暫存器相對定址
[bx+si]
基址變址定址
[bx+si+idata]
相對基址變址定址 5.
確定資料處理長度的方法 1)
通過暫存器名指明 2)
在位址前用操作符
word ptr
或byte ptr
或dword ptr指明(
類似於強制型別轉換)
3)由操作指令確定,如
push,pop
指令只進行字操作(因此
pop al
是不合法的)
6.一般可以用
[bx+idata+si]
的方式來訪問結構體中的資料, 用
bx定位整個結構體,用
idata
定位結構體中的某乙個資料項,用
si定位該資料項中的某乙個字元/元素
,可以寫成類似於
c語言的形式
bx.10h[si]
7.div
指令的被除數字數決定除數字數
,得數的商存放在低位(如
al或ax),
餘數存放在高位(如
ah或dx)
8.dd
用來定義
dword(32
位,4byte)
的資料(
偽指令)
9.dup
也是乙個偽指令操作符
,用來進行資料的重複,比如
:db 3 dup (0) 若
db 3 dup(0,1,2)
則相當於定義了九個位元組
0,1,2,0,1,2,0,1,2
db 3 dup ('abc','abc')
定義了十八個位元組
'abcabcabcabc...'
組合語言學習筆記
學習參考資料 大灰狼 講彙編 資料匯流排,位址匯流排,控制匯流排。位址匯流排有多少條就決定了cpu最大的記憶體使用量。80386有32位位址匯流排,所以它的定址能力就是4g.暫存器 通用暫存器,段暫存器,ax暫存器 通用暫存器,存放資料。高位位元組ah,低位位元組al。實體地址表示方法 位址加法器,...
組合語言學習筆記
cs ip是指向程式執行的位置 code segment ds 儲存記憶體中取資料的位址,data segment ss sp是指向堆疊的位置 stack segment cx 裡儲存的是loop執行的標誌 loop執行時,cx cx 1,若此時cx裡值為0,則跳出loop,否則繼續loop 初始 ...
組合語言學習筆記
編譯下面的程式,生成列表檔案,觀察標號在機器碼中變成了什麼?小組中的同學都說一說,說出你看到了什麼,說出你的疑問,讓小夥伴們一起解決。下面是程式 這個程式的功能沒有意義,只用於觀察程式中的標號 assume cs codesg,ds datasg datasg segment a db 1,2,3,...