算术运算指令
更新时间:2023-12-01 00:09:01 阅读量: 教育文库 文档下载
? 算数类指令经常会影响标志位,搞清楚以下两个概念:
? 对标志没有定义:指令执行后这些标志是任意的、不可预测(就是谁也不知道是0还
是1)
? 对标志没有影响:指令执行不改变标志状态
? 注意有符号数进行计算是用其补码进行计算的,有符号数在计算机里是以补码的形式
进行存储的!!!!!
? 使用内存地址为寻址方式时,一定要用伪指令指明操作数类型。 ? 加法类(带符号数相加要考虑溢出):
1. 加法指令ADD(ADD 目的操作数,源操作数;将源与目的操作数相加,结果送到目的操
作数)
目的操作数:reg,mem 源操作数:imm,reg,mem 注意:
1. 存储器之间不能相加。
2. 根据结果对相应的标志位作出改变,即,影响标志位!!!
2.带进位加法指令ADC(ADD 目的操作数,源操作数;将源、目的操作数与CF标志位相加,结果送到目的操作数)
目的操作数:reg,mem 源操作数:imm,reg,mem 注意:
1. 存储器之间不能相加。
2. 根据结果对相应的标志位作出改变,即,影响标志位!!! 3. ADC指令主要与ADD配合,实现多精度加法运算。 4. CF是本指令执行前的状态 ? 多精度加法运算示例
mov ax,4652h ;ax=4652h
add ax,0f0f0h ;ax=3742h,CF=1 mov dx,0234h ;dx=0234h
adc dx,0f0f0h ;dx=f325h,CF=0 ;DX.AX=0234 4652H +F0F0 F0F0H =F325 3742H
3.增量指令INC(increment;INC指令对操作数加1(增量);INC reg/mem) 操作数:reg/mem 注意:
1. 不影响进位CF标志,按定义设置其他状态标志。(仅不影响CF,还会影响其他) 2. 主要用于对计数器和地址指针的调整,而不用来做单纯的算术计算。 3. 当使用存储器操作数时,不得出现二义性。 ? 减法类:
4. 减法指令SUB(目的操作数减去源操作数,结果送到目的操作数;sub 目的操作数,源
操作数)
目的操作数:reg,mem 源操作数:imm,reg,mem 注意:
1. 存储器之间不能相减。
2. 根据结果对相应的标志位作出改变,即,影响标志位!!! 3.看清谁是减数,谁是被减数。
5.带借位减法指令SBB(将目的操作数减去源操作数,再减去借位CF(进位),结果送到目的操作数,)
目的操作数:reg,mem 源操作数:imm,reg,mem 注意:
1. 存储器之间不能相减。
2. 根据结果对相应的标志位作出改变,即,影响标志位!!! 3. 看清谁是减数,谁是被减数。
4. SBB指令主要与SUB配合,实现多精度减法运算 5. CF是本指令执行前的状态 ? 多精度减法运算示例
mov ax,4652h ;ax=4652h
sub ax,0f0f0h ;ax=5562h,CF=1 mov dx,0234h ;dx=0234h
sbb dx,0f0f0h ;dx=1143h,CF=1 ;DX.AX=0234 4652H
-F0F0 F0F0H =1143 5562H
6.减量指令DEC(decrement;) 操作数:reg/mem 注意:
1. 不影响进位CF标志,按定义设置其他状态标志。(仅不影响CF,还会影响其他) 2. 主要用于对计数器和地址指针的调整,而不用来做单纯的算术计算。 3. 当使用存储器操作数时,不得出现二义性。
7.求补指令NEG(negative;用零减去操作数,然后结果返回该操作数) 操作数:reg,mem 注意:
1. 也可以表达成:将操作数按位取反后加1。
2. NEG指令对标志的影响与用零作减法的SUB指令一样,影响标志位!!! ? 课本P49页两种求补方式!!
8.比较指令CMP(compare;CMP指令将目的操作数减去源操作数,按照定义相应设置状态标志,结果不回送目的操作数) 目的操作数:reg,mem 源操作数:imm,reg,mem 注意:
1. 存储器之间不能相减。
2. 根据结果对相应的标志位作出改变,即,影响标志位!!! 3. 看清谁是减数,谁是被减数。 4. 不更改目的操作数!!!!!! ? 十进制调整指令(重要)
十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果
分成压缩BCD码和非压缩BCD码调整(BCD码在计算机中仍以十六进制表示,但是认为是十进制数) ? 压缩BCD码
压缩BCD码就是通常的8421码;它用4个二进制位表示一个十进制位,一个字节可以表示两个十进制位,即00~99 ? 非压缩BCD码
非压缩BCD码用8个二进制位表示一个十进制位,只用低4个二进制位表示一个十进制位0~9,高4位任意,通常默认为0
? 示例:
二进制编码的十进制数:一位十进制数用4位二进制编码来表示 8086支持压缩BCD码和非压缩BCD码的调整运算 真值 8 64
二进制编码 08H 40H 压缩BCD码 08H 64H 非压缩BCD码 08H 0604H
? 压缩BCD码加(DAA)、减(DAS)调整指令 操作数隐含,为寄存器AL (ADD AL,i8/r8/m8) (ADC AL,i8/r8/m8)
? DAA(注意课本P47例题!!两条件都满足的情况。)
使用条件:
1. 当AF标志位为0;或AL寄存器的低4位超出BCD数的计数符号<0AH-0FH>,
则AL寄存器的内容加06F,且将AF置1;
2. 当CF标志位为1,或AL 寄存器的高四位超出BCD数的计数符号<0AH-0FH>,
则AL寄存器的内容加60H,且将CF置1.
;AL←将AL的加和调整为压缩BCD码 (SUB AL,i8/r8/m8) (SBB AL,i8/r8/m8) ? DAS
使用条件:
1. 当AF标志位为1;或AL寄存器的低4位超出BCD数的计数符号<0AH-0FH>,则AL寄存器的内容减06F,且将AF置1;
2. 当CF标志位为1,或AL 寄存器的高四位超出BCD数的计数符号<0AH-0FH>,则AL寄存器的内容减60H,且将CF置1. ;AL←将AL的减差调整为压缩BCD码 注意:
1. 使用DAA或DAS指令前,应先执行以AL为目的操作数的加法或减法指令;
2. DAA和DAS指令对OF标志无定义,按结果影响其他标志,例如CF反映压缩BCD
码相加或减的进位或借位状态.
? 乘法类
乘法指令
1. 无符号乘法
MUL r8/m8;无符号字节乘法,AX←AL×r8/m8
MUL r16/m16;无符号字乘法;DX.AX←AX×r16/m16
操作数:
? 目的操作数隐含,为AX、AL;
? 源操作数为imm8,reg8或imm16,reg16 2.有符号乘法
IMUL r8/m8;有符号字节乘法,AX←AL×r8/m8
IMUL r16/m16;有符号字乘法,DX.AX←AX×r16/m16 注意:
1. 立即数不能作操作数:MUL 3是错的; 2. 分清楚是有符号乘法还是无符号乘法; 3. 影响标志位。 对标志位的影响:
? 乘法指令如下影响OF和CF标志:
? MUL指令——若乘积的高一半(AH或DX)为0,则OF=CF=0;否则OF=CF=1 ? IMUL指令——若乘积的高一半是低一半的符号扩展,则OF=CF=0;否则均1
? 乘法指令对其他状态标志没有定义 标识为影响示例:
mov al,0b4h ;al=b4h=180 mov bl,11h ;bl=11h=17 mulbl ;ax=Obf4h=3060 ;OF=CF=1,AX高8位不为0 mov al,0b4h ;al=b4h=-76 mov bl,11h ;bl=11h=17 imulbl ;ax=faf4h=-1292
;OF=CF=1,AX高8位含有效数字 ? 除法类
除法指令
1. 无符号除法
DIV r8/m8 ;无符号字节除法:AL←AX÷r8/m8的商,Ah←AX÷r8/m8的余数
DIV r16/m16 ;无符号字除法:AX←DX.AX÷r16/m16的商,DX←DX.AX÷r16/m16的余数
操作数:
? 目的操作数隐含,为AX或DX;
? 源操作数为imm8,reg8或imm16,reg16 2.有符号除法
IDIV r8/m8 ;有符号字节除法:AL←AX÷r8/m8的商,Ah←AX÷r8/m8的余数
IDIV r16/m16 ;有符号字除法:AX←DX.AX÷r16/m16的商,DX←DX.AX÷r16/m16的
余数
注意:
1. 立即数不能作操作数:DIV 3是错的; 2. 分清楚是有符号乘法还是无符号乘法; 3. 除法指令对标志没有定义; 4. 除法指令会产生结果溢出。 ? 溢出:
当被除数远大于除数时,所得的商就有可能超出它所能表达的范围。如果存放商的寄存器AL/AX不能表达,便产生溢出,8086CPU中就产生编号为0的内部中断——除法错中断
? 对DIV指令,除数为0,或者在字节除时商超过8位,或者在字除时商超过
16位,则发生除法溢出
? 对IDIV指令,除数为0,或者在字节除时商不在-128~127范围内,或者在字
除时商不在-32768~32767范围内,则发生除法溢出
除法指令示例(算对商和余数,并放对寄存器): mov ax,0400h ;ax=400h=1024 mov bl,0b4h ;bl=b4h=180 div bl ;商al=05h=5 ;余数ah=7ch=124 mov ax,0400h ;ax=400h=1024 mov bl,0b4h ;bl=b4h=-76 idivbl ;商al=f3h=-13 ;余数ah=24h=36
正在阅读:
算术运算指令12-01
2017步步高高中化学三轮冲刺汇编一03-29
C计算机等级考试一级MS模拟试题1-7套及答案解析09-26
《今天怎样做教师》读后感12-12
区知识产权局2021年工作总结报告08-03
IELTS Express Intermediate Coursebook Unit 2 - 图文09-19
功能材料物理试验教学大纲03-08
植物生理 - 图文09-18
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 算术
- 运算
- 指令
- 导学案四年级品德
- 滚筒洗衣机ABAQUS流固耦合实例分析(步骤) - 图文
- 地铁工程质量创优规划
- 2017年旅游英语考试试题及答案
- 2011.10应用宝石学试题库
- 江苏省泰州市泰兴中学2018-2019学年高二上学期段考生物试卷(选修)(10月份) Word版含解析
- 国内翻译界在翻译研究和翻译理论认识上的误区
- 减轻学生课业负担(结题报告)
- 2002—2010年司考真题及参考答案-合同
- 第二章 增值税习题及答案
- 16学前儿童语言教育的方法和途径
- 2013年-河北省石家庄市计算机中考选择题汇编成品8
- 应用文专项练习4
- 图像的空域滤波
- 中国眼膜行业市场调查研究报告(目录) - 图文
- 201X年大学生艾滋病防治知识竞赛活动方案-实用word文档(3页)
- 第一章PLC教案 首页
- 系统解剖学题库(一)
- 脓汁和粪便标本中病原菌的检测(医科大学) - 图文
- unit1 - economy - student version