Assembly 汇编:将双字添加到双字
所以我有一些家庭作业,这让我把头发扯下来 代码如下:Assembly 汇编:将双字添加到双字,assembly,x86,Assembly,X86,所以我有一些家庭作业,这让我把头发扯下来 代码如下: VALUE1 DW 0153H DW 1624H VALUE2 DW 0328H DW 3C44H RESULT DW 0 DW 0 DW 0 DW 0 MOV SI,OFFSET VALUE1 MOV DI,OFFSET VALUE2 MOV AX,[SI] INC SI ADD AX,[SI] MOV BX,[DI] I
VALUE1 DW 0153H
DW 1624H
VALUE2 DW 0328H
DW 3C44H
RESULT DW 0
DW 0
DW 0
DW 0
MOV SI,OFFSET VALUE1
MOV DI,OFFSET VALUE2
MOV AX,[SI]
INC SI
ADD AX,[SI]
MOV BX,[DI]
INC DI
ADD BX,[DI]
教授希望我们将以Value1开头的双字添加到以VALUE2开头的双字中,然后将其存储为结果之一。我一直试图在网上和书上寻找帮助,但我已经被困了一个多小时了。有什么帮助吗?代码是我在翻阅这本书时写的,我怀疑它是否正确,但它是我目前所拥有的你必须先添加单词,然后再添加其他单词 请尝试使用以下代码:
d dd 1111111
d1 dd 2222222
d2 dd ?
lea bx,op1
mov ax,[bx]
mov dx,[bx+2]
lea bx,op2
add ax,[bx]
adc dx,[bx+2] ;add two word and carry
lea bx,d
mov [bx],ax
mov 2[bx],dx
如果您只是在寻找提示:查找
ADC
(使用进位添加)并考虑值的地址(提示:INC SI
/INC DI
不太正确)。但是ADC命令不是添加了两个寄存器和进位吗?我有点搞不清楚这到底是怎么回事。让我困惑的是价值观的地址。我通常处理ex:Value1=0025H,value2=0026H,当它们都被抛出到同一个值中时,我不知道如何访问它们。这是我在classVALUE1期间从未理解的事情之一,它等于16240153H
,并且作为字节值53H
,01H
,24H
,16H
(因为x86是一种体系结构)存储在内存中。这是你遇到困难的部分吗?嗯,把Value1称为MOV AX,[Value1]和MOV BX,[Value1+2]我应该把这两个值都放在不同的寄存器中,然后我想我可以随心所欲地处理它们