习题1BCD码加法编程。
XY4位压缩BCD码,求 Z=X+Y
X 存在片内RAM 40H41H单元,Y存在42H43H单元,编程求 Z=X+Y,并存入片内RAM单元44H45H46H
;取被加数低字节
;加上加数低字节
BCD十进制调整
;保存和的低字节
;取被加数高字节
;加上加数高字节
BCD十进制调整
;保存和的高字节
;求高字节进位
;子程序结束
ADBMOV A40H
    ADD  A42H
    DA  A
    MOV  44HA
    MOV  A41H
    ADDC A43H
    DA  A
    MOV  45HA
    MOV  A#0
    ADDC A#0
    MOV  46HA
    RET
习题2:编程求双字节减法。设XY存在片内 RAM 40H起始单元,计算Z=X-Y
;清借位标志
;取被减数低字节
;减去减数低字节
;保存差的低字节
;取被减数高字节
;减去减数高字节
;保存差的高字节
;保存差的借位标志
;子程序结束
SUBDCLR C
MOV A40H
    SUBB  A42H
    MOV  44HA
    MOV  A41H
    SUBB  A43H
    MOV  45HA
    MOV  A#0
    SUBB  A#0
    MOV  46HA
    RET
习题3:编程完成对DPTR的减1操作.
MOV ADPL
CLR  C
SUBB  A#1
MOV  DPLA
MOV  ADPH
SUBB  A#0
MOV  DPHA
习题4:如何将累加器单片机编程100例详解A中的数据高4位清0,低位不变?
ANL  A#0FH
习题5:如何将寄存器R2中的数据奇数位取反,偶数位不变?
MOV  AR2
XRL  A#10101010B
MOV  R2A
习题:计算程序中转移指令的相对偏移量 e ,并判断是否超出转移范围。
        地址        源程序
        2130H      LOOP:…       
                  …
        21B0H          SJMP    LOOP
解:e = 目的指令地址 (转移指令地址+指令字节数)
    = 目的地址 PC当前值
=2130H-(21B0H+2
=130﹤-128
故超出转移范围。