电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

指令系统3(算术运算指令)(楼俊君

47页
  • 卖家[上传人]:san****019
  • 文档编号:70835356
  • 上传时间:2019-01-18
  • 文档格式:PPT
  • 文档大小:2.28MB
  • / 47 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、1,4.3.2 算术运算指令,涉及两种类型数据: 无符号数和有符号数。对加减法指令,无符号和有符号数可采用同一套指令,但应注意: 参加的操作数必须都是无符号数或都是有符号数。 需使用不同的标志位(CF,OF)来检查无符号数和有符号数的运算结果是否溢出。 这类指令一般都影响标志寄存器FLAGS。,2,表4 - 2 算术运算类指令表,3,两个8位数相加时有4种情况:,无符号数和有符号数均不溢出 二进制相加 无符号数加 有符号数加 0000 1000 8 +8 +0001 1110 + 30 + (+30) 0010 0110 38 +38 结果38 CF=0 OF=0,无符号数范围0255 带符号数范围-128127,4, 无符号数溢出 无符号数 有符号数 0000 1000 8 +8 +1111 1101 +253 +(-3) 10000 0101 261 +5 结果5 CF=1 OF=0 有符号数溢出 0000 1000 8 +8 +0111 1101 +125 +(+125) 1000 0101 133 +133 结果-123 CF=0 OF=1 (补码表示),5, 无符号数和有符号

      2、数均溢出 无符号数 有符号数 1000 1000 136 -120 +1111 0111 +247 +(-9) 10111 1111 383 -129 结果127 CF=1 OF=1 上面四种情况说明, CF标志可用来表示无符号数的溢出, OF标志可用来表示有符号数的溢出。 有符号数的溢出是一种出错状态,在运算过程中应当避免。,6,所有的算术运算指令,都会影响FLAGS标志寄存器的6个状态标志CF/OF/ZF/SF/AF/PF(3个控制标志IF/DF/TF不受影响)。 总的讲,有这样一些规则: 当无符号数运算产生溢出(即最高位向前有进位 或借位)时,CF=1,否则为0; 当有符号数运算产生溢出时,OF=1(即OF=CFCF-1) , 否则为0; 当运算结果为0时,ZF=1 ,否则为0; 当运算结果为负数时,SF=1 ,否则为0; 当运算一半位置有进位或借位时,AF=1 ,否则为0; 当运算结果中有偶数个时,PF=1 ,否则为0。,7,共有5条: (1) 不带进位的加法指令ADD 格式: ADD acc,data ADD mem/reg,data ADD mem/reg1,mem/reg

      3、2 注:1.源和目的操作数不能同时为存储器操作数 2.不能把段寄存器作为操作数 例:ADD AL,30H ADD AX,BX+20H ADD CX,SI ADD DI,200H ADD指令对标志位(指6个状态标志)都有影响。,1.加法指令,8,例:MOV AL,7EH ADD AL,5BH 两条指令执行后,标志位(指6个状态标志)都有影响。 AF=1 表示bit3向bit4有进位 CF=0 表示最高位向前无进位 OF=1 表示若为有符号数加法,其运算结果产生溢出 PF=0 表示8位的运算结果中,1的个数为奇数 SF=1 表示运算结果的最高位为1 ZF=0 表示运算结果不为0,不带进位的加法指令ADD,9,(2) 带进位位的加法指令ADC,ADC指令在形式上和功能上都有与ADD类似,只是相加时还要包括进位标志CF的内容。 例如: ADC AL,68H ;AL(AL)+68H+(CF) ADC AX,CX ;AX(AX)+(CX)+(CF) ADC BX,DI ;BX(BX)+DI+1DI+(CF),10,例:有两个4字节的无符号数相加: 2C 56 F8 AC + 30 9E 47 BE

      4、 = ? 设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区,如下页图所示。 因CPU只能进行8位或16位的加法运算,为此可将加法分4次进行。,ADC指令主要用于多字节加法运算中,11,56H,2CH,BEH,47H,BUFFER1,BUFFER2,ACH,F8H,9EH,30H,被加数,加数,数据段,多字节加法示意图,.,.,12,程序段如下: MOV CX,4 ;置循环次数 MOV SI,0 ;置SI初值为零 CLC ;清进位标志CF LL: MOV AL,BUFFER2SI ADC BUFFER1SI,AL ;带进位加 INC SI ;(SI)+1 DEC CX ;(CX)-1 JNZ LL ;若(CX)0,则转LL,13,ADD/ADC指令对条件标志位(CF/OF/ZF/SF)的影响:,CF位表示无符号数相加的溢出。 OF位表示带符号数相加的溢出。,14,格式:INC reg/mem 功能:类似于C语言中的+操作:对指定的操作数加1 例: INC AL INC SI INC BYTE PTRBX+4 注意:本指令不影响CF标志

      5、,但对AF/OF/PF/SF/ZF会产生影响。,3) 加1指令INC(单操作数指令),15,(1) 不考虑借位的减法指令SUB 格式: SUB dest, src 操作: dest(dest)-(src) 注:1.源和目的操作数不能同时为存储器操作数 2.不能把段寄存器作为操作数 指令例子: SUB AL,60H SUB BX+20H,DX SUB AX,CX,2. 减法指令,16,SBB指令主要用于多字节的减法。 格式: SBB dest, src 操作: dest(dest)-(src)-(CF) 指令例子: SBB AX,CX SBB WORD PTRSI,2080H SBB SI,DX,(2) 考虑借位的减法指令SBB,17,作用类似于C语言中的”操作符。 格式:DEC opr 操作:opr(opr)-1 指令例子: DEC CL DEC BYTE PTRDI+2 DEC SI,(3) 减1指令DEC,注:该指令与INC一样,它不影响CF标志,但对AF/OF/PF/SF/ZF会产生影响。,18,格式: NEG opr 操作: opr 0-(opr) 对一个操作数取补码相当于用0

      6、减去此操作数,故利用NEG指令可得到负数的绝对值。 例: 若(AL)=0FCH,则执行 NEG AL 后, (AL)=04H,CF=1 本例中,0FCH为-4的补码,执行求补指令后,即得到4(-4的绝对值)。,(4) 求补指令NEG,19,SUB/SBB指令对标志位(CF/OF/ZF/SF)的影响:,CF=1表示无符号数减法溢出。 OF=1表示带符号数减法溢出。 NEG指令对CF/OF的影响: CF:操作数为0时,求补的结果使CF=0,否则CF=1。 OF:字节运算对-128求补或字运算对-32768求补时OF=1, 否则OF=0。,20,格式: CMP dest, src 操作: dest(dest)-(src) (而 SUB dest, src; dest(dest)-(src) ) CMP也是执行两个操作数相减,但结果不送目标操作数,其结果只反映在标志位上。 指令例子: CMP AL,0AH CMP CX,SI CMP DI,BX+03,(5) 比较指令CMP,21,根据标志位来判断比较的结果,1)根据ZF判断两个数是否相等。若ZF=1,则两数相等。 2)若ZF=0,则两个数不相

      7、等,则分两种情况考虑: 比较的是两个无符号数 若CF=0,则destsrc; 若CF=1,则destsrc。 比较的是两个有符号数 若OFSF=0,则destsrc; 若OFSF=1,则destsrc。,22,比较指令在使用时,一般在其后紧跟一条条件转移指令,判断比较结果的转向。 举例:在内存数据段从DATA开始的单元中存放了两个8位无符号数,试比较它们的大小,并将大的数送MAX单元。 程序: LEA BX,DATA ;DATA偏移地址送BX MOV AL,BX ;第一个无符号数送AL INC BX ;BX加1,指向第二个数 CMP AL,BX ;两个无符号数进行比较 JNC DONE ;若CF=0,表示第一个数大,转向DONE MOV AL,BX ;否则,第二个无符号数送AL DONE:MOV MAX,AL ;将较大的无符号数送MAX HLT ;停止,23,进行乘法时: 8位 8位 16位乘积 (即 AL mem8/reg8 AX) 16位 16位 32位乘积 (即 AX mem16/reg16 DX AX) (1) 无符号数的乘法指令MUL mem/reg 格式: MUL src

      8、操作:字节操作数 (AX) (AL) (src) 字操作数 (DX, AX) (AX) (src) 指令例子: MUL BL ;(AL)(BL),乘积在AX中 MUL CX ;(AX)(CX),乘积在DX,AX中 MUL BYTE PTRBX,3. 乘法指令,24,格式与MUL指令类似,只是要求两操作数均为有符号数。 指令例子: IMUL BL ;(AX)(AL)(BL) IMUL WORD PTRSI ;(DX,AX)(AX)(SI+1SI),(2) 有符号数乘法指令IMUL,注意:MUL/IMUL指令中 AL(AX)为隐含的乘数寄存器; AX(DX,AX)为隐含的乘积寄存器; SRC不能为立即数; 除CF和OF外,对其它标志位无定义。,25,MUL/IMUL乘法指令对CF/OF的影响:,例:(AL) = A5H(-5B),(BL) = 11H (1) IMUL BL ; (AX) (AL)(BL) ; A511 -5B11=-060B F9F5 ; (AX) = F9F5H CF=OF=1 (2) MUL BL ; (AX) (AL)(BL) ; A511= 0AF5 ; (AX)

      9、 = 0AF5H CF=OF=1,26,4. 除法指令,进行除法时:16位/8位 8位商及8位余数 32位/16位 16位商及16位余数 对被除数、商及余数存放有如下规定: 被除数 商 余数 字节除法 AX AL AH 字除法 DX:AX AX DX,27,格式: DIV src 操作:字节操作 (AL) (AX) / (src) 的商 (AH) (AX) / (src) 的余数 字操作 (AX) (DX, AX) / (src) 的商 (DX) (DX, AX) / (src) 的余数 指令例子: DIV CL DIV WORD PTRBX 注:若除数为零或AL中商大于FFH(或AX中商大于FFFFH),则CPU产生一个类型0的内部中断。,(1) 无符号数除法指令DIV,28,(2) 有符号数除法指令IDIV,格式: IDIV src 操作与DIV类似。商及余数均为有符号数,且余数符号总是与被除数符号相同。 CBW与CWD两指令主要用于被除数扩展 注意: 对于DIV/IDIV指令 AX(DX,AX)为隐含的被除数寄存器。 AL(AX)为隐含的商寄存器。 AH(DX)为隐含的余数寄存器。 src不能为立即数。 对所有FLAGS的状态标志位均无定义。,29,运算要求被除数字长是除数字长的两倍,若不满足则需对被除数进行扩展,否则产生错误。 8位16位 16位32位 ALAX(AH AL) AXDX AX 对无符号数除法扩展,只需将AH或DX清零即可。 对有符号数而言,则是符号位的扩展。可使用符号扩展指

      《指令系统3(算术运算指令)(楼俊君》由会员san****019分享,可在线阅读,更多相关《指令系统3(算术运算指令)(楼俊君》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.