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