




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.4.2二进制算术指令,算术运算指令涉及两种类型的数据无符号数8位无符号数的范围为025516位无符号数的范围为065535有符号数8位有符号数的范围为-128+12716位有符号数的范围为-32768+32767,几个例子,05H+0AH08H+FBH08H+7CH87H+F5H,所有算术运算指令均影响状态标志。规则:当无符号数运算产生溢出时,CF为1;当有符号数运算产生溢出时,OF为1;如运算结果为0,则ZF=1;如运算结果为负数,则SF=1;如运算结果中有偶数个1,则PF=1。,1、不带进位的加法指令ADD,ADD指令将源与目的操作数相加,结果送到目的操作数ADD指令按状态标志的定义相应设置,ADD,ADDreg,imm/reg/mem;regregimm/reg/memADDmem,imm/reg;memmemimm/reg,例题3.1,设AL=3AH,则执行ADDAL,7CH后,AL=B6H;对标志位的影响为,标志寄存器16位寄存器,其中有7位未用。,D15,D0,1-低8位有偶数个10-低8位有奇数个1,例3.1:加法运算,moval,0fbh;al=0fbhaddal,07h;al=02hmovwordptr200h,4652h;200h=4652hmovbx,1feh;bx=1fehaddal,bl;al=00h,ADD,2、带进位加法指令ADC,ADC指令将源与目的操作数相加,再加上进位CF标志,结果送到目的操作数ADC指令按状态标志的定义相应设置ADC指令主要与ADD配合,ADC,ADCreg,imm/reg/mem;regregimm/reg/memCFADCmem,imm/reg;memmemimm/regCF,例题3.2,例3.2:双字加法,movax,4652h;ax=4652haddax,0f0f0h;ax=3742h,CF=1movdx,0234h;dx=0234hadcdx,0f0f0h;dx=f325h,CF=0;DX.AX02344652HF0F0F0F0HF3253742H,ADC,例3.3:计算两个四字节的无符号数相加,分别存放在2000H和3000H开始的存储单元中,低地址存放低字节,高地址存放高字节,和存放至2000H开始的内存单元中。设两个数分别为10008423H、20007F00H。,3、增量指令INC(increment),INC指令对操作数加1(增量)INC指令不影响进位CF标志,按定义设置其他状态标志,INC,INCreg/mem;reg/memreg/mem1,incbxincbyteptrbx,4、不带借位的减法指令SUB(subtract),SUB指令将目的操作数减去源操作数,结果送到目的操作数SUB指令按照定义相应设置状态标志,SUB,SUBreg,imm/reg/mem;regregimm/reg/memSUBmem,imm/reg;memmemimm/reg,例题3.4,例3.4:减法运算,moval,0fbh;al=0fbhsubal,07h;al=0f4h,CF0movwordptr200h,4652h;200h=4652hmovbx,1feh;bx=1fehsubal,bl;al=0f6hsubwordptrbx+2,0f0f0h;200h=5562h,CF1,SUB,5、带借位减法指令SBB,SBB指令将目的操作数减去源操作数,再减去借位CF(进位),结果送到目的操作数。SBB指令按照定义相应设置状态标志SBB指令主要与SUB配合,SBB,SBBreg,imm/reg/mem;regregimm/reg/memCFSBBmem,imm/reg;memmemimm/regCF,例题3.5,例3.5:双字减法,movax,4652h;ax=4652hsubax,0f0f0h;ax=5562h,CF=1movdx,0234h;dx=0234hsbbdx,0f0f0h;dx=1143h,CF=1;DX.AX02344652HF0F0F0F0H11435562H,SBB,6、减量指令DEC(decrement),DEC指令对操作数减1(减量)DEC指令不影响进位CF标志,按定义设置其他状态标志,DEC,DECreg/mem;reg/memreg/mem1,deccxdecwordptrsi,INC指令和DEC指令都是单操作数指令主要用于对计数器和地址指针的调整,7、求补指令NEG(negative),NEG指令对操作数执行求补运算:用零减去操作数,然后结果返回操作数求补运算也可以表达成:将操作数按位取反后加1NEG指令对标志的影响与用零作减法的SUB指令一样,NEG,NEGreg/mem;reg/mem0reg/mem,例题3.6,例3.6:求补运算,movax,0ff64hnegal;ax=ff9ch,CF=1subal,9dh;ax=ffffh,CF=1negax;ax=0001h,CF=1decal;ax=0000h,CF=1negax;ax=0000h,CF=0,NEG,8、比较指令CMP(compare),CMP指令将目的操作数减去源操作数,按照定义相应设置状态标志CMP指令执行的功能与SUB指令,但结果不回送目的操作数,CMPreg,imm/reg/mem;regimm/reg/memCMPmem,imm/reg;memimm/reg,CMP,总结,两个无符号数比较:若AB,则CF0,即无借位;若AB;若S=1,则AB;若S=0,则AB。于是可以把AB的条件写成S与O异或。,9、乘法指令,(1)MULr8/m8;无符号字节乘法;AXALr8/m8MULr16/m16;无符号字乘法;DX.AXAXr16/m16,(2)IMULr8/m8;有符号字节乘法;AXALr8/m8IMULr16/m16;有符号字乘法;DX.AXAXr16/m16,例题3.7,说明,乘法指令的功能,乘法指令分无符号和有符号乘法指令乘法指令的源操作数显式给出,隐含使用另一个操作数AX和DX字节量相乘:AL与r8/m8相乘,得到16位的结果,存入AX字量相乘:AX与r16/m16相乘,得到32位的结果,其高字存入DX,低字存入AX乘法指令利用OF和CF判断乘积的高一半是否具有有效数值,乘法指令对标志的影响,乘法指令如下影响OF和CF标志:MUL指令若乘积的高一半(AH或DX)为0,则OF=CF=0;否则OF=CF=1IMUL指令若乘积的高一半是低一半的符号扩展,则OF=CF=0;否则均为1乘法指令对其他状态标志没有定义,对标志没有定义:指令执行后这些标志是任意的、不可预测(就是谁也不知道是0还是1)对标志没有影响:指令执行不改变标志状态,例3.7:乘法运算,moval,0b4h;al=b4h=180movbl,11h;bl=11h=17mulbl;ax=Obf4h=3060;OF=CF=1,AX高8位不为0moval,0b4h;al=b4h=76movbl,11h;bl=11h=17imulbl;ax=faf4h=1292;OF=CF=1,AX高8位含有效数字,10、除法指令,(1)DIVr8/m8;无符号字节除法:ALAXr8/m8的商,AhAXr8/m8的余数DIVr16/m16;无符号字除法:;AXDX.AXr16/m16的商,DXDX.AXr16/m16的余数,(2)IDIVr8/m8;有符号字节除法:ALAXr8/m8的商,AhAXr8/m8的余数IDIVr16/m16;有符号字除法:;AXDX.AXr16/m16的商,DXDX.AXr16/m16的余数,例题3.8,说明,除法指令的功能,除法指令分无符号和有符号除法指令除法指令的除数显式给出,隐含使用另一个操作数AX和DX作为被除数字节量除法:AX除以r8/m8,8位商存入AL,8位余数存入AH字量除法:DX.AX除以r16/m16,16位商存入AX,16位余数存入DX除法指令对标志没有定义除法指令会产生结果溢出,除法错中断,当被除数远大于除数时,所得的商就有可能超出它所能表达的范围。如果存放商的寄存器AL/AX不能表达,便产生溢出,8086CPU中就产生编号为0的内部中断除法错中断对DIV指令,除数为0,或者在字节除时商超过8位,或者在字除时商超过16位,则发生除法溢出对IDIV指令,除数为0,或者在字节除时商不在-128127范围内,或者在字除时商不在-3276832767范围内,则发生除法溢出,例3.8:除法运算,movax,0400h;ax=400h=1024movbl,0b4h;bl=b4h=180divbl;商al05h5;余数ah7ch124movax,0400h;ax=400h=1024movbl,0b4h;bl=b4h=76idivbl;商alf3h13;余数ah24h36,除法指令几点注意:,标志位AF、CF、OF、PF、SF和ZF无意义。商范围如下,超出了范围则产生0号中断:双字除以字为-32768+32767字除以字节-128+127有符号数除法规定余数的符号和被除数的符号相同。要求用16位数除以8位数,或者用32位数除以16位数。,3.4.3十进制算术指令,组合BCD码就是通常的8421码;它用4个二进制位表示一个十进制位,一个字节可以表示两个十进制位,即0099,非组合BCD码用8个二进制位表示一个十进制位,只用低4个二进制位表示一个十进制位09,高4位任意,通常默认为0,十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果分成组合BCD码和非组合BCD码调整,BCD码(BinaryCodedDecimal),二进制编码的十进制数:一位十进制数用4位二进制编码来表示8086支持组合BCD码和非组合BCD码的调整运算真值864二进制编码08H40H组合BCD码08H64H非组合BCD码08H0604H,在进行十进制数算术运算时,应分两步进行:先按二进制数运算规则进行运算,得到中间结果;再用十进制调整指令对中间结果进行修正,得到正确的结果。,例子,结果正确,这时调整指令不需要做什么。,4829770100100048的BCD码+0010100129的BCD码0111000171的BCD码,结果不正确,可以调整为,57+46=103,72+91=163,加法运算后,当CF=1(有进位产生)时,调整指令应做加60H处理。,1.压缩BCD码加、减调整指令,(ADDAL,i8/r8/m8)(ADCAL,i8/r8/m8)DAA;AL将AL的加和调整为压缩BCD码,(SUBAL,i8/r8/m8)(SBBAL,i8/r8/m8)DAS;AL将AL的减差调整为压缩BCD码,使用DAA或DAS指令前,应先执行以AL为目的操作数的加法或减法指令DAA和DAS指令对OF标志无定义,按结果影响其他标志,例如CF反映压缩BCD码相加或减的进位或借位状态,例题3.11,例题3.12,例题3.13,例3.11:压缩BCD加法,moval,68h;al=68h,压缩BCD码表示真值68movbl,28h;bl=28h,压缩BCD码表示真值28addal,bl;二进制加法:al=68h+28h=90hdaa;十进制调整:al=96h;实现压缩BCD码加法:682896,例3.12:压缩BCD减法,moval,68h;al=68h,压缩BCD码表示真值68movbl,28h;bl=28h,压缩BCD码表示真值28subal,bl;二进制减法:al=68h-28h=40hdas;十进制调整:al=40h;实现压缩BCD码加法:68-2840,例3.13:压缩BCD减法,movax,1234hmovbx,4612hsubal,bldas;34-1222,CF0 xchgal,ahsbbal,bhdas;12-4666,CF=1xchgal,ah;1123446126622,2.非压缩BCD码加、减调整指令,(ADDAL,i8/r8/m8)(ADCAL,i8/r8/m8)AAA;AL将AL的加和调整为非压缩BCD码;AHAH调整的进位,(SUBAL,i8/r8/m8)(SBBAL,i8/r8/m8)AAS;AL将AL的减差调整为非压缩BCD码;AHAH调整的借位,使用AAA或AAS指令前,应先执行以AL为目的操作数的加法或减法指令AAA和AAS指令在调整中产生了进位或借位,则AH要加上进位或减去借位,同时CF=AF=1,否则CF=AF=0;它们对其他标志无定义,例题3.14,例题3.15,例3.14:非压缩BCD加,movax,0608h;ax=0608h,非压缩BCD码表示真值68movbl,09h;bl=09h,非压
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年团支部竞聘题目及答案
- 焦作市2024-2025学年八年级下学期语文期末测试试卷
- 2025年人民防空运输队员招聘考试重点难点解析
- 2025年乡村应急管理员招聘考试热点难点解析
- 义务教育地理课程标准2025年版考试题库及答案
- 2025年室内设计师高级面试心得与预测题集
- 2025年中国传统乐器演奏技巧水平测试模拟试题集
- 2025年中国铁路建设集团招聘笔试模拟题集和答案详解
- 2025年人力资源管理师考试重点与模拟题集
- 2025年工程行业专业认证模拟考试题及答案解析大全
- 《大数据导论(第2版)》全套教学课件
- 职业病防护设施与个体防护用品的使用和维护
- 绿化养护服务投标方案(技术标)
- 电力营销考试题库
- 护理专业实训室设备管理制度
- TB-T 3356-2021铁路隧道锚杆-PDF解密
- 2024届陕西省渭南市临渭区小升初语文重难点模拟卷含答案
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
- 配电自动化终端缺陷处理
- 《电力系统治安反恐防范要求 第4部分:风力发电企业》
- 小区物业接管方案
评论
0/150
提交评论