下面舉一個實現同一功能,採用不同方法的例子。
比如:
dseg segment
data db 1, 2, 3, 4
dseg ends
cseg segment
assume cs:cseg, ds:dseg
start:
mov ax, dseg
mov ds, ax
mov ax, word ptr[data]
mov ah, 4ch
int 21h
cseg ends
end start
因為data是位元組型別,所以如果直接用mov ax, [data]是不行的,要用mov ax, word ptr[data]。
這裡的ptr可以理解為C語言裡的強制型別轉換。
如果用LABEL實現這個功能的話,可以這樣:
wdata label word
此時,wdata與data的起始地址是相同的,但是它的型別是word。
在程式裡,可以直接使用:mov ax, [wdata]
至於this,你可以認為它的功能是和label一樣的。比如:
wdata equ this word
效果和用label的時候一樣。即可以理解為equ this = label
下面舉一個實現同一功能,採用不同方法的例子。
比如:
dseg segment
data db 1, 2, 3, 4
dseg ends
cseg segment
assume cs:cseg, ds:dseg
start:
mov ax, dseg
mov ds, ax
mov ax, word ptr[data]
mov ah, 4ch
int 21h
cseg ends
end start
因為data是位元組型別,所以如果直接用mov ax, [data]是不行的,要用mov ax, word ptr[data]。
這裡的ptr可以理解為C語言裡的強制型別轉換。
如果用LABEL實現這個功能的話,可以這樣:
dseg segment
wdata label word
data db 1, 2, 3, 4
dseg ends
此時,wdata與data的起始地址是相同的,但是它的型別是word。
在程式裡,可以直接使用:mov ax, [wdata]
至於this,你可以認為它的功能是和label一樣的。比如:
dseg segment
wdata equ this word
data db 1, 2, 3, 4
dseg ends
效果和用label的時候一樣。即可以理解為equ this = label