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

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

2012-02-09 
简单问题,这段代码能得到如-010这样的值吗?lesbx,[bp+arg_0]moval,es:[bx+8]cbwAL-AX(withsign)andax,

简单问题,这段代码能得到如"-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做与(析取)运算,故而都会被保留。

热点排行