在单片机片内30H开始存放了10个4字节无符号二进制数,请编程求这10个数的和。

时间:1605次浏览2020.03.17提问

在单片机片内30H开始存放了10个4字节无符号二进制数,请编程求这10个数的和。

已解决问题

hao231知道平台可亲可爱的网友在1605次浏览2020.03.17提问提了关于IT技术编程单片机相关的问题,他的提问问大家在单片机片内30H开始存放了10个4字节无符号二进制数,请编程求这10个数的和。IT技术编程单片机希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,千言万语,表达不了我的感激之情,我已铭记在心 !

第1个回答

林风2020.03.17回答假设是10个0x44332211相加;30H开始存10个32位的数字0x44332211十进制为1144201745;10个0x44332211和为11,442,017,450,,即0x2A9FF54AAmov30h,#0x11;mov31h,#0x22mov32h,#0x33mov33h,#0x44mov34h,#0x11mov35h,#0x22mov36h,#0x33mov37h,#0x44mov38h,#0x11mov39h,#0x22mov3ah,#0x33mov3bh,#0x44mov3ch,#0x11mov3dh,#0x22mov3eh,#0x33mov3fh,#0x44mov40h,#0x11mov41h,#0x22mov42h,#0x33mov43h,#0x44mov44h,#0x11mov45h,#0x22mov46h,#0x33mov47h,#0x44mov48h,#0x11mov49h,#0x22mov4ah,#0x33mov4bh,#0x44mov4ch,#0x11mov4dh,#0x22mov4eh,#0x33mov4fh,#0x44mov50h,#0x11mov51h,#0x22mov52h,#0x33mov53h,#0x44mov54h,#0x11mov55h,#0x22mov56h,#0x33mov57h,#0x44MOV5AH,#30H//标记加数存储地址30HMOV5BH,#60H//和存放地址60H。若和超过4个字节,自动向前借一个字节MOV60H,#0//清空和数存放位置MOV61H,#0MOV62H,#0MOV63H,#0MOVR1,5BH//和存储位置给R1movr0,5AHmovr4,5AHMOVR2,#4//4个字节loop1:MOVR3,#10//10个加数数字Loop2:MOVA,@r0//和数第R2字节与加数第R2字节。结果给和数第R2字节ADDA,@R1MOV@R1,A//计算的进位与和数R2-1字节相加INCR1MOVA,@R1ADDCA,#0MOV@R1,ADECr1MOVA,R0//找下一个加数R2字节存储位置,准备计算下一个ADDA,#0x04MOVR0,AdjnzR3,loop2//跳转指令。R3减一看10个加数的第R2位是否都计算完成。没有计算完成则回loop2计算计算INCR4mova,R4movR0,aINCR1djnzR2,Loop1//第R2计算完成跳,R2减一,开始计算更高位。值到4end