《組合語言》學習筆記 七 八章

2021-07-04 05:54:38 字數 2119 閱讀 2064

第七章

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