一道汇编语言题跪求解答,困扰好几天了

2025-03-14 00:51:39
推荐回答(1个)
回答1:

你的问题回答:

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位)