我正在学习 x86 汇编语言,不知道如何使用 Irvine32 库打印负整数。
INCLUDE Irvine32.inc
.data
arry SWORD 10, -20, 30
.code
main PROC
mov eax, 0
mov esi, OFFSET arry
mov ax, SWORD PTR [esi]
add esi, TYPE arry
add ax, SWORD PTR [esi]
call WriteInt
exit
;call DumpRegs
main ENDP
end main
我期待的结果是 -10,但控制台打印了 +65526。我不知道 WriteInt 函数是如何工作的,但似乎它将 ax 中的值识别为无符号值。
如果我像这样修改我的代码,那么 WriteInt 函数会给我正确的结果。(-10)
...
mov eax, 10
sub eax, 20
call WriteInt
...
我想从内存中读取数据并添加或减去整数。如果我想打印为有符号整数,我该怎么办?