习题1、BCD码加法编程。
X、Y为4位压缩BCD码,求 Z=X+Y。
设X 存在片内RAM 40H、41H单元,Y存在42H、43H单元,编程求 Z=X+Y,并存入片内RAM单元44H、45H、46H。
;取被加数低字节
;加上加数低字节
;BCD十进制调整
;保存和的低字节
;取被加数高字节
;加上加数高字节
;BCD十进制调整
;保存和的高字节
;求高字节进位
;子程序结束
ADB:MOV A,40H
ADD A,42H
DA A
MOV 44H,A
MOV A,41H
ADDC A,43H
DA A
MOV 45H,A
MOV A,#0
ADDC A,#0
MOV 46H,A
RET
习题2:编程求双字节减法。设X、Y存在片内 RAM 40H起始单元,计算Z=X-Y 。
;清借位标志
;取被减数低字节
;减去减数低字节
;保存差的低字节
;取被减数高字节
;减去减数高字节
;保存差的高字节
;保存差的借位标志
;
;子程序结束
SUBD:CLR CMOV A,40H
SUBB A,42H
MOV 44H,A
MOV A,41H
SUBB A,43H
MOV 45H,A
MOV A,#0
SUBB A,#0
MOV 46H,A
RET
习题3:编程完成对DPTR的减1操作.
MOV A,DPL
CLR C
SUBB A,#1
MOV DPL,A
MOV A,DPH
SUBB A,#0
MOV DPH,A
习题4:如何将累加器单片机编程100例详解A中的数据高4位清0,低位不变?
ANL A,#0FH
习题5:如何将寄存器R2中的数据奇数位取反,偶数位不变?
MOV A,R2
XRL A,#10101010B
MOV R2,A
习题:计算程序中转移指令的相对偏移量 e ,并判断是否超出转移范围。
地址 源程序
2130H LOOP:…
…
21B0H SJMP LOOP
地址 源程序
2130H LOOP:…
…
21B0H SJMP LOOP
解:e = 目的指令地址 -(转移指令地址+指令字节数)
= 目的地址 - PC当前值
=2130H-(21B0H+2)
=-130﹤-128
故超出转移范围。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论