单片机学习,请大家帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/08 08:25:46
已知A=7AH,R0=30H,(30H)=A5H,PSW=80H,请按要求填写各指令的执行结果(每条指令均按已给定的原始数据进行操作)
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 $