共2条
1/1 1 跳转至页
单片机汇编两道题,大人帮帮忙阿

问
板主:我在侃单片机也发了这个主题,实在是因为着急阿。不知道违规么,如果违规我道歉,并麻烦您帮忙删除这个。
**************************************
马上要考试了,因为很多年没用这方面东西了,有2道题必出的
考题自己不能肯定,还求各位大侠援手帮个忙。
要求用51的汇编语言写,用8086或者c51都能找到很多现成的参
考,偏偏规定要用intel的51
路过的大侠要是忙,您给点拨一下思路或者提示一下容易出错的
地方也好。
1:从aa存储单元开始存放有32个单字节无符号数,用51的汇编
语言编写程序求32个数的平均值,结果存放AVR单元
2:自单元bb开始存放有一个字符串(以$结尾),用51汇编程序
编写程序统计数字字符0---9的个数
万分感谢
**********
我自己做了一下第一题,不知道对不对。
我在这里的一个概念有些糊涂,上面那位朋友写的程序加的和会
不会溢出呢?
要是会溢出只能用双字节加法,可这样除法也要双字节,似乎很
麻烦了,除法的程序我真么做似乎还有一个缺点,没有余数了。
大人帮忙看看阿
SUN: MOV R0,#32 ;R0存数字个数
MOV R2,#00H ;R2,R3存双字节和
MOV R3,#00H
MOV R4,#AAH ;R4存首地址
LOOP: MOV A,R4
ADD A,@R4 ;求和
MOV R3,A
CLR A
ADDC A,R2
MOV R2,A
DJNZ R0,LOOP
LOOP2: MOV R1,#05H
CLR C
RRC R2
RRC R3 ;除一次2
CLR C
DJNZ R1,LOOP2 ;除32等于除5次2
END 答 1: 楼主程序有错:根本没有取数据,而且只有R0/R1可以作指针1:从aa存储单元开始存放有32个单字节无符号数,用51的汇编。假定这32个数存放在idata中。
原程序改编如下:(楼主的除法部分错误,希望楼主自己改正)
SUN:
MOV R0,#aa ;R0存数据地址
MOV R4,#32 ;R4存数字个数
MOV R2,#00H ;R2存累加数的双字节和高字节
MOV R3,#00H ;R4存累加数的双字节和低字节
LOOP:
MOV A,@R0
ADD A,R3 ;求和
MOV R3,A
CLR A
ADDC A,R2
MOV R2,A
INC R0 ; 这里假定是升序排列,若是降序排列,需要改用DEC R0
DJNZ R4,LOOP
答 2: 在别人的提示下自己做了一下,不知道这样行嘛?SUN: MOV R5,#32 ;R0存数字个数
MOV R1,#00H ;R2,R3存双字节和
MOV R2,#00H
MOV R0,#AAH ;R4存首地址
LOOP: MOV A,R0
ADD A,@R0 ;求和
MOV R1,A
CLR A
ADDC A,R2
MOV R2,A
DJNZ R5,LOOP
LOOP2: MOV R6,#05H
MOV R7,#00H
CLR C
RRC R2
RRC R3 ;除一次2
RRC R7
DJNZ R6,LOOP2 ;除32等于除5次2
MOV A,R7
SWAP A
MOV R7,A
RR R7
END
最后结果,R3中是商,R7中是余数 答 3: 第二题这么做行么,还有什么好办法么?ascii A=41,a=97,0=30,$=24
MOV DPL,#BBH
LOOP: MOVX A,@DPTR
CJNE A,#30H,A0
AJMP SUN
A0: CJNE A,#31,A1
AJMP SUN
A1: CJNE A,#31,A2
AJMP SUN
继续一直到39
INC DPTR
JMP LOOP
SUN: INC,R1 ;R1中存统计数字
JMP,LOOP 答 4: 谢谢a12345678
**************************************
马上要考试了,因为很多年没用这方面东西了,有2道题必出的
考题自己不能肯定,还求各位大侠援手帮个忙。
要求用51的汇编语言写,用8086或者c51都能找到很多现成的参
考,偏偏规定要用intel的51
路过的大侠要是忙,您给点拨一下思路或者提示一下容易出错的
地方也好。
1:从aa存储单元开始存放有32个单字节无符号数,用51的汇编
语言编写程序求32个数的平均值,结果存放AVR单元
2:自单元bb开始存放有一个字符串(以$结尾),用51汇编程序
编写程序统计数字字符0---9的个数
万分感谢
**********
我自己做了一下第一题,不知道对不对。
我在这里的一个概念有些糊涂,上面那位朋友写的程序加的和会
不会溢出呢?
要是会溢出只能用双字节加法,可这样除法也要双字节,似乎很
麻烦了,除法的程序我真么做似乎还有一个缺点,没有余数了。
大人帮忙看看阿
SUN: MOV R0,#32 ;R0存数字个数
MOV R2,#00H ;R2,R3存双字节和
MOV R3,#00H
MOV R4,#AAH ;R4存首地址
LOOP: MOV A,R4
ADD A,@R4 ;求和
MOV R3,A
CLR A
ADDC A,R2
MOV R2,A
DJNZ R0,LOOP
LOOP2: MOV R1,#05H
CLR C
RRC R2
RRC R3 ;除一次2
CLR C
DJNZ R1,LOOP2 ;除32等于除5次2
END 答 1: 楼主程序有错:根本没有取数据,而且只有R0/R1可以作指针1:从aa存储单元开始存放有32个单字节无符号数,用51的汇编。假定这32个数存放在idata中。
原程序改编如下:(楼主的除法部分错误,希望楼主自己改正)
SUN:
MOV R0,#aa ;R0存数据地址
MOV R4,#32 ;R4存数字个数
MOV R2,#00H ;R2存累加数的双字节和高字节
MOV R3,#00H ;R4存累加数的双字节和低字节
LOOP:
MOV A,@R0
ADD A,R3 ;求和
MOV R3,A
CLR A
ADDC A,R2
MOV R2,A
INC R0 ; 这里假定是升序排列,若是降序排列,需要改用DEC R0
DJNZ R4,LOOP
答 2: 在别人的提示下自己做了一下,不知道这样行嘛?SUN: MOV R5,#32 ;R0存数字个数
MOV R1,#00H ;R2,R3存双字节和
MOV R2,#00H
MOV R0,#AAH ;R4存首地址
LOOP: MOV A,R0
ADD A,@R0 ;求和
MOV R1,A
CLR A
ADDC A,R2
MOV R2,A
DJNZ R5,LOOP
LOOP2: MOV R6,#05H
MOV R7,#00H
CLR C
RRC R2
RRC R3 ;除一次2
RRC R7
DJNZ R6,LOOP2 ;除32等于除5次2
MOV A,R7
SWAP A
MOV R7,A
RR R7
END
最后结果,R3中是商,R7中是余数 答 3: 第二题这么做行么,还有什么好办法么?ascii A=41,a=97,0=30,$=24
MOV DPL,#BBH
LOOP: MOVX A,@DPTR
CJNE A,#30H,A0
AJMP SUN
A0: CJNE A,#31,A1
AJMP SUN
A1: CJNE A,#31,A2
AJMP SUN
继续一直到39
INC DPTR
JMP LOOP
SUN: INC,R1 ;R1中存统计数字
JMP,LOOP 答 4: 谢谢a12345678
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
分享汽车通信和多媒体总线结构被打赏20分 | |
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
NUCLEO-U083RC学习历程38+串口通过队列的方式输出两个字符串被打赏20分 | |
【我踩过的那些坑】分享一下调试一款AD芯片的遇到的“坑”被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
分享电控悬架的结构与工作原理(一)被打赏20分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 |