单片机学习,请大家帮忙
来源:百度知道 编辑:UC知道 时间:2024/06/08 08:25:46
ADD A,R0 ov=()
ADD A,30H 同上
ADD A,#30H 同上
ADDC A,30H 同上
SUBB A,30H 同上
SUBB A,#30H 同上
ov到底要如何判断
;已知A=7AH,R0=30H,(30H)=A5H,PSW=80H,请按要求填写各指令的执行结果(每条指令均按已给定的原始数据进行操作)
;首先 先说一下 PSW寄存器(程序状态寄存器) 是一个8为特殊寄存器,它的各位包含程序执行后
;的状态信息 供程序查询或判别之用;
; 分别是是 CY(借,进) AC(铺进) F0 (用户标定) RS1 (寄存器选择)
; RS0 (寄存器选择) OV (溢出) - (保留) P (奇/偶)
;OV(PSW.2) 溢出标志位 。当进行补码运算时 如果有溢出。即超出-128~127的范围时
;或者 进行加减运算时 超过 8位二进制(255)
;OV由硬件自动置一,无溢出时为0
ORG 0000H
MOV A ,#7AH ;OV=0;
MOV R0,#30H ;0V=0;
MOV 30H,#0A5H ;OV=0;
MOV PSW,#80H ;(OV=0) CY=1;J进位为1;
ADD A,R0 ;(OV=(1) CY=0;07AH+30H=AAH (十进制=170) 故 A=AAH因为有溢出
ADD A,30H ;(OV=1) CY=1; AAH+A5H=14F (335) 现在A=14F(335)已经超过8位最大值FFH(255)
;故 A有溢出 OV=1; A=14FH(335)-FFH(255)-CY=4FH(79);
ADD A,#30H ;;(OV=0) 因为现在 A=4FH(79)+30H (48)=7FH(127) 小于FFH(255) OV=0; CY=0
ADDC A,30H ; (OV=0) CY=1 ;7FH(127)+A5H=123H(291)-FFH(255)=24H()
SUBB A,30H ; (OV=0) A=7EH
SUBB A,#30H ; (OV=0) A=4DH
SJMP $