微机原理及应用 课件 5.22 逻辑运算指令之测试指令_第1页
微机原理及应用 课件 5.22 逻辑运算指令之测试指令_第2页
微机原理及应用 课件 5.22 逻辑运算指令之测试指令_第3页
微机原理及应用 课件 5.22 逻辑运算指令之测试指令_第4页
微机原理及应用 课件 5.22 逻辑运算指令之测试指令_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理及应用第五章8086指令系统第二十二讲

逻辑运算指令之测试指令下面我们来学习测试指令逻辑运算指令之测试指令测试指令的操作码是TEST它执行的功能是与运算的功能,但是它跟与运算的区别是不将运算的结果送回,而只是影响标志位测试指令与运算的功能TEST不将运算的结果送回,只是影响标志位区别它常常用来对位进行测试,并且跟条件转移指令一起使用请大家注意,测试指令的结果不会改变操作数的值,对位进行测试条件转移指令测试指令的结果不会改变操作数的值所以如果你想计算两个数相与,但是又不想改变任何一个操作数的话,可以考虑用测试指令计算两个数相与且不改变任何操作数测试指令我们来看一个例子比如,testal,02h这条指令测试的是AL的bit1这位的值、如果bit1这位为零的话,那么运算结果为全0,ZF就为1;如果比特1这位为1的话,那么运算结果不为全0,ZF就为0测试指令TESTAL,02H若D1=0,则ZF=1JZTHEREZF=1则转移bit1bit1为1,运算结果不为全0,ZF就为0下面这条指令的意思是,如果结果为零的话,也就是如果AL的bit1这位为0的话,程序跳转there指示的位置继续执行否则,程序继续执行下一条指令测试指令TESTAL,02H若D1=0,则ZF=1JZTHEREZF=1则转移bit1结果为零,程序跳转there指示的位置继续执行下面我们再看一个例子。这个例子跟我们在与运算中讲的例子类似、它区别在判断的这个环节、判断的这个环节会判断三个比特位,比特1,比特3,和比特5如果这位同时为1的话,才会输出数据,否则的话就重新读入数据bit1bit3bit5判断的环节会判断三个bit位同时为1输出数据否则重新读入数据那我们可以在前面写好的这个程序的基础上去修改,输入的部分和输出的部分都不需要修改只修改判断的部分就好初始化ANDAL,02HJZWAIT限定:用TEST指令写TESTAL,02HJZWAITTESTAL,08HJZWAITTESTAL,20HJZWAIT

MOVDX,3F8HWAIT:INAL,DX读入数据判断数据MOVDX,38FHMOVAX,DATAOUTDX,AX输出数据无需修改无需修改之前的程序只检测了bit1这一位是否唯一,我们现在要判断bit1,bit3和bit5是否同时为1,其实实现这个功能的指令还是蛮多的。如果限定使用测试指令来实现这个功能的话要用三句话来写bit1是否为1判断bit1,bit3和bit5是否同时为1限定使用测试指令来实现这个功能首先,要测试一下AL的比特一这位是否为零、如果ZF为1,说明AL的比特1这位为0,那么就跳转到WAIT这里,重新读入数据,如果ZF为0,说明AL的比特1这位不为0,不为0的话,就再测试一下比特三这位AL的bit1是否为0ZF为1,说明AL的bit1为0重新读入数据WAITAL的bit1是否为0ZF为0,说明AL的bit1不为0重新测试bit3如果ZF为1,说明AL的比特3这位为0,那么就跳转到WAIT这里,重新读入数据,如果ZF为0,说明AL的比特3这位不为0,不为0的话,就再测试一下比特五这位MOV操作码02H31H代码段…CDHABH数据段AHALAX23102H23103HAL的bit3是否为0ZF为1,说明AL的bit3为0重新读入数据WAITAL的bit3是否为0ZF为0,说明AL的bit3不为0重新测试bit5如果ZF为1,说明AL的比特5这位为0,那么久跳转到WAIT这里,重新读入数据,如果ZF为0,说明AL的比特5这位不为0,不为0的话,就说明bit1,比特3和bit5这三位同时为1,可以继续执行输出的操作了。AL的bit5是否为0ZF为1,说明AL的bit5为0重新读入数据WAITAL的bit5是否为0ZF为0,说明AL的bit5不为0同时为1bit1bit3bit5执行输出大家来看,使用测试指令判断三个位是否同时为1是不是有点繁琐,那么如果我们不限定用测试指令来实现判断的话,其实可以更简单

MOVDX,3F8H初始化WAIT:INAL,DXTESTAL,02HMOVDX,38FHMOVAX,DATAOUTDX,AXJZWAITTESTAL,08HJZWAITTESTAL,20HJZWAIT读入数据输出数据ANDAL,02HJZWAIT限定:用TEST指令写判断数据不限定用测试指令来实现判断可以更简单如果用AND指令来实现,我们就可以直接获得与运算的结果,

MOVDX,3F8H初始化WAIT:INAL,DX不限定MOVDX,38FHMOVAX,DATAOUTDX,AX读入数据判断数据输出数据ANDAL,2AHXORAL,2AHJNZWAITANDAL,2AHCMPAL,2AHJNZWAIT直接获得与运算的结果例如,要判断AL的bit1,bit3和bit5位是否同时为1,我们可以让AL跟2AH相与,如果结果为2AH,说明AL的这三个比特位同时为1,就可以输出数据了,否则就说明至少有一位不为1,这时就要回去重新读数据

MOVDX,3F8H初始化WAIT:INAL,DX不限定MOVDX,38FHMOVAX,DATAOUTDX,AX读入数据判断数据输出数据ANDAL,2AHXORAL,2AHJNZWAITANDAL,2AHCMPAL,2AHJNZWAITAL的bit1,bit3和bit5位是否同时为1结果为2AHbit位同时为1结果不为2AH至少一位不为1输出数据重新取读我们来看第一种写法就是AL跟2AH相与,然后用比较指令去判断结果是否为2Ah。

MOVDX,3F8H初始化WAIT:INAL,DX不限定MOVDX,38FHMOVAX,DATAOUTDX,AX读入数据判断数据输出数据ANDAL,2AHXORAL,2AHJNZWAITANDAL,2AHCMPAL,2AHJNZWAIT用比较指令去判断结果是否为2Ah如果结果是2AH的话,ZF为1,否则ZF为0。如果ZF为0,就跳转到WAIT指向的位置去执行否则就继续执行用比较指令去判断结果是否为2Ah结果=0ZF=1结果0ZF=0WAIT继续执行同理,还有第二种写法;就是用异或指令来判断与运算的结果是否为2AH;如果与运算的结果为2Ah,那么跟2Ah再求异或的话,结果就为0,ZF就为1,否则结果不为0,ZF就为0;如果ZF为0,就跳转到WAIT;如果ZF为1,就

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论