您的位置 首页 电路

51指令系统(2)

编程1:将存于内部RAM地址20H~25H的6位非压缩BCD码转换为对应的ASCII码依次存至30H开始的连续内部RAM单元中。分析:非压缩BCD码00H、01H、0

编程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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部