算数运算指令
DIV AB ; A÷B 商→A,余数→B 注意:当除数为 0 时结果不确定,则溢出将 OV 置 1。 5.INC(加 1)和 DEC(减 1)类指令 加 1 类指令共 5 条,其功能是将操作数内容加 1。 INC A ;A+1→A, A 加 1 INC Rn ;Rn+1→Rn, Rn 中内容加 1 INC direct ;(direct)+1→(direct), 直接地址中内容加 1 INC @Ri ;(Ri)+1→(Ri), Ri 间址中的内容加 1 INC DPTR ;DPTR+1→DPTR, 数据指针加 1 例 判断 INC R0 和 INC @R0 两条指令结果,比较两者的区别。设 R0=30H,(30H)=00H。 执行 INC R0 ;R0+1=30H+1→R0, 结果 R0=31H 执行 INC @R0 ;(R0)+1=(30H)+1→(R0),结果(30H)=01H,R0 中内
程序 MOV A, #34H ;被加数低 8 位数 34H 送 A ADD A, #0E7H ;加数低 8 位数 E7H 与之相加,A=1BH,Cy=1 MOV 40H, A ;A→40H 即 34H+E7H 结果存入 40H 中(40H=1BH) MOV A, #12H ;被加数高 8 位数 12H 送 A ADDC A, #0FH ;加数高 8 位 0FH 和 Cy 与 A 相加,A=22H MOV 41H, A ;高 8 位与进位位之和存入 41H 中(41H)=22H ;总和为 221BH,总结果在 41H,40H 单元中 3.SUBB 类指令(4 条) SUBB 类指令是带借位减法指令,其功能是将 A 中被减数减去源操作数指 出的内容,再减去借位标志 Cy(原进位标志)状态,差值在 A 中。 SUBB A, Rn ;A-Rn-Cy→A ,A 减寄存器 Rn 内容及进位标志 SUBB A, direct ;A-(direct)-Cy→A,A 减直接地址内容和位标志
执行 ADD A,R0 结果:A=40H, R0=10H,标志位 P=1, Cy=0, OV=0, AC=0 2.ADDC 类指令(带进位加法 4 条) ADDC A, Rn ;A+Rn+Cy→A, A 与 R n 内容、进位状态相加,和送 到 A 中 ADDC A, direct ;(direct)+Cy+A→A, A 与直接地址中内容、进位状态 相加,和送 A ADDC A, @Ri ;(Ri)+Cy+A→A, A 与 Ri 间址单元中内容、进位状态 相加,和送 A ADDC A, #data ;data+Cy+A→A, A 与 立即数、进位状态相加,和送 A 与 ADD 类指令的区别是,ADDC 指令相加时连同进位标志 Cy 内容一起相 加,主要用于多字节加法中的高位字节的相加,而最低位字节相加用 ADD 指令。进位位 Cy 加到字节的最低位。 例 写计算 1234H+0FE7H 的程序,将结果存入内部 RAM 的 41H 和 40H 单 元,40H 存低 8 位,41H 存高 8 位。
SUBB A, Ri ;A-(Ri)-Cy→A, A 减 Ri 间址单元内容和进位位标志 SUBB A, #data ;A-data-Cy→A, A 减立即数和进位标志 说明: 1) 多字节减法时,低位相减有借位则把 Cy 置 1,否则 Cy 为 0。 2) MCS-51 系列指令中没有不带借位的减法指令,所以在单字节或低位 字节减法时用 SUBB 类指令前要先将 Cy 清 0。 3)减去一个数实际上是加上这个数的相反数(负数),减法运算常常用补 码相加方式。 4.MUL(乘)和 DIV(除)指令 乘法指令只有一条: MUL AB ;A 乘以 B→B 和 A,结果 16 位,高 8 位存入 B,低 8 位在 A中 若乘积大于 FFH 则将溢出标志 OV 置 1。 除法指令也只有一条:
算数运算指令
算数运算指令 算术运算指令的主要功能是实现算术加、减、乘、除等运算。 1.ADD 类指令是不带进位的加法运算指令(4 条)。 ADD A,Rn ;A+Rn→A, A 与 Rn 寄存器内容相加,结果送到 A 中 ADD A,direct ;(direct)+A→A, A 与直接地址内容相加,和送 A ADD A, @Ri ;(Ri)+A→A, A 与 Ri 间址内容相加,和送 A ADD A, #data ;data+A→A, A 与立即数相加,和送 A 注意:ADD 类指令相加结果均在 A 中,相加后源操作数不变。若 A 中最 高位有进位,Cy 置 1;若半加位有进位,AC 置 1。A 的结果还影响奇偶标志 位 P。 例 A=30H, R0=10H
容不变,仍为 30H 减 1 类指令共 4 条,其功能是将操作数指定单元内容减 1。 DEC A ;A-1→A, A 中内容减 1 DEC Rn ;Rn-1→Rn, Rn 中内容减 1 DEC direct ;(direct)-1→(direct), 直接地址中内容减 1 DEC @Ri ;(Ri)-1→(Ri), Ri 间址中的内容减 1 操作过程与加 1 指令类似,这里不再举例。 6.十进制加法调整指令(1 条) DA A 功能:在加法指令后,把 A 中二进制码自动调整成 BCD 码。 例 MOV A, #05H ;05H→A ADD A, #08H ;05H+08H→A=0DH