- Assembly code
.386 .model flat,stdcall include kernel32.inc includelib kernel32.lib include msvcrt.inc includelib msvcrt.lib .data printStr2 byte "dl:al=%d",0dh,0ah,0 var1 word ? .code main proc mov eax,0 mov al,-1 add al,-2 adc dl,0 mov byte ptr var1,al mov byte ptr var1+1,dl movzx eax, var1 invoke crt_printf, addr printStr2,eax invoke ExitProcess,0; main endp end main
为啥,结果不是负数??
------解决方案--------------------
movzx 应该是 movsx 吧,不然 Hiword(eax) 为 0000,怎么还会是负数呢
------解决方案--------------------
根绝应该是movsx吧。movzx的话,符号位都填零啦
------解决方案--------------------
建议用C写一个看其反汇编即可。
------解决方案--------------------
太2了。。。add al,-1
怎么会是负数。。。。
mov eax,-1才是负数。。