求高手改错
data segment
var1 db 0, 25, 0dh,300
var2 db 12h,a4h,6bh
var3 db 'ABCDEF'
var4 dw 1234h, 5678h
var5 dw 10h dup(?)
data ends
code segment
assume cs:code, de:data
begin mov ax, data
mov ds, ax
lea si, var5
mov bx, offset var2
mov [si], 0abh
mov ax, var1+2
mov [bx], [si]
mov var5+4, var4
mov ah, 4ch
int 21h
code ends
end start
[解决办法]
data segment
var1 db 0, 25, 0dh, 300; 300>255,超出了 db 的表示范围了
var2 db 12h,0a4h,6bh; a4h 前应加个 0 以表示其为一数值而非标号
var3 db 'ABCDEF'
var4 dw 1234h, 5678h
var5 dw 10h dup(?)
data ends
code segment
assume cs:code, ds:data; de 应该是 ds 吧
begin: mov ax, data; 标号后应有 :
mov ds, ax
lea si, var5
mov bx, offset var2
mov [si], 0abh; 要加上 word ptr 或类似的修饰以指明操作数的大小
mov ax, var1+2; mov ax, var1[2] ?
mov [bx], [si]; 不能直接由内存到内存的赋值,且未知操作数大小
mov var5+4, var4; 不能由内存到内存的直接赋值,一般可通过个通用寄存器或堆栈来转储下
mov ah, 4ch
int 21h
code ends
end begin; start 应该是 begin 吧,要和前面的一致