+ -
当前位置:首页 → 问答吧 → 问下51汇编的

问下51汇编的

时间:2010-12-15

来源:互联网

题目要求是这样的,社内部RAM中存有三字节的BCD码被减数和减数,他们的首地址分别为30H和40H,由低位和高位存放。要求将差值存入被减数单元。

书上的代码是这样的
MOV R0 #30H
MOV R1,#40H
MOV R7,#03H
LCALL SUB2
SJMP $
SUB2: CLR C
LOOP: MOV A,#9AH
  SUBB A,@R1
  ADD A,R0
  DA A

  MOV @RO,A
  INC R0
  INC R1
  CPL C //这里CPL C的作用是什么啊?想了好久都没想通。?求解
  DJNZ R7,LOOP
  RET
  END

作者: yezhubenyue   发布时间: 2010-12-15

CPL C中的C对应真实计算中的借位,实际应该从被减数中结尾,但下一次循环第一条指令是SUBB那条,那条是操作减数的,所以如果被减数被借位这里就不借位了。这个程序太绕,深究没什么意义。

作者: YTerrenceLau   发布时间: 2010-12-16