当前位置:首页 > 微机原理课后习题及答案
CJNE A, #3FH, NEQ0 MOV 50H, #00H
;40H单元中的内容=0的显示码,则将0
的格雷码送入50H
NEQ0: CJNE A, #06H, NEQ1
MOV 50H, #01H
;40H单元中的内容=1的显示码,则将1
的格雷码送入50H
NEQ1: CJNE A, #6BH, NEQ2
MOV 50H, #03H
;40H单元中的内容=2的显示码,则将的格雷码送入50H
NEQ2: CJNE A, #4FH, NEQ3
MOV 50H, #02H
;40H单元中的内容=3的显示码,则将的格雷码送入50H
NEQ3: CJNE A, #66H, NEQ4
MOV 50H, #04H
;40H单元中的内容=4的显示码,则将的格雷码送入50H
NEQ4: CJNE A, #6DH, NEQ5
MOV 50H, #05H
;40H单元中的内容=5的显示码,则将的格雷码送入50H
NEQ5: CJNE A, #7DH, NEQ6
MOV 50H, #07H
;40H单元中的内容=6的显示码,则将的格雷码送入50H
NEQ6: CJNE A, #07H, NEQ7
33
2
3
4
5
6
MOV 50H, #06H ;40H单元中的内容=7的显示码,则将7
的格雷码送入50H
NEQ7: CJNE A, #7FH, NEQ8
MOV 50H, #08H
;40H单元中的内容=8的显示码,则将8
的格雷码送入50H NEQ8: CJNE A, #6FH, QUIT
MOV 50H, #09H
;40H单元中的内容=9的显示码,则将9
的格雷码送入50H QUIT: POP POP
PSW ACC
;恢复现场
RET
4-14 编一子程序,完成两双字节无符号数相加。设加数和被加数分别放在0区寄存器R2、R3和R4、R5中,运算结果存放在0区寄存器R6、R7中。若运算结果发生进位,使00H位单元=1;反之,使00H位单元=0。
;双字节无符号数相加
;入口参数:子程序名NADD,加数和被加数分别放在0区寄存器R2、R3和R4、R5中,影响ACC, 位Cy
;出口参数:运算结果存放在0区寄存器R6、R7中,00H位单元存放双字节相加的进位标志 NADD: PUSH ACC
;保护现场
34
PUSH PSW
MOV A, R2 ;(R2)+(R4)→R6 ADD A, R4 MOV R6, A
MOV A, R3 ;(R3)+(R5)→R7 ADDC A, R5 MOV R7, A
MOV 00H, C ;Cy→00H POP
PSW
;恢复现场
POP RET
ACC
4-15 编制一子程序,完成10ms较精确延时功能。设系统时钟频率为24MHz。
提示:时钟频率为24MHz,则每个机器周期T=0.5us,10ms延时即需要10000us /0.5us =20000=500×40个机器周期T。软件延时子程序,就是用循环结构反复执行一些指令,而指令执行时都需要时间,所以执行完该子程序后,即完成了延时功能。 ;软件延时10ms
;入口参数:子程序名DELAY,影响2区寄存器R0, R1 ;出口参数:无 DELAY: PUSH PSW
;1T
35
MOV PSW, #18H ;1T MOV R0, #40
;1T
DL: MOV R1, #248 ;1T*40
;2T*248*40=19840T
DL1: DJNZ R1, DL1
NOP
;1T*40 ;2T*40 ;1T ;2T
,
总
延
时
DJNZ R0, DL POP RET
PSW
3T+40T+19840T+40T+80T+3T=20006T,误差6T=3 us,相当准了
4-16 编制一子程序,将10个非压缩BCD码转换成5个压缩BCD码。设进子程序前,非压缩BCD码被放在40H为首地址的内部数据存储器中;子程序运行后,压缩BCD码放在50H为首地址的内部数据存储器中。
功能说明:若进子程序前40H~49H单元中的内容为01H,02H,03H,04H,05H,06H,07H,08H,09H,00H,则子程序运行后50H~54H中的内容为12H,34H,56H,78H,90H ;BCD码压缩
;入口参数:子程序名BCDCH,非压缩BCD码被放在40H为首地址的内部数据存储器中
;影响ACC,2区寄存器R0, R1, R7
;出口参数:压缩BCD码放在50H为首地址的内部数据存储器
36
共分享92篇相关文档