微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MASM的已签名和未签名说明

如何解决MASM的已签名和未签名说明

您如何知道使用MASM x86汇编语言对指令进行签名还是未签名?

解决方法

除法,乘法和右移;对于已签名数据(imulidivsar)和未签名数据(muldivshr)有不同的说明。

对于条件分支,对于带符号的{jojljnljgjngjsjns和未签名的(jcjbjnbjajna)来检查不同的标志。

对于加法,减法(包括cmp)和按位指令(andor等;包括xor),这没有什么区别如果已签名或未签名,则对于两种情况,相同的指令均起作用。区别在于您稍后会关心哪些标志(如果有),而不是指令本身。

例如,您可以执行test(不管sub eax,123中的值是带符号的还是无符号的),然后有一个eax(如果相减的结果是带符号的) )或jo .tooBig(如果减法的结果未签名),以确定减法是否溢出。

注意:对于左移,指令jc .tooBig对有符号和无符号都起作用;但是汇编器可以允许对同一名称(不同名称,相同操作码,相同机器码)使用替代名称shl,使其看起来类似于右移。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。