王爽汇编+25

在8086平台,debug工具和汇编源程序编译器对指令的解释会有差别。

例如我们将内存单元2000:0、2000:1、2000:2和2000:3的内容分别送到寄存器al、bl、cl和dl中。

debug工具里的实现:

%title插图%num

在汇编源程序里实现然后编译连接再debug查看

%title插图%num
%title插图%num

可以看见2者在处理[0],[1],[2],[3]内存单元的数据时明显不同,debug工具能正确的理解这是内存单元的偏移地址,但是汇编源程序编译器编译后把它当作立即数了,方括号莫名其妙没了

要想汇编源程序编译器能正确识别的解决办法有2种:

1,使用bx寄存器中转,既先将内存单元偏移地址送人bx寄存器,再传通过[bx]送入al,bl,cl,dl中

2,显示声明数据段ds寄存器 ,既把原来的[0]改成ds:[0]

显然大多数人更愿意用第二种,当然用哪一种随便你

我这里分别试试2种

使用bx寄存器中转

%title插图%num
%title插图%num
%title插图%num

这时方括号就出来了,说明被正确识别为内存单元偏移地址了

使用ds段寄存器显示声明

%title插图%num
%title插图%num

此时已经正确识别了。

发表回复