关于 lea
我的程序只定义了一个代码段 .code
我把一个串定义在里面,string1 db "hello world$"
然后我想用int 21的9功能打印出来
mov ah,09h
lea dx,string1
int 21h
显示出很多乱码!
这应该是因为exe文件一开始总是把ds和es指向psp所以ds!=cs
而lea 又是默认ds段,所以会出错,于是我在这前面加了
mov ax,cs
mov ds,ax
就正确了 但是如果不这样改
而把lea dx,string1
改成lea dx,cs:string1也还是乱码!
可我看见别人用过cs:string这种方式的,
是否因为在执行int 21h的时候机器还是会去找ds?
lea dx,cs:string1是否的确取了cs段偏移地址?
请详细回答,合适就揭贴