汇编 获取偏移地址 offset和lea的问题
data segment
string1 db 'hello world!','$'
string2 db 'hello,world!','$'
string3 db 'HELLO,WORLD!','$'
data ends
code segment
assume cs:code,ds:data
start:
mov dx,offset string1
mov ah,9
int 21h
lea dx,string2
mov ah,9
int 21h
mov dx,offset string3
mov ah,9
int 21h
code ends
end start
各位大神,请问上面这个程序问题出在哪里?汇编学得不深,老是出现不大不小的问题。
[解决办法]
start 后面加两句:
mov ax,data
mov ds,ax
[解决办法]
如楼上所说,就可以解决问题了。
之所以要加这两句,是因为:
assume cs:code,ds:data
这只是一条伪指令语句,这一语句中的ds:data只是我们编程时的一种假设,即我们通过这一指令告诉汇编编译器,我们假设数据段在data段中,但CPU并不知道,所以要想让CPU知道你存放的数据在DATA中,必须另外通过汇编指令指定,就是楼上说的
mov ax,data
mov ds,ax
这两条汇编指令。