请问一个汇编语言中的test语句问题。

在《深入理解计算机操作系统》中有下面一段话:test指令会根据他们的两个操作数的与AND来设置零标志和负数标志。通常两个操作数是一样的(例如,test eax eax 用来检查eax是负数,零,还是正数?)请问为什么对两个相同的操作数执行test语句就可以得出这个操作数是正数还是负数?上面这段话是如何得来的?谢谢

第1个回答  2011-06-03
TEST是测试指令,操作与AND(逻辑与)一样,但不回送结果,也就是说操作不会改变操作数的内容。
TEST指令执行后CF=0,OF=0,AF不确定,SF、ZF、PF根据指令执行结果确定。
因为一个数与本身进行“与”操作的结果还是这个数,因此可以根据SF、ZF来确定这个数是否是负数,零,还是正数。如果SF=1 ,则为负数;SF=0,则为正数;ZF=1,则为0,ZF=1,则不为0。
第2个回答  2011-06-01
逻辑运算指令执行后,CF=0,AF=0,OF=0,但SF、ZF、PF根据指令执行结果确定。
test eax eax 实际上不作任何操作,但执行结果反映在SF、ZF上,就把eax 里的数是负数,零,还是正数反映出来了。本回答被网友采纳

请问一个汇编语言中的test语句问题。
TEST是测试指令,操作与AND(逻辑与)一样,但不回送结果,也就是说操作不会改变操作数的内容。TEST指令执行后CF=0,OF=0,AF不确定,SF、ZF、PF根据指令执行结果确定。因为一个数与本身进行“与”操作的结果还是这个数,因此可以根据SF、ZF来确定这个数是否是负数,零,还是正数。如果SF=1 ,则为...

汇编中TEST指令的问题?
通常用来测试一个寄存器的值是否为0。比如说 test eax,eax je end 作用是测试函数的返回是否为0、测试函数的参数是否为0、测试变量是否为0等等

汇编中的test指令
汇编中的TEST指令是用于进行逻辑与操作并设置状态标志位的指令。详细解释如下:1. TEST指令的基本功能:TEST指令在汇编语言中用于执行逻辑与操作。它不会对操作数进行实际的算术减法运算,而是检查它们之间的某些位模式。具体来说,它会将两个操作数进行逻辑与操作,但并不保存结果,而是根据操作的结果设置...

关于汇编中TEST指令的一些疑问
其实这个问题应该是有的,应该规定type,但是若是做题这个问题又不存才 因为不论是按byte还是word都是一样的答案,望采纳

汇编中TEST的问题
已知(BL)=0EFH,执行TEST BL,45H即将BL中的0EFH和45H相与,但结果不回送,所以目的操作数BL的值不变仍然为0EFH 。

汇编中的test指令各是什么?
汇编中的test指令是用于测试位状态的一系列指令。这些指令可以帮助汇编程序检查和修改处理器的位,并根据测试结果进行相应的操作。具体来说,以下是常见的汇编中的test指令:TEST指令:常见的如TEST EAX寄存器指令等。它们用于测试特定寄存器的某些位是否被设置。在执行这些指令时,通常不会更改目标寄存器的值...

汇编中的TEST指令
test al, 08h 就是测试al的第4位是不是1,8h = 0000 1000 同理 test ax, 0200h 测试ax的第10位, 0200h = 0000 0010 0000 0000 test cl, 01h 测试cl的第1位,01h = 0000 0001 比如 test al, 01h jz zero ; al的第一位是0 jnz one ; al的第一位是1 ...

汇编指令test的用法
test指令和and指令执行同样的操作,但test指令不送回操作结果,而仅仅影响标志位。testal,01;如al的最低位为1,则zf=0,否则zf=1test指令 这类指令主要影响ZF标志位testax,100b将ax的值和100b进行“与”操作,但不改变ax本身若与操作的结果为零则ZF置位。

关于汇编中test指令的问题
测试reg与reg是否相等,如果相等(不相等)转移到xxxxxxxx,否则继续下一条语句

汇编语言TEST指令
TEST指令和AND指令执行同样的操作,但TEST指令不送回操作结果,而仅仅影响标志位。例如:TEST EAX,01H ;指令会把寄存器EAX中的值和1进行按位相与,并影响标志位。如果EAX的最低位为1则标志位ZF为0,否则ZF为1。用TEST可以判断某一位是1还是0,也可以判断某几位是否全为0 ...

相似回答
大家正在搜