算术运算类指令_第1页
算术运算类指令_第2页
算术运算类指令_第3页
算术运算类指令_第4页
算术运算类指令_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PSW寄存器Cy:进位标志位AC:半进位标志位F0:供用户使用的标志位OV:溢出标志位P:奇偶标志位:A中1的个数为奇数,P=1,否则P=0。RS1RS0:工作寄存器组选择位00区0(地址:00H~07H)01区1(地址:08H~0FH)10区2(地址:10H~17H)11区3(地址:18H~1FH)Cy

AC

F0

RS1

RS0

OV

P

算术运算类指令1.不带进位加法指令(Addtion)2.带进位加法指令3.带借位减法指令(Subtraction)4.加1指令(Increase)5.减1指令(Decrease)6.十进制调整指令7.乘法指令(Multiplication)8.除法指令(Division)1.不带进位的加法指令ADD(4条) ADDA,Rn ;A(A)+(Rn) ADDA,@Ri ;A(A)+((Ri)) ADDA,direct ;A(A)+(direct) ADDA,#data ;A(A)+dataADD指令将影响PSW的CY、AC、OV和P标志。CY:和的D7位有进位时,(CY)=1;无进位时,(CY)=0。

用于判断无符号运算是否溢出或进行多字节的加法运算。OV:和的D7、D6位的进位相异或,结果存放在OV中。(OV)=1表示发生溢出,(OV)=0表示结果正常。用于判断8位有符号数相加后是否溢出(>127或<-128)。AC:和的D3位有进位时,(AC)=1;无进位时,(AC)=0。

P:当A中二进制数1的个数为奇数时,(P)=1;为偶数时(P)=0。例: MOV A,#7AH MOVR0,#65H ADDA,R0

01111010A+)01100101R011011111ACY=0;OV=1;AC=0;P=1。例:若(A)=86H,(30H)=8DH,则执行指令“ADDA,30H”后(A)=13H,标志位:(CY)=1(AC)=1(OV)=1(P)=0。若把86H和8DH看作无符号数,和为113H,则表示结果正确;若把86H和8DH看作带符号数(都为负数),结果13H却为正数,则有两个负数相加得正数的错误,CPU通过让(OV)=1(溢出,D7位有进位,D6位无进位)指出该错误。2.带进位加法指令ADDC(4条)ADDCA,Rn;

A←(A)+(Rn)+(Cy)ADDCA,@Ri;A←(A)+((Ri))+(Cy)ADDCA,direct

;A←(A)+(direct)+(Cy)ADDCA,#data

;A←(A)+#data+(Cy)对标志位的影响与ADD相同。注意:这里所加的(CY)的内容,是指令执行前已存在的进位标志的内容,而不是执行该指令过程中产生的进位。ADDC可用于多字节运算的编程。例:有两个16位数,低8位分别存于20H和30H之中,高八位分别存于21H和31H中。求和,和的低八位送40H,高8位送41H。程序段如下:MOVA,20H

ADDA,30H;低8位相加MOV40H,A;存和的低8位MOVA,21H

ADDCA,31H;高8位相加,带低八位相加的进位MOV41H,A;存和的高8位3.带借位减法指令(Subtraction)(4条)SUBBA,Rn;A←(A)-(Rn)-(Cy)SUBBA,@Ri;A←(A)-((Ri))-(Cy)SUBBA,direct;A←(A)-(direct)-(Cy)SUBBA,#data;A←(A)-#data-(Cy)功能:将累加器A的内容与源操作数及进位标志相减,结果送回累加器A中。在执行减法过程中,对标志位的影响:CY:如果D7有借位,则借位标志CY置“1”,否则清“0”;AC:如果D3有借位,则辅助借位标志AC置“1”,否则清“0”;OV:如D6有借位而位D7没有借位,或D7有借位而D6没有借位,则溢出标志OV置“1”,否则清“0”。(即把D7、D6位的借位相异或产生OV)P:当A中二进制数1的个数为奇数时,(P)=1;为偶数时(P)=0。注意:这里所减的借位标志CY的内容,是指令执行前已存在的借位标志的内容,而不是执行该指令过程中产生的借位。若要进行不带借位的减法操作,则必须先将CY清“0”。例:若(A)=C9H,(R2)=54H,CY=1,执行指令SUBBA,R2后,结果:(A)=74H,(R2)=54H,标志位(CY)=0,(AC)=0,(OV)=1,(P)=0。如果看作是无符号数相减,结果正确;如果是带符号数相减,则得出负数减正数为正数的错误,OV=1指出了这个错误。4.加1指令(5条)INCA;A←(A)+1INCRn;Rn←(Rn)+1INCdirect;direct←(direct)+1INC@Ri;(Ri)←((Ri))+1INCDPTR;DPTR←(DPTR)+1这组指令的功能是:将指令中所指出操作数的内容加1。

对标志位不产生影响例如:若(A)=0FFH,(Cy)=0执行INCA后,结果(A)=00H,(Cy)=05.减1指令(4条)DECA ;A←(A)-1

DECRn;Rn←(Rn)-1 DECdirect;direct←(direct)-1 DEC@Ri;(Ri)←((Ri))-1

这组指令的功能是:将指出的操作数内容减1。加1减1指令涉及A时,会影响P标志位,但不影响其他标志位。其余指令都不影响PSW的标志位。

6.十进制调整指令DAA功能:对累加器A参与的BCD码加法运算所获得的8位结果进行十进制调整,使累加器A中的内容调整为二位压缩型BCD码的数。调整后,CY表示结果的百位值。使用时必须注意,它只能跟在加法指令(两个BCD数相加)之后。不能对减法指令的结果进行调整,且其结果不影响溢出标志位。

(96H为压缩BCD码,表示十位为9,个位为6)例如:两BCD码加:MOVA,#35HADDA,#46H(A)=7BH,并不是81H但:DAA后,(A)=81H7.乘法指令(Multiplication)

MULAB;(A)×(B)低8位→A高8位→B(A、B中都是无符号整数)功能:将累加器A的内容与寄存器B的内容相乘,乘积的低8位存放在累加器A中,高8位存放于寄存器B中。如果积大于255,OV=1,否则OV=0;进位标志Cy总是清零Cy=0。8.除法指令(Division)DIVAB;(A)÷(B)商→A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论