cmp 不工作 - Intel x86 (IA32) 程序集
Posted
技术标签:
【中文标题】cmp 不工作 - Intel x86 (IA32) 程序集【英文标题】:cmp not working - Intel x86 (IA32) Assembly 【发布时间】:2017-04-29 20:47:45 【问题描述】:我正在尝试在汇编中编写一个简单的代码,但在使用 cmp 比较两个值时遇到了麻烦。如果我的值不在 65 到 90 之间,我想跳转到某个点。
cmp $65, (%ebx)
jl looping
cmp $90, (%ebx)
jg check_minusculas
运行 gdb 我的 %ebx 值为 0x80490f9 并使用:
x /1db 0x80490f9
我知道 (%ebx) 是 77。 但是,当明显 77 时,程序会跳转到 check_minusculas。 我在这里错过了什么?
谢谢!
【问题讨论】:
【参考方案1】:您的问题是您忘记使用大小说明符,并且它默认为 long,而您显然想使用字节。解决方法:使用cmpb
。
【讨论】:
这行得通,谢谢!但是“幕后”发生了什么?如果是一个字节并且默认为long,其他字节不填充为0吗? 不,它也会从内存中获取以下 3 个字节,无论它们是什么。以上是关于cmp 不工作 - Intel x86 (IA32) 程序集的主要内容,如果未能解决你的问题,请参考以下文章