我有一个存储在eax中的32位数字和一个存储在ebx中的32位数字。我想将它们组合成.bss部分中定义的64位数字作为finalNum,但我不确定如何。我试过了
Table per Class
但由于某种原因,当我尝试打印出finalNum时,它没有正确打印出来,所以我认为这4行存在问题。这也是32位的。
编辑:
所以我试过
mov esi, finalNum
mov [esi], eax
add esi, 32
mov [esi], ebx
但是,仍然会出现一些奇怪的印刷品,我将finalNum声明为
mov esi, finalNum
mov [esi+0], eax
mov [esi+4], ebx
你认为这可能是个问题吗?
编辑:
finalNum: resb 8
正如你所看到的那样,当我繁殖并打印出来时,我会得到一个奇怪的角色。
编辑: 用于打印结果的代码
Enter first number to multiply:
34567
Enter second number to multiply:
76543
First Num: 34567
Second Num: 76543
Addition: 111110
Multiply:
▒EAX : 0
EBX : -1649105415
顺便说一句BUFLENFINAL = 8
答案 0 :(得分:3)
64位数字的低位字位于finalNum
的低4字节,而高位字位于finalNum
的高4字节:
mov esi, finalNum ; Load address of where to store 64-bit number
mov [esi+0], eax ; Store low 32 bits
mov [esi+4], ebx ; Store high 32 bits
答案 1 :(得分:0)
替代方案:
finalNum: qword 0
....
mov dword ptr finalNum, eax
mov dword ptr finalNum+4, ebx