一段汇编代码,有关符号位与最高有效位的疑惑
代码功能:计算数Y中1的个数,把结果存入count中
mov cx,0
mov ax,Y
repeat:
test ax,0ffffh 问:这里是不是测试ax中的数所有位同时0,是的话就设置ZF=1
jz exit 如果为0,则跳转到exit
jns shift 如果SF=0,即数为正数时跳转到shift。这是按照jns这条指令的定义
而书上的解释是:if MSB(最高有效位)=0,则跳转到shift.
inc cx
shift:
shl ax,1
jmp repeat
exit:
mov count,cx
ret
我想问的问题有:1.最高有效位与符号位是否等价。如果是,那么AX中不是只有15位用来表示数了吗?如果不是,那么
怎么书上的解释正确吗,这段代码是否能够完成所需功能呢?
[解决办法]
说的就是普通的调试程序吧,这有不少的选择,不过,功能和使用方法不尽相同。最简单的就是 debug,这个是操作系统自带的,功能和使用上都比较简单,可以应对不甚复杂的程序;其它还有 Masm 里的 CodeView,Borland 的 TDebug 等等。这些是 dos16 类程序的调试软件,以 debug 和 cv 用的比较多吧。Win32 的,用的比较多的好像是 OllyDebug 了。