




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上课啦,第二部分 8086/8088指令系统 二 算术运算指令上(Arithmetic) 功能:加、减、乘、除;BCD码表示的十进制数算术运算 (一)加法指令(Arithmetic) (二)减法指令(Subtraction) (三)乘法指令(Multiplication) (四)除法指令(Division) (五)BCD码指令 (六)扩展指令,特点: 多数指令要影响FR,不同指令影响不同 (1) 加、减法指令影响SF,ZF,AF,PF,CF,OF; (2) 加1和减1指令不影响CF; (3) 乘法指令影响CF,OF; (4) 除法指令使大部分标志位的状态不确定; (5) BCD码调整指令对标志位的影响不同; (6) 转换指令对标志位无影响 双操作数指令除源数可为立即数外,其余必须有一个为寄存器操作数;单操作数指令不能为立即数。 运算有带符号数与无符号数。 都可以对字节、字进行算术运算(二进制运算和十进制运算),个别可以运算双字。,(一)加法指令 1、 ADD (Addition) 2、 ADC (Add with carry) 3、 INC (Increment by 1),例1: 设(AX)=4H,(BX)=200H,(DX)=6H, (DI)=500H (DS: 502)=2H 则 ADD AX, BX ;执行后(AX)=204H ADD DX, 2DI ;语句执行后(DX)=8H,1、不带进位加法指令ADD : ADD dest , src : (dest) (src)+(dest) 源数与目的数相加 和送入目的操作数 根据和设置FR中标志位,例2 MOV AL, 7EH ;(AL)=7EH MOV BL, 5BH ;(BL)=5BH ADD AL, BL ;(AL)=7EH+5BH=D9H 影响标志位的情况: SF=1 , 结果最高位1 ZF=0 ,结果不等于0 AF=1 ,D3 位向D4 有进位 PF=0 ,“1”的个数为奇数 CF=0 ,无进位 OF=1 ,和超过127,: (1)ADD可以完成字、字节相加,源数和目标数必须同为无符号数或者同为有符号数。 (2)dest可以为Reg、Mem src可以为Im、Reg、Mem,不能同时为Mem。 有下列合法5种格式 ADD R, R ;通用寄存器之间相加 ADD R, Im ;通用寄存器与立即数之间相加 ADD M, Im ;内存数与立即数相加 ADD M, R ;通用寄存器与内存数之间相加 ADD R, M ;内存数与通用寄存器之间相加,(3)SegR内容不参与加减乘除运算 判断下列语句合法否? ADD AX,CL ADD DS,BX ADD SI,1000H ADD AH,DATA-BYTE,,bit不匹配 ,SegR不参与 ,不能MM ,(4)指令影响标志位的情况: OF=1:8位带符号数相加,和超出范围(-128到+127) 16位带符号数相加,和超出范围(-32768到+32767); OF标志可用来表示有符号数的溢出,有符号数的溢出是一种出错,在运算过程中应当避免。 CF=1:8位无符号数相加,和超过255, 16位无符号数相加,和超过65535。 CF标志可用来表示无符号数的溢出。 其他条件标志(SF,AF,PF,ZF)根据定义设定。,2、带进位加法指令ADC :ADC dest,src :(dest)(dest)+(src)+CF : (1) CF: 进位标志CF的现行值(上条指令CF值) (2)合法形式有: ADDC R, R ;通用寄存器之间相加 ADDC R, Im ;通用寄存器与立即数之间相加 ADDC M, Im ;内存数与立即数相加 ADDC M, R ;通用寄存器与内存数之间相加 ADDC R, M ;内存数与通用寄存器之间相加 (3) 主要用于多字节运算中,可以将低字节运算的进位加入到高字节运算中.,计算 3B74AC60F8H+20D59E36C1H=? 两数存放在:DATA1,DATA2的开始单元,流程图,多字节数内存存放,程序1:字节加法,循环5次完成,结果在DATA1区域中 MOV CX, 5 MOV SI, 0 ; 清SI CLC ; 清CF again: MOV AL, DATA2SI ADC DATA1SI,AL INC SI ;(SI)+1 (SI) DEC CX ;(CX)-1 (CX) JNZ again ;(CX)0 转移 HALT ;停机 程序2:字加法,加3次完成,结果在DX:BX:AX中 MOV AX,60F8H ADD AX,36C1H MOV BX,74ACH ADC BX,D59EH MOV DX,003BH ADC DX,0020H,3、加1指令INC : INC dest : (dest)(dest)+1 对指定的目标操作数+1操作数单元。 : (1)单操作数指令 (2) dest :8/16bit的寄存器、存储器。不能是段寄存器、立即数。 (3)影响SF,ZF,AF,PF,OF, 不影响CF。 (4)用于在循环程序中修改循环次数和地址指针。,例: INC DL ; 8位寄存器1 INC SI ;16位寄存器1 INC BYTE PTR BXSI ;存储器1(字节操作) INC WORD PTR DI ;存储器1(字操作) INC DS ; 错 INC 30H ;错,(二)减法指令 1、SUB(Subtraction) 2、SBB(Subtraction with borrow) 3、DEC(Decrement by 1 ) 4、NEG(Negate) 5、CMP(Compare),1、不带借位减法指令SUB : SUB dest,src :(dest)(dest)-(src),置FR : (1)src:Im,R,Mem。dest:R,Mem。 例:SUB AL,37H ; 寄存器-立即数 SUB BX,DX ; 寄存器-寄存器 SUB CX, VAR1 ; 寄存器-存储器 SUB ARRAYSI, AX ; 存储器-寄存器 SUB WORD PTRALPHABXDI,512H ;Mem-Im (2)CF=1,无符号数小减大; SF=1,带符号数小减大, OF=1溢出.,例: (BL)=13H (CL)=68H SUB BL,CL,0001 0011 13H 0110 1000 68H 1010 1011 ABH,执行后: FR:CF=1 AF=1 PF=0 ZF=0 SF=1 OF=0 (BL)=ABH (CL)=68H,(3)寄存器数自身相减,则将Reg清零。 如:SUB AX,AX 执行后:(AX)=00H, CF=0,ZF=1,PF=0,SF=0,OF=0,AF=0,2、带借位减法指令 SBB :SBB dest,src :(dest)(dest)-(src)- CF 目标数减源数 差再减标志位CF 差送入目标数单元 置FR相关位的值 : (1)src:立即数,寄存器,存储器。 dest:寄存器,存储器。 合法形式有:,SBB R,R SBB CX,DX;寄存器-寄存器-CF SBB R,Im SBB BX,100H;寄存器-立即数 -CF SBB M,Im SBB SI+1000H,96H;存储器-立即数-CF SBB M,R SBB DISPBP, BL;存储器-寄存器-CF SBB R,M SBB AL, DATA1SI;寄存器-存储器-CF (2)运算中CF是进位标志CF的现行值(上条指令CF值),不是运算完毕后CF的值。 (3)用途:用于多字节数减法,3、减1指令DEC :DEC dest :(dest)(dest)-1 : (1)dest:寄存器、存储器。不能是段寄存器。 (2)标志位影响SF,ZF,AF,PF,OF;不影响CF。 (3)用于在循环程序中修改地址指针和循环次数。 MOV AX , 0FFFFH CYC: DEC AX JNZ CYC HLT 用于延时时间。,4、求补指令NEG : NEG dest : (dest)0-(dest) 把操作数按位求反后末位+1 结果送回目标数单元 置FR : (1)dest:寄存器、存储器。 (2)影响标志:A、C、O、P、S、Z。 CF:操作数为0时求补,CF=0;一般使CF=1. OF:对-128(80H)或-32768(8000H)求补,结果不变,OF=1;否则OF=0.,(3)NEG将dest作“有符号数”处理。 若(dest)是正数,则求补后是绝对值相等的负数(补码) MOV AL,3;AL03H NEG AL;AL0-03H=0FDH 若(dest)是负数(补码) ,则求补后是绝对值相等的正数 MOV AL,-3;AL0FDH NEG AL;AL0-0FDH=03H 利用NEG可以求得绝对值,见下例。,例: 从AREA1开始存100个带符数。 求:各数的绝对值存于AREA2的开 始单元。,程序: LEA SI, AREA1 LEA DI, AREA2 MOV CX, 100 CHECK: MOV AL, SI OR AL, AL JNS NEXT NEG AL NEXT: MOV DI, AL INC SI INC DI DEC CX JNZ CHECK HALT,5、比较指令CMP :CMP dest,src :(dest)-(src),结果不送回dest 置标志寄存器 : (1)影响标志:A、C、O、P、S、Z。 (2)src、dest类型与SBB同。 例:CMP AL,0AH ;寄存器与立即数比较 CMP CX, DI ;寄存器与寄存器比较 CMP AX, AREA1;寄存器与存储器比较 CMP BX+5, SI;存储器与寄存器比较 CMP WORD PTR 200H,100H;存储器与立即数比较,(3)可以用来比较两个数之间的关系: 两者是否相等,两个数中哪个大。 根据ZF标志,判断两者是否相等; 根据CF标志, 判断两个无符号数的大小; 用SF、OF标志,判断二个带符号数的大小。 根据Z标志,可判断两者是否相等 例: CMP AX, BX ZF=1, (AX) = (BX),两者相等 ZF=0, (AX) = (BX),两者不相等, 根据CF标志, 判断两个无符号数的大小 例: 比较AX,BX寄存器, 将大数送(AX) CMP AX,BX JNC NEXT ; CF=0转NEXT XCHG AX,BX NEXT: 结论:CF=0,(AX)(BX); CF=1,(AX)0, B0 A0, B0,四种情况讨论(操作数以8位为例),分析以上四种情况得出如下结论: A: OF=0 时: SF=0, 则:AB SF=1, 则:AB SF=0,则:AB; O、S异号时: 记作 SO=1 , 则: AB, 用JG/JNLE转移指令;SO=1时, AB, 用JL/JNGE转移指令。,(4)CMP与条件转移指令结合起来,完成各种条件判断和相应的程序转移。 应用举例:带符号数找最大值 若自BLOCK开始的内存缓冲区中,有100个带符号数。找出最大值。并存放到MAX单元中。 思路: 第一个数取出 ( AX), 取出第二个数(第二个字单元内容)与(AX)比较
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省日照市莒县2024-2025学年八年级(下)期末物理试卷(含答案)
- 河南省新乡市新乡县2024-2025学年四年级下学期6月期末数学试题(含答案)
- 北京市海淀区2024-2025学年高一下学期期末物理试卷(含答案)
- 新零售业态研究
- 绿色消费趋势及对市场影响的分析
- 氢能产业园氢气市场需求与供应链管理
- 供水管网数据统计与分析技术方案
- 胎盘早剥汉中马晖12课件
- 物流公司财务管理方案
- 水电站监控课件
- 2025年秋季新学期全体中层干部会议校长讲话:在挑战中谋突破于坚实处启新篇
- 2025年幼儿园保育员考试试题(附答案)
- 【《惠东农商银行个人信贷业务发展现状及存在的问题和策略分析》15000字】
- 2025中国医师节宣传教育课件
- 光伏项目开发培训课件
- 消防设施操作员(监控方向)中级模拟考试题及答案
- 高中数学选修一(人教A版2019)课后习题答案解析
- 中国农业银行笔试题库(含答案)
- GA 1808-2022军工单位反恐怖防范要求
- GB/T 4745-2012纺织品防水性能的检测和评价沾水法
- 新部编人教版八年级上册道德与法治全册课时练(作业设计)
评论
0/150
提交评论