版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理及应用第五章8086指令系统第四讲带进位的加法指令和加一指令下面我们来学习带进位的加法指令和加一指令带进位的加法指令和加一指令首先来看带进位的加法指令,带进位的加法指令的操作码是adc,它跟ADD的区别就是,它在求和的过程中,除了两个加数,还考虑了CF的值,请注意,CF标志位随时可能会被修改,所以在使用ADC这条指令的时候一定要注意CF的标志位的可能状态带进位加法指令操作码ADC与ADD区别:求和过程,除2个加数,还考虑CF值注意:CF标志位随时会被修改,使用ADC指令时注意CF标志位可能状态ADc操作数是字节也是字,被用于多字节加法运算ADC操作数是字节也是字被用于多字节加法运算ADC比如计算2个32位数运算,不管add还是adc最多支持16位数运算,把32位数分成低16和高16位分别运算,计算高16位和时,考虑低16位可能对高16位产生进位,把CF状态考虑进来,这时用ADC指令计算2个32位数,不管add还是adc最多支持16位数运算32位数低16位高16位计算高16位和时,考虑低16位对高16位产生进位,把CF状态考虑进来,这时用ADC指令下面通过几个例子来看一下,第一个是al跟立即数ABh相加,再加上cf的值带借位减法指令ADCAL,0ABH;AL←[AL]+0ABH+[CF]第二个是ax和CX相加,再加上cf的值带借位减法指令ADCAX,CX;AX←[AX]+[CX]+[CF]第三个是bx跟di指向的两个连续的内存单元的值相加再加上cf的值带借位减法指令ADCBX,[DI];BX←[BX]+[DI+1:DI]+[CF]第三个是bx跟di指向的两个连续的内存单元的值相加再加上cf的值带借位减法指令ADCBX,[DI];BX←[BX]+[DI+1:DI]+[CF]说明:用ADC代替ADD指令,在ADC中不考虑CF值,先将CF状态置成0,可用CLC指令将CF状态清0
没有先将CF状态清0,CF状态不0,计算结果跟预期有出入两4字节的无符号数2C56F8ACH+309E47BEH=?01我们通过这个例子来看一下ADC是如何用于多字节运算的设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区02因CPU只能进行8位或16位的加法运算,为此将两数分成低字和高字分别相加03比如,我们要算两个四个字节的无符号数的和,四个字节就是32位数32位数两4字节的无符号数2C56F8ACH+309E47BEH=?01设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区02因CPU只能进行8位或16位的加法运算,为此将两数分成低字和高字分别相加03求和时将高16位和低16位分别计算,我们可以使用ADD求低16位的和,再用ADC求高16位的和,同时考虑了低16位可能对高16位产生的进位32位数两4字节的无符号数2C56F8ACH+309E47BEH=?01设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区02因CPU只能进行8位或16位的加法运算,为此将两数分成低字和高字分别相加03求和时将高16位和低16位分别计算,我们可以使用ADD求低16位的和,再用ADC求高16位的和,同时考虑了低16位可能对高16位产生的进位32位数两4字节的无符号数2C56F8ACH+309E47BEH=?01设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区02因CPU只能进行8位或16位的加法运算,为此将两数分成低字和高字分别相加03低16位高16位ADDADC同时考虑低16位对高16位产生进位来看一下的题目32位数两4字节的无符号数2C56F8ACH+309E47BEH=?01设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区02因CPU只能进行8位或16位的加法运算,为此将两数分成低字和高字分别相加03低16位高16位ADDADC题目中给出了两个无符号数,分别放在buffer1和buffer2中开始的四个连续的内存单元中32位数两4字节的无符号数2C56F8ACH+309E47BEH=?01设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区02因CPU只能进行8位或16位的加法运算,为此将两数分成低字和高字分别相加03低16位高16位ADDADC我们来看一下代码,首先,从buffer2开始的两个连续的内存单元中取出一个16位的数传送到ax中,然后将ax与从buffer1开始的两个连续的内存单元的16位的数相加,将结果存放在buffer1开始的两个连续的内存单元中,到这一步为止,使用ADD计算低16位数和,在CF中产生进位,被加数加数AX16位的数1.结果存放buffer1开始2个连续内存单元2.用ADD计算低16位数和,CF产生进位16位的数BUFFER1BUFFER2数据段ACHF8H56H2CHBEH47H9EH30H……下面两条指令就是通过ADC计算高16位的和MOVAX,BUFFER2ADDBUFFER1,AX;低字相加MOVAX,BUFFER2+2ADCBUFFER1+2,AX;高字相加,包括低字的进位首先,从buffer2+2开始的两个连续的内存单元中取出一个16位的数传送到ax中,然后将ax与从buffer1+2开始的两个连续的内存单元的16位的数相加再加上CF的状态,得到高16位的和,并将结果存放在buffer1+2开始的两个连续的内存单元中MOVAX,BUFFER2ADDBUFFER1,AX;低字相加MOVAX,BUFFER2+2ADCBUFFER1+2,AX;高字相加,包括低字的进位通过ADC计算高16位和,从buffer2+2开始两个连续内存单元中取一个16位数传送ax中,将ax与从buffer1+2开始两个连续的内存单元的16位的数相加再加上CF状态,得高16位和,结果存放在buffer1+2开始两个连续内存单元中下面我们来看一下add和adc对标志位的影响add和adc对标志位的影响标志位的修改主要是由计算结果引起的,求和运算的结果会有正负,可能会为零,可能会向有进位,如果是有符号数的运算也可能会溢出,所以,ADD和ADC的执行会影响到SFZFCF和OF的状态,如果是无符号的相加,是否溢出看CF的状态,如果是有符号的相加,是否溢出看OF的状态1有符号数运算溢出0否则OF=1有向最高位的进/借位0否则CF=标志位修改主要由计算结果引起OF=1表示带符号数相加溢出1结果为负0否则SF=1结果为00否则ZF=CF=1表示无符号数相加溢出ADC我们再通过这个例子看一下运算结果对标志位的影响,这条指令相当于是求D75Fh和8046h的和,我们可以运算一下,然后看运算的结果对标志位的影响已知[BX]=D75FH指令ADDBX,8046H执行后,状态标志各是多少?
D75FH=11010111010111118046H=1000000001000110
1111110101011110100101ADC首先,相加的运算有进位的,所以cf等于1,其次,结果不为0,所以zf等于0,再看,它只有最高位的进位,没有次高位的进位,所以最高位的进位位跟次高位的进位位的异或结果为1,所以OF等于1,再看标志位,标志位是零,所以sf等于0,那再看它的低八位中一的个数,数一下,一的个数是偶数个,所以pf等于1,这是16位数和16位数的相加,我们看到低8位向高8位是没有进位的,所以af等于0,已知[BX]=D75FH指令ADDBX,8046H执行后,状态标志各是多少?
D75FH=11010111010111118046H=1000000001000110
1111110101011110100101结果:C=1,Z=0,O=1,S=0,P=1,A=0下面我们来学习加一指令,加一指令的操作码是INC,就是increase的简写,increase是增加的意思加一指令操作码是INC意思:增加increase的简写因此加1指令就是对操作数进行加一的运算,因此,加一指令是单操作数的指令INC对操作数进行加一的运算是单操作数的指令INC也就是INC对操作数加1以后,将结果再存到这个操作数中,它的操作数既可以是寄存器也可以是存储器操作数,可以是八位的,也可以是16位的,但是它的操作数不能段寄存器,也不能是立即数,这条指令的特点是它不会影响进位标志位,也就是说,即使INC是对FFH加一,其运算的结果也不会影响cf这个标志位OPRD+1→OPRD操作数是寄存器和存储器操作数可以是8位或16位不能是段寄存器和立即数本指令不影响CF标志下面来看几个例子INCINCAX;AX+1→AXINCBL;BL+1→BLINCBYTEPTR[SI];[[SI]]+1→[[SI]]第一条指令是对AX进行加一的运算INCINCAX;AX+1→AXINCBL;BL+1→BLINCBYTEPTR[SI];[[SI]]+1→[[SI]]INCAX;AX+1→AX对AX加一运算下一条指令是对bl进行加一的运算INCINCAX;AX+1→AXINCBL;BL+1→BLINCBY
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 办公场地租赁押金退还条款协议2025年
- 中国药科大学实验室安全和环境保护工作管理办法(试行)
- 2025年河北省公需课学习-《中华人民共和国标准化法》条文讲解
- 冰点脱毛教学课件
- 2025年应急救援知识竞赛多项选择题及答案(共80题)
- 2025年中专必考历史试卷及答案
- 2025年数学题型试卷分类及答案
- 洗脚店聘用合同范本
- 2025年贵州生物中考真题及答案
- 场地和出资合同范本
- 太平鸟服装库存管理系统的设计与实现的任务书
- 辅导员基础知识试题及答案
- 75个高中数学高考知识点总结
- 《公共部门人力资源管理》机考真题题库及答案
- 《数字影像设计与制作》统考复习考试题库(汇总版)
- 国际学术交流英语知到章节答案智慧树2023年哈尔滨工业大学
- DB14-T 2644-2023旅游气候舒适度等级划分与评价方法
- EVA福音战士-国际动漫课件
- GB/T 37563-2019压力型水电解制氢系统安全要求
- GB/T 25085.3-2020道路车辆汽车电缆第3部分:交流30 V或直流60 V单芯铜导体电缆的尺寸和要求
- GB/T 1182-2018产品几何技术规范(GPS)几何公差形状、方向、位置和跳动公差标注
评论
0/150
提交评论