单片机原理及应用|| 实验一:多字节加法

一、实验目的

1.熟悉Keil软件的使用。

2.掌握简单程序的输入、编辑、编译、运行、调试的方法与步骤。

3.熟悉MCS—51的简单指令。

4.掌握数据传送指令。

二、实验内容

三字节无符号数相加,其中被加数在内部RAM的50H、51H和52H单元中(低位在后),加数在内部RAM的53H、54H和55H单元中(低位在后),要求把相加之和存放在50H、51H和52H单元中(低位在后),进位存放在位寻址区的00H位中。

三、实验要求

根据实验任务要求,编写源程序。

四、实验源程序及关键步骤

源程序

ORG 0000H ; 起始地址
    MOV R0, #50H ; 被加数的低位存储单元
    MOV R1, #53H ; 加数的低位存储单元
    MOV R2, #00H ; 进位的存储单元
    MOV A, @R0 ; 读被加数的低位
    ADD A, @R1 ; 加上加数的低位
    MOV @R0, A ; 将结果存入被加数的低位存储单元
    MOV A, R2 ; 读进位
    ADDC A, #00H ; 加进位
    MOV R2, A 
    INC R0 ; 被加数的中间位存储单元
    INC R1 ; 加数的中间位存储单元
    MOV A, @R0 ; 读被加数的中间位
    ADD A, @R1 ; 加加数的中间位
    MOV @R0, A ; 将结果存入被加数的中间位存储单元
    MOV A, R2 ; 读进位
    ADDC A, #00H ; 加进位
    MOV R2, A 
    INC R0 ; 被加数的高位存储单元
    INC R1 ; 加数的高位存储单元
    MOV A, @R0 ; 读被加数的高位
    ADD A, @R1 ; 加加数的高位
    MOV @R0, A ; 将结果存入被加数的高位存储单元
MOV A, R2 
MOV @R0, A ; 将进位存入指定的内部RAM单元
END 

五、运行结果

六、思考

如何使用指针自增的方式实现程序?

答:我将R0和R1作为指针来操作内存中的数据,并使用INC指令来实现自增。

ORG 0000H 
    MOV R0, #50H 
    MOV R1, #53H 
    MOV R2, #00H 
MOV A, @R0 
ADD A, @R1 
    MOV @R0, A 
    MOV A, R2 
ADDC A, #00H 
MOV R2, A 
INC R0 
INC R1     
MOV A, @R0 
   ADD A, @R1
   MOV @R0, A 
   MOV A, R2 
   ADDC A, #00H 
   MOV R2, A 
INC R0     
INC R1 
MOV A, @R0 
ADD A, @R1 
    MOV @R0, A 
MOV A, R2    
MOV @R0, A 
    END 

七、实验总结

我进行这次实验,掌握了Keil软件的使用方法,包括输入、编辑、编译、运行和调试程序的步骤,通过编写程序,我还熟悉了MCS-51的简单指令,并掌握了数据传送指令的使用。

在这个实验中,我学到了如何进行多字节的无符号数相加。被加数存储在内部RAM的50H、51H和52H单元中,低位在后;加数存储在内部RAM的53H、54H和55H单元中,低位在后,我将相加之和存放在50H、51H和52H单元中,低位在后,并将进位存放在位寻址区的00H位中。

通过实验,我发现了一些之前不知道的地方,我了解到内部RAM中存储数据的方式,特别是多字节数据的存储顺序,然后还熟悉了如何使用位寻址区来存储特定的数据,例如进位标志位,这次实验,使我学会了如何使用数据传送指令来完成数据的读取、计算和存储过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值