汇编高手进来看看啊!!!解释个代码!!!万谢!!!

来源:百度知道 编辑:UC知道 时间:2024/05/21 11:11:14
有以下一段代码,小生实在是看不懂。高手指点指点啊!!!代码如下:
……
……
LEA BX,X
MOV AX,[BX]
ADD AX,4[BX]
MOV [BX],AX
INC BX
INC BX
MOV AX,[BX]
ADC AX,4[BX]
MOV [BX],AX
……
……
……
尤其是ADD AX,4[BX]和ADC AX,4[BX]是啥意思?给前面加个4是什么意思?高手指点指点吧!!!
还有个问题就是,教材上写的是
LEA BX,X ;BX指向X低字
MOV AX,[BX] ;x低字送人AX
ADD AX,4[BX] ;与y低字相加
MOV [BX],AX ;送和低字
低字是什么?

嘿嘿,楼上的回答有一点小问题(关于“溢出”):
ADD指令是把源和目的操作数相加(2个数),而ADC指令是把源和目的操作数以及“进位标志CF”3个数相加。
对溢出的处理这2条指令是一样的:有溢出就置“溢出标志OF”,注意,“溢出”和“进位”是不同的概念。

关于补充问题:你的描述不过完整。
我猜测,X以及“和”都是“双字类型”的(也就是4字节DWORD型),低字当然就是指“低位字”,也就是32位中的低16位。

ADD AX,4[BX];把当前数据段位移(BX值+4)的内存数,加上AX,
和送入AX,有溢出不处理;
ADC AX,4[BX];把当前数据段位移(BX值+4)的内存数,加上AX,
和送入AX,有溢出置进位标志CF=1。