当前位置: 代码迷 >> 汇编语言 >> 居然显示不出负数来,悲剧,该怎么解决
  详细解决方案

居然显示不出负数来,悲剧,该怎么解决

热度:10558   发布时间:2013-02-26 00:00:00.0
居然显示不出负数来,悲剧
Assembly code
.386.model flat,stdcallinclude kernel32.inc includelib kernel32.libinclude msvcrt.incincludelib msvcrt.lib.data           printStr2 byte "dl:al=%d",0dh,0ah,0var1 word ?.codemain procmov eax,0mov al,-1add al,-2adc dl,0mov byte ptr var1,almov byte ptr var1+1,dlmovzx eax, var1invoke crt_printf, addr printStr2,eaxinvoke ExitProcess,0;main endpend main



为啥,结果不是负数??



------解决方案--------------------------------------------------------
movzx 应该是 movsx 吧,不然 Hiword(eax) 为 0000,怎么还会是负数呢
------解决方案--------------------------------------------------------
根绝应该是movsx吧。movzx的话,符号位都填零啦
------解决方案--------------------------------------------------------
建议用C写一个看其反汇编即可。
------解决方案--------------------------------------------------------
太2了。。。add al,-1
怎么会是负数。。。。
mov eax,-1才是负数。。
  相关解决方案