OR和TEST这两个指令怎么用
在看别人写的程序中总是会用到OR或者TEST这两个指令,我对这两个指令很是迷惑,查了一下书结果更迷惑,,有哪位好心的大哥在姐能给小弟指点一下这两个指令怎么用,不胜感激!!!!
要置某位为一可用or指令,例:要求第5位置1,
mov al,43h
or al,20h
这两条指令执行后,(al)=63h
0100 0011
0010 0000
or
---------------
0110 0011
所以用or指令可以使操作数的某些位置1,只需要把or指令的源操作数设置为一个立即数,并把需要置1的位设为1,就可达到目的。
要测试操作数的某位是否为0,可用test指令,同样把test指令的源操作数设置成一个立即数,其中需要测试的位应设为1。例:
mov al,40h
test al,0afh
这两条指令执行后
0100 0000
1010 1111
and
-------------
0000 0000
这里要求测试第0,1,2,3,5,7位是否为0,根据测试的结果设置条件码为cf=of=0,sf=0,zf=1,说明所需测试的位均为0.如果在这两条指令之后跟一条条件转移指令jnz,如果不是0则转移,如结果为0则顺序往下执行,这样就可以根据测试的情况不同产生不同的程序分支,转向不同的处理。