当前位置: 代码迷 >> 汇编语言 >> 简单有关问题,这段代码能得到如"010"这样的值吗
  详细解决方案

简单有关问题,这段代码能得到如"010"这样的值吗

热度:7559   发布时间:2013-02-26 00:00:00.0
简单问题,这段代码能得到如"-010"这样的值吗?
les           bx,   [bp+arg_0]
mov           al,   es:[bx+8]
cbw                                           ;   AL   ->   AX   (with   sign)
and           ax,   7Fh                   ;   Logical   AND
push         ax
push         ds
push         offset   a04d_36     ;   "%+04d "
push         word   ptr   [bp+buffer+2]
push         word   ptr   [bp+buffer]   ;   buffer
call         _sprintf                 ;   Call   Procedure

;and           ax,   7Fh                   ;   这句会清AH吗?




------解决方案--------------------------------------------------------
and ax, 7fh 肯定是清 ah 至 0 的, 而且连 al 的最高位也清了. 所以, 不会打印出负数来的
------解决方案--------------------------------------------------------
嗯,就是就是。
------解决方案--------------------------------------------------------
7fh=01111111h,符号位被清除,所以一定为正。
除了ah的最高位(也就是上面的符号位)被清除外,ah其他位都与1做与(析取)运算,故而都会被保留。
  相关解决方案