




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二、8086/8088的指令系统(续)2.算术运算指令(Arithmetic)内容:
8086/8088提供加、减、乘、除、转换五种基本算术操作;
利用十进制调整指令和ASCII调整指令对BCD码表示的十进制数进行算术运算;
对带符号数与无符号数进行乘、除运算。(一)加法指令(Arithmetic)(二)减法指令(Subtraction)(三)乘法指令(Multiplication)(四)除法指令(Division)(五)转换指令特点:
大部分都影响标志位,不同指令影响不同:(1)加、减法指令影响SF,ZF,AF,PF,CF,OF;(2)加1和减1指令不影响CF;(3)乘法指令影响CF,OF;(4)除法指令使大部分标志位的状态不确定;(5)对BCD码调整指令对标志位的影响不同;(6)转换指令对标志位无影响
都可以用于字节、字的运算;
双操作数指令除源为立即数外,其余必须有一个操作数
为寄存器;单操作数指令不能为立即数。
(一)加法指令(Arithmetic)8086具有5种加法操作指令:1、ADD(Addition)加法指令2、ADC(Addwithcarry)带进位加法指令3、INC(Incrementby1)加1指令
4、AAA(ASCIIadjustforaddition)加法ASCII调整指令5、DAA(Decimaladjustforaddition)加法十进制调整指令
1、ADD(Addition)加法指令指令格式:ADDdest,src;(dest)(dest)+(src)
Src:立即数,寄存器,存储器。 dest:寄存器,存储器。例: ADDCL,10 ;寄存器+立即数 ADDDX,SI ;寄存器+寄存器 ADDAX,MEM ;寄存器+存储器 ADDDATA[BX],AL ;存储器+寄存器 ADDBYTEPTRALPHA[DI],30H;存储器+立即数特点:
可以进行8位、16位的无符号数和带符号数的加法运算;
源操作数和目标操作数不能同时为存储器,不能为段寄存器;
指令影响标志位的情况:
OF=1, 8位带符号数相加,和超出范围(-128~+127),16位带符号数相加,和超出范围(-32768~+32767);CF=1,8位无符号数相加,和超过255,
16位无符号数相加,和超过65535。其他条件标志(SF,AF,PF,ZF)根据定义设定。例 MOVAL,7EH ;(AL)=7EH MOVBL,5BH ;(BL)=5BH ADDAL,BL ;(AL)=7EH+5BH=D9H影响标志位的情况: SF=1 ,结果最高位=1 ZF=0 ,结果不等于0 AF=1 ,D3位向D4有进位 PF=0 ,”1”的个数为奇数 CF=0 ,无进位 OF=1 ,和超过+127
(两个正数相加,结果为负;反之亦是)2、ADC(Addwithcarry)带进位加法指令格式:ADCdest,src;(dest)←(dest)+(src)+CF
CF:
进位标志CF的现行值(上条指令CF值)特点:与ADD同。用途:主要用于多字节运算中。类型举例: ADCCX,300 ;寄存器+立即数+CF ADCAL,BL ;寄存器+寄存器+CF ADCDX,COUNT[SI] ;寄存器+存储器+CF ADCBLOCK[DI],BX ;存储器+寄存器+CFADCBYTEPTRMEM,6 ;存储器+立即数+CF用途举例:计算两个多字节数相加3B74AC60F8H+20D59E36C1H=?两个多字节数存放在:DATA1,DATA2的开始单元。多字节数内存存放程序:
MOVCX,5 MOVSI,0 ;清SI
CLC ;清CFLOOPER: MOVAL,DATA2[SI]
ADCDATA1[SI],AL INCSI ;(SI)+1(SI) DECCX ;(CX)-1(CX) JNZLOOPER ;(CX)0转 HLT ;停机问题思考:(1) 什么叫溢出?什么叫进位?(2) 有进位就有溢出,没有进位就没有溢出?(1)溢出------是指带符号数的补码溢出。
字长为n位带符号数,补码运算能表示范围为:-2n-1~+2n+1–1如果运算结果超出该范围,叫补码溢出,简称溢出。在溢出时,造成运算错误。
进位------是指运算结果的最高位向更高位的进位。有进位,CF=1;无进位,CF=0问题思考:(1) 什么叫溢出?什么叫进位?(2) 有进位就有溢出,没有进位就没有溢出?(1)溢出------是指带符号数的补码溢出。
字长为n位带符号数,补码运算能表示范围为:-2n-1~+2n+1–1如果运算结果超出该范围,叫补码溢出,简称溢出。在溢出时,造成运算错误。
进位------是指运算结果的最高位向更高位的进位。有进位,CF=1;无进位,CF=0(2)有进位就有溢出,没有进位就没有溢出?结论: 有进位不一定有溢出,没有进位不一定没有溢出。以8位二进制数为例分析一下数的溢出与进位情况:下面分4种情况加以讨论:(1) 带符号数和无符号数都不溢出(2) 无符号数溢出(3) 带符号数溢出(4) 带符号数和无符号数都溢出(1) 带符号数和无符号数都不溢出(2) 无符号数溢出二进制数看作无符号数看作带符号数0000011111111011+000000107251+258+7-5++2相加标志CF=1,OF=0CF=1OF=0溢出无符号数溢出溢出结果应为2,错不溢出异号数相加不可能有溢出CF=1(3) 带符号数溢出二进制数看作无符号数看作带符号数00001001011111100+100001019124+133+9+124++133相加标志CF=0,OF=1CF=0OF=1溢出带符号数溢出不溢出溢出结果为-5结果错(4) 带符号数和无符号数都溢出结论:(1)带符号数相加溢出
根据OF=1?,判断带符号数产生溢出?
OF=1,同符号数相加,结果符号与其相反,产生溢出;OF=0,同符号数相加,结果符号与其相同,不产生溢出;异号数相加,不可能溢出。(2)无符号数相加溢出
根据CF=1?,判断无符号数产生溢出?
CF=1,无符号数相加产生溢出,但结果并没有错, 只是结果放不下。3、INC(Incrementby1)加1指令格式:INC dest ;(B/W),(dest)←(dest)+1 dest:寄存器、存储器。不能是段寄存器。功能:对指定的目标操作数+1操作数单元。用途:用于在循环程序中修改地址指针和循环次数。标志位影响情况:影响SF,ZF,AF,PF,OF。
不影响CF。操作数类型:可以是寄存器,存储器。不能是段寄存器。例:INCDL ;8位寄存器+1INCSI ;16位寄存器+1INCBYTEPTR[BX][SI];存储器+1(字节操作)INCWORDPTR[DI] ;存储器+1(字操作)
INCDS ;错(二)减法指令(Subtraction)
8086有7条减法指令:1、SUB(Subtraction)减法指令2、SBB(Subtractionwithborrow)带进位减法指令
3、DEC(Decrementby1)减1指令4、NEG(Negate)求补指令5、CMP(Compare)比较指令6、AAS(ASCIIadjustforsubtraction)减法ASCII调整指令7、DAS(Decimaladjustforsubtraction)减法十进制调整指令1、SUB(Subtraction)减法指令格式::SUBdest,src;(dest)←(dest)-(src)
Src:立即数,寄存器,存储器。 Dest:寄存器,存储器。例: SUBAL,37H ;寄存器-立即数 SUBBX,DX ;寄存器-寄存器 SUBCX,VAR1 ;寄存器-存储器 SUBARRAY[SI],AX ;存储器-寄存器SUBWORDPTRALPHA[BX][DI],512H;存储器减立即数这种指令影响标志位:A、C、O、P、S、Z标志。
2、SBB
(Subtractionwithborrow)带进位减法指令
格式::SBBdest,src;(dest)←(dest)-(src)-CF CF:进位标志CF的现行值(上条指令CF值)
Src:立即数,寄存器,存储器。 dest:寄存器,存储器。指令影响标志位、B/W数运算情况同SBB用途:用于多字节数相减例: SBBBX,100H ;寄存器-立即数-CF SBBCX,DX ;寄存器-寄存器-CF SBBAL,DATA1[SI] ;寄存器-存储器-CF SBBDISP[BP],BL ;存储器-寄存器-CFSBBBYTEPTRALPHA[SI+6],96H;存储器-立即数-CF3、DEC(Decrementby1)减1指令格式:DECdest ;(B/W) (dest)←(dest)-1
dest:寄存器 、存储器。不能是段寄存器。功能:对指定的目标操作数-1操作数单元。用途:用于在循环程序中修改地址指针和循环次数。标志位影响情况:影响SF,ZF,AF,PF,OF。
不影响CF。DEC用途举例: … MOVAX,0FFFFH CYC:DECAX JNZCYC HLT …用于延时时间。4、NEG(Negate)求补指令格式:NEGdest;B/W,(dest)←0-(dest)
dest:寄存器 、存储器。操作:把操作数按位求反后末位+1。(dest)←0FFFFH-(dest)+1影响标志:A、C、O、P、S、Z。CF: 操作数为0时求补,CF=0;一般使CF=1.OF:对-128(80H)或-32768(8000H)求补,结果没有变化,但OF=1;否则OF=0.5、CMP(Compare)比较指令格式:CMPdest,src ;B/W(dest)-(src)
结果不送,置标志。影响标志:A、C、O、P、S、Z。
src: 立即数,寄存器,存储器。 dest:寄存器,存储器。例: CMPAL,0AH ;寄存器与立即数比较 CMPCX,DI ;寄存器与寄存器比较 CMPAX,AREA1 ;寄存器与存储器比较 CMP[BX+5],SI ;存储器与寄存器比较CMPWORDPTRALPHAGAMMA,100H;存储器与立即数比较用途:用比较指令来比较两个数之间的关系: 两者是否相等,两个数中哪个大。(1)根据Z标志,判断两者是否相等;(2) 根据CF标志,判断两个无符号数的大小;(3) 用S、O标志,判断二个带符号数的大小。
(1)根据Z标志,可判断两者是否相等例:CMPAX,BX
ZF=1,(AX)=(BX),两者相等 ZF=0,(AX)=(BX),两者不相等(2) 根据CF标志,判断两个无符号数的大小例:比较AX,BX寄存器,将大数(AX) …
CMPAX,BX JNCNEXT;CF=0转NEXT XCHGAX,BXNEXT:……结论:CF=0,(AX)>(BX);CF=1,(AX)<(BX)(3) 用SF、OF标志,判断二个带符号数的大小设:被比较二个带符号数分别为:A、B分四种情况讨论:
A>0,B>0
A<0,B<0 A>0,B<0 A<0,B>0四种情况讨论(操作数以8位为例):ABCMPA,B结论75A>0,B>0SF=0,OF=0则:A>B57情况A>0,B>0SF=1,OF=0则:A<B-525-7-2-5-71-7-5-5-(-7)+2A<0,B<0SF=1,OF=0则:A<BA<0,B<0SF=0,OF=0则:A>B-7-(-5)-2
3+127-50A>0,B<0OF=1,SF=1则:A>B+127-(-50)+177
4-50+127A<0,B>0SF=0,OF=1则:A<B-50-(+127)-1777-52127-(-50)=177在计算机中运算时
01111111+0011001010110001=-79分析以上四种情况得出如下结论:OF=SF=0或SF=OF=1时:记作SFOF=0,则:
A>B;
OF、SF异号时:记作SO=1,则:
A<B。CMP指令应用举例:带符号数找最大值
若自BLOCK开始的内存缓冲区中,有100个带符号数。找出最大值。并存放到MAX单元中。思路:
第一个数取出
(AX),取出第二个数(第二个字单元内容)与(AX)比较: (AX)>第二个数,不做交换,否则,(第二个字单元内容)(AX)。再取第三个数,
…
经过99次比较,在(AX)中得到最大数。
…编程: … MOVBX,OFFSETBLOCK MOVAX,[BX] INCBX INCBX MOVCX,99AGAIN:CMPAX,[BX]
JGNEXT
;(AX)>(16d(ds)+(BX))转NEXT MOVAX,[BX]NEXT: INCBX INCBX DECCX
JNZAGAIN MOVMAX,AX ;MAX单元存放最大值 …(三)乘法指令无符号MUL,带符号IMULwhy/?因为:例:3×(-2)=-6,3×14=42(2AH)方法一:直接相乘0011×111000101010=2AH方法二:去掉符号位,相乘后,再添上符号位(取补码)0011
×001000000110取补码111111010=FAH=-6说明•SRC只能是通用REG或M寻址,不能是立即数。•只能是字节乘字节或字乘字•存储器寻址时加类型说明,如
MULBYTEPTR[BX]MULWORDPTR[BX]格式:
MUL(IMUL)SRC;SRC字节:(AL)×SRCAXSRC字:(AX)×SRCDX:AX(四)除法指令
1、有符号数和无符号数除法指令格式:
DIV(IDIV)SRC;SRC字节:(AX)÷SRCAL(商)…AH(余数)SRC字:(DX:AX)÷
SRCAX(商)…DX(余数)注意:SRC不能是立即数;若商超出字或字节表示的范围,自动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 土木工程材料模考试题+参考答案
- 个人工作实习心得体会
- 单独中介合同范本
- 兑房押金合同范例
- epc合同和总包合同范本
- 三年级下学期语文教学总结
- 中式烹调师中级练习题及参考答案
- 养殖蚯蚓合同范本
- 单独招生机电类复习题
- 七色花幼儿教学反思
- 6.《变色龙》省公开课一等奖全国示范课微课金奖课件
- 股权架构设计合同
- HJ1209-2021工业企业土壤和地下水自行监测技术指南(试行)
- 《跨境电商英语》课程标准
- 2024年湖南电气职业技术学院单招职业技能测试题库附答案
- 幼儿园卫生保健工作汇报
- 第一课 追求向上向善的道德(课时1)(课件)
- 流行音乐(中国)
- 合规管理体系实务培训测试题附有答案
- 《职场与求职渠道》课件
- 民主(组织)生活会批评和自我批评示例31个
评论
0/150
提交评论