| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 543 人关注过本帖
标题:OR和TEST这两个指令怎么用
收藏  订阅  推荐  打印
henankaifei717
Rank: 1
等级:新手上路
帖子:14
积分:268
注册:2008-4-20
OR和TEST这两个指令怎么用

在看别人写的程序中总是会用到OR或者TEST这两个指令,我对这两个指令很是迷惑,查了一下书结果更迷惑,,有哪位好心的大哥在姐能给小弟指点一下这两个指令怎么用,不胜感激!!!!
搜索更多相关主题的帖子: TEST  指令  
2008-5-13 18:20
zhulei1978
Rank: 12Rank: 12Rank: 12
等级:版主
威望:31
帖子:654
积分:8256
注册:2006-12-17

要置某位为一可用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则顺序往下执行,这样就可以根据测试的情况不同产生不同的程序分支,转向不同的处理。
2008-5-13 19:36
henankaifei717
Rank: 1
等级:新手上路
帖子:14
积分:268
注册:2008-4-20

谢谢!
ar 和 test都影响哪些寄存器?还有ar怎么和jnc(jn)指令联用?
2008-5-14 10:00
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.073056 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved