0
我正在使用assebmly IA32,由於沒有經驗,我對此有些懷疑。 我想做這樣的事情: A + B(均爲32位)。 該函數可以返回64位的值。 請不要讓我很難理解這一點。 謝謝!!!!32位變量返回64位變量
我正在使用assebmly IA32,由於沒有經驗,我對此有些懷疑。 我想做這樣的事情: A + B(均爲32位)。 該函數可以返回64位的值。 請不要讓我很難理解這一點。 謝謝!!!!32位變量返回64位變量
我這樣做(我真的不認爲這是正確的),很抱歉的評論是在葡萄牙 .section僞。數據
.global op1
.global op2
.section僞的.text
.global soma
soma:
movl op1, %eax # move op1 para o registo %eax
movl op2, %ebx # move op2 para o registo %ebx
addl %ebx, %eax # adiciona %ebx a %eax e guarda em %eax
movl $0, %edx;
# jump if carry
jc output_com_carry
jmp fim
output_com_carry:
movl $1, %edx
jmp fim
fim:
ret
你的解決方案是正確的,但你可以簡化代碼的清晰度。如果在指令「movl $ 1,%edx」上有**沒有進位,則跳轉。跳轉到緊隨其後的標籤也是多餘的。而且您也不必將* op2 *放入EBX寄存器。您可以直接將* op2 *添加到EAX寄存器。 –
'MOVL一個, %eax中; addl b,%eax; subb%edx,%edx; negl%edx; ret;'應該爲'unsigned'做。簽名留給你作爲練習。 – EOF
先顯示你的嘗試。我們會幫助您修復它,以防萬一它無法正常工作。 – Downvoter
完成,對不起:D –