汇编语言中的指令浅谈有无符号指令

    技术2022-05-11  87

    在汇编语言中,有些操作指令分为有符号指令和无符号指令,为什么要这样,开始的时候肯定大家都会有些不理解,不过不要紧,我们慢慢来说,先看一段简单的示例:     mov ah,200     mov ch,2     mul ch        ;div 为乘法无符号指令,结果ah的值为144(就是110010000的低8位) 我们再看下面的代码:     mov ah,200    ;ah为 -56     mov ch,2     imul ch        ;idiv 为乘法有符号指令,结果ah的值为144 大家觉得很奇怪吧,为什么ah变成了144呢,呵呵,-56乘以2为-112,-112在内存存放为16进制的90h,即144。 还有更加要注意的就是条件转移指令,因为条件转移指令也分为了有符号和无符号的。我们再看下面的例子:     mov ah,200     cmp ah,100     ja  @@2    ;无符号跳转指令,由于ah为200大于100,直接跳转到@@2, @@1:     mov dx,1 @@2:     mov dx,2 继续看下面:     mov ah,200     cmp ah,100     ja  @@2    ;有符号跳转指令,由于ah为-56小于100,不会跳转到@@2, @@1:     mov dx,1 @@2:     mov dx,2 看了这个例子大家就知道了,有无符号指令会影响程序的执行,所以是很重要的,大家在写汇编或反跟踪的时候一定要注意细节。  

    最新回复(0)