首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2012-02-08 
居然显示不出负数来,悲剧Assembly code.386.model flat,stdcallinclude kernel32.inc includelib kernel32

居然显示不出负数来,悲剧

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才是负数。。

热点排行