汇编语言 加冒号的标号如:a: 与不加冒号的标号如:a

2025-01-05 00:48:51
推荐回答(2个)
回答1:

assume cs: code, ds: data

data segment
a dw ?
b: db ?, ?
data ends

code segment
start:
xor ax, ax
push ax
push ds

mov ax, data
mov ds, ax

mov a, 12h ; 能够汇编,因为知道a是个word类型的数据,即相当于mov word ptr a, 12h
mov b, 12h ; 不能汇编,因为不知道b的数据类型,即其字节大小,得改成mov byte ptr b, 12h
; 报错:error A2001: immediate operand not allowed

retf
code ends

end start

回答2:

比如
num1 db 12h
num2 dw 34h
不带冒号的标号num1,表示了12h在内存中存放地址,同时表示了12h是字节型的。同样num2表示了字类型数据34h在内存的地址,同时也表示了34h是字类型的。
所以有了上面的定义,mov ax,num1就是错误的(类型不一致)