組合語言(第3版)王爽 第八章學習內容

2021-08-14 19:42:15 字數 1607 閱讀 4517

只要在中使用暫存器bp,而指令中沒有顯性地給出段位址,段位址就預設在ss中。

a) mov ax,[bp] 含義:(ax) = ((ss)*16+(bp))

b) mov ax,[bp+idata] 含義:(ax) = ((ss)*16+(bp)+idata)

c) mov ax,[bp+si] 含義:(ax) = ((ss)*16+(bp)+(si))

d) mov ax,[bp+si+idata] 含義:(ax) = ((ss)*16+(si)+idata)

定址方式:

a) 直接定址:

i. 表示式: [idata]

ii. 直接根據常量定址,在c語言中表示為arr[0]

b) 暫存器間接定址:

i. 表示式:[bx]、[si]、[di]、[bp]

ii. 根據暫存器的資料定址,在c語言中表示為arr[i]

c) 暫存器相對定址:

i. 表示式:[bx+idata]、[si+idata]、[di+idata]、[bp+idata]

ii. 根據暫存器和常量定址,在c語言中表示為arr[i+10]

d) 基址變址定址:

i. 表示式:[bx+si+idata]、[bx+di+idata]、[bp+si+idata]、[bp+di+idata]

ii. 根據兩個暫存器和乙個常量定址,在c語言中表示為arr[i+j+5]

要操作的資料的長度:

a) 如果操作符兩邊有暫存器,以暫存器的大小確定操作的是字還是位元組。

b) 如果沒有暫存器,可以自行指定:

i. mov word ptr [2],1

ii. mov byte ptr [2],1

c) 有些指定預設指定了訪問的是字還是位元組:

i. 比如push [1000h]預設操作的是字。

div指令

data segment中:

a) db(data byte)定義的是位元組型資料,每1個資料佔1個位元組。

b) dw(data word)定義的是字型資料,每1個資料佔1個字,即2個位元組。

c) dd(data double word)定義的是雙字型資料,每1個資料佔2個字,即4個位元組。

問題8.1

assume

cs:codesg, ds

:datasg

datasg

segment

dd 100001

dw 100

dw 0

datasg

ends

codesg

segment

start:

movax,datasg

movds,ax

movdx,ds:[2] ;注意高位在低位後面

movax,ds:[0]

divword

ptrds:[4]

movds:[6],ax

codesg

ends

endstart

彙編基礎 筆記6(《組合語言》第八章)

資料處理 1.要處理的資料在什麼地方 指令執行前,可能是 cpu內部 暫存器 指令緩衝器 記憶體 埠 2.資料多長?bx,si,di,bp 只有這四個可以用在中進行定址 且只能1.單個出現 2.以四個組合出現 bx si,bx di,bp si,bp di 中出現bp,則預設段位址為ss push指...

組合語言 王爽第6章

在作業系統的環境中,合法通過作業系統取得的空間都是安全的。程式取得所需要空間的方法有兩種,一是在引導程式的時候為程式分配,二是程式在執行的過程中向系統申請。我們可以用 dw xxh來申請記憶體空間,dw的含義是定義字型資料。dw即 define word 的意思。需要注意的是如果我們直接用dw來申請...

王爽《組合語言》 第3版 實驗七

如下 assume cs codesg,ds data,es table data segment db 1975 1976 1977 1978 1979 1980 1981 1982 1983 db 1984 1985 1986 1987 1988 1989 1990 1991 1992 db 1...