求高手改错data segmentvar1 db 0, 25, 0dh,300var2 db 12h,a4h,6bhvar3 db ABCDEFvar4 dw 1234h, 5678h
求高手改错
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 吧,要和前面的一致
