编程1:将存于内部RAM地址20H~25H的6位非紧缩BCD码转换为对应的ASCII码顺次存至30H开端的接连内部RAM单元中。
剖析:非紧缩BCD码00H、01H、02H、…、09H对应ASCII码30H、31H、32H、…、39H,两者差为30H;
程序如下:
LL: MOV R0,#20H;源数据串开端地址装入R0
MOV R1,#30H;意图数据串开端地址装入R1
MOV R2,#6;循环次数装入R2
L0:MOV A,@R0;取一字节非紧缩BCD码
ORL A,30H;转化为对应ASCII码
MOV @R1,A;保存至对应意图方位
INC R0;修正源数据地址以指向下一方位
INC R1;修正意图数据地址指向下一方位
DJNZ R2,L0;循环进行下一字节的处理
RET;处理完毕,程序回来
编程2:完成将0~49之间的偶数顺次存于内部RAM地址20H开端的字节单元,将奇数顺次存于内部RAM地址40H开端的字节单元。
程序如下:
LL: MOV R0,#20H;偶数寄存开端地址装入R0
MOV R1,#40H;奇数寄存开端地址装入R1
CLR A;开端数码=0
L0:MOV A,@R0;寄存一个偶数
INC A;数码加1
MOV A,@R1;寄存一个奇数
INC A;数码加1
INC R0;修正偶数寄存地址指针指向下一方位
INC R1;修正奇数寄存地址指针指向下一方位
CJNE A,#50,L0 ;是否一切数码都已放完,未完则持续循环
RET;作业完结,程序回来
编程3:完成5字节10位紧缩BCD码加法。设两个加数别离寄存于内部RAM地址40H和45H开端的字节单元(低位字节在前),相加成果寄存于内部RAM地址4AH开端的字节单元,不考虑超出5字节紧缩BCD码存储规模以外的进位。
程序如下:
LL: MOV R0,#40H;加数A的开端地址装入R0
MOV R1,#45H;加数B的开端地址装入R1
MOV R2,#4AH;和数寄存开端地址装入R2
MOV R3,#5;循环次数装入R3
CLR C;初始清零CY
L0:MOV A,@R0;取加数A当时字节
ADDC A,@R1;加上加数B当时字节,经过带进位加法考虑低位字节或许的进位
AD A;调整运算成果为BCD码,或许的进位保存在CY中(以下的指令履行均不影响CY)
XCH A,R2;以下三条交流指令交流和数指针到R1,加数B指针到R2
XCH A,R1;
XCH A,R2;
MOV @R1,A;保存和数当时字节
XCH A,R2;以下三条交流指令康复加数B指针到R1,和数指针到R2
XCH A,R1;
XCH A,R2;
INC R0;修正加数A寄存地址指针指向下一方位
INC R1;修正加数B寄存地址指针指向下一方位
INC R2;修正和数寄存地址指针指向下一方位
DJNZ R3,L0;循环次数减1,若不为0则持续循环
RET;作业完毕,程序回来
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/dianlu/258245.html