你的问题回答:
1、lea 和 mov 都可以取变量的偏移地址,只是mov语句需要加 offset 前缀;
2、图片程序确实啰唆,完全可以直接 “mov ax, x” 将8100h 传送给 ax 。
程序中的问题:
很显然,x、y 两个数都是负数,直接相加产生溢出;如果当无符号数计算,也会溢出,所以这样的运算,在相加之前,就应先将字扩展成双字再进行运算 !!!
MOV AX,X
CWD
MOV BX,AX
MOV CX,DX
MOV AX,Y
CWD
ADD AX,BX
ADC DX,CX
; 相加的结果在 dx、ax 中(dx 存高16位,ax 存低16位)