单片机原理编程题 5
编写程序对累加器A中的数进行判断。若为正数,存入片内RAM20单元;若为负数,存入片内RAM21单元;若为0,则将位7F置1...
编写程序对累加器A中的数进行判断。若为正数,存入片内RAM20单元;若为负数,存入片内RAM21单元;若为0,则将位7F置1
展开
1个回答
展开全部
基本思路:正数时最高位为0,负数时最高位为1,其它请阅读51基本指令集代码。
注意:对于Keil,累加器的名称是ACC而不是A。
ORG 0000H
JMP MAIN
;子程序功能:
;判断累加器ACC的内容,如果为0则置1位寄存器7F
;如果大于0则将ACC内容放20H,如果小于0则放21H
;维护记录:
;2018-06-16 创建
CHECK_ACC:;判断ACC的内容
JNZ CHECK_ACC_L1 ;如果ACC不为0则跳转
SETB 7FH ;置位7FH
RET
CHECK_ACC_L1:
JNB ACC.7, CHECK_ACC_L2 ;A的最高位为0则跳转
MOV 21H,ACC
RET
CHECK_ACC_L2:
MOV 20H, ACC
RET
;测试代码
MAIN:
MOV ACC, #37H ;测试正数
CALL CHECK_ACC ;调用A寄存器判断子程序
MOV ACC, #87H ;测试负数
CALL CHECK_ACC ;调用A寄存器判断子程序
MOV ACC, #00H ;测试0
CALL CHECK_ACC ;调用A寄存器判断子程序
JMP MAIN
END
注意:对于Keil,累加器的名称是ACC而不是A。
ORG 0000H
JMP MAIN
;子程序功能:
;判断累加器ACC的内容,如果为0则置1位寄存器7F
;如果大于0则将ACC内容放20H,如果小于0则放21H
;维护记录:
;2018-06-16 创建
CHECK_ACC:;判断ACC的内容
JNZ CHECK_ACC_L1 ;如果ACC不为0则跳转
SETB 7FH ;置位7FH
RET
CHECK_ACC_L1:
JNB ACC.7, CHECK_ACC_L2 ;A的最高位为0则跳转
MOV 21H,ACC
RET
CHECK_ACC_L2:
MOV 20H, ACC
RET
;测试代码
MAIN:
MOV ACC, #37H ;测试正数
CALL CHECK_ACC ;调用A寄存器判断子程序
MOV ACC, #87H ;测试负数
CALL CHECK_ACC ;调用A寄存器判断子程序
MOV ACC, #00H ;测试0
CALL CHECK_ACC ;调用A寄存器判断子程序
JMP MAIN
END
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询