打印

不知道接下来要学哪方面的知识

[复制链接]
楼主: zhanglli
手机看帖
扫描二维码
随时随地手机跟帖
21
zwll| | 2022-10-13 21:49 | 只看该作者 回帖奖励 |倒序浏览
我想到一个问题,在汇编里 如何对一个数除以10求余,并把余数取出来?

使用特权

评论回复
22
kangzj| | 2022-10-13 21:52 | 只看该作者
优化:
char buf[20];
unsigned int num=1234;
sprintf(buf,"%0u",num);
或者
char buf[20];
unsigned int num=1234;
buf[0] = num/1000;
num = num%1000;
buf[1] = num/100;
num = num%100;
buf[2] = num/10;
buf[3] = num%10;

使用特权

评论回复
23
huangchui| | 2022-10-13 21:54 | 只看该作者
减法处理(循环)

使用特权

评论回复
24
chuxh| | 2022-10-13 21:58 | 只看该作者
网上大把的源代码

使用特权

评论回复
25
gongche| | 2022-10-13 22:00 | 只看该作者

51单片机的话就:(假如要显示的16进制数据放在 30H 单元)
程序如下(适用于不大于99的数据):
MOV A,30H
MOV B,#10
DIV  AB
MOV 40H,A  ;十位数字
MOV 41H,B  ;个位数字
...
....               ;显示程序

....

使用特权

评论回复
26
chenho| | 2022-10-13 22:02 | 只看该作者

07H--->7
17H--->1*16+7=23
47H--->4*16+7=71
1228H--->1*16*16*16+2*16*16+2*16+8=4096+512+32+8=4648

------------看了原理,你应该想到方法了吧。
汇编总该有加法,乘法指令,那么现在主要就是分离出16进制各个BCD码,下面我就不说了,你应该懂的,不懂就看书,书上很多算法的。

使用特权

评论回复
27
chuxh| | 2022-10-14 19:38 | 只看该作者
以前写的汇编的,你看有没有用:
;=================BIN--->BCD==========

BCDD  EQU   10H    ;
BIND  EQU   08H    ;需要被转换的二进制数地址
BYTES EQU   04H    ;暂存要转换的二进制数个数

;输入
;R3为二进制的个数
;08 09 0a 0b 0c  十六进制数据输入(0c 为高字节)
;输出
;10 11 12 13 14 15   十进制数  (15 为高字节)

hex_dec:
         MOV    R0,#0
         MOV    R1,#0
         MOV    R2,#0
BINB:
         MOV   BYTES,R3
         MOV   R1,#BCDD
         MOV   R2,BYTES
         INC   R2
         CLR   A
BB0:
         MOV   @R1,A
         INC   R1
         DJNZ  R2,BB0  ;完成十进制数据寄存器清0
         MOV   A,BYTES
         MOV   B,#08H
         MUL   AB      ;统计二进制数据位数
         MOV   R3,A
BB3:
         MOV   R1,#BIND
         MOV   R2,BYTES
         CLR   C
BB1:
         MOV   A,@R1
         RLC   A
         MOV   @R1,A  ;取出原始二进制数带CY左移1位,取出最高位放入CY中
         INC   R1
         DJNZ  R2,BB1
         MOV   R2,BYTES
         INC   R2
         MOV   R1,#BCDD
BB2:
         MOV   A,@R1
         ADDC  A,@R1
         DA    A       ;bcd 校正
         MOV   @R1,A
         INC   R1
         DJNZ  R2,BB2
         DJNZ  R3,BB3
         RET

使用特权

评论回复
28
dingy| | 2022-10-14 19:45 | 只看该作者
多谢楼上几位热心的网友

使用特权

评论回复
29
spark周| | 2022-10-14 19:47 | 只看该作者
可以考虑学学Linux+ARM,以后往嵌入式方向发展,之后就不应该局限在某种MCU上了,关键在于多做项目,在大型的项目中才能锻炼自己。自我感觉,仅供参考

使用特权

评论回复
30
heweibig| | 2022-10-14 19:49 | 只看该作者
培养解决问题的能力

使用特权

评论回复
31
ousj| | 2022-10-14 19:50 | 只看该作者

有空可以学学理论知识,模、数、电分、通信、、、、、、

使用特权

评论回复
32
kangzj| | 2022-10-14 19:58 | 只看该作者

一步一步来,DIY从简入难

使用特权

评论回复
33
zhaoxqi| | 2022-10-14 20:04 | 只看该作者
只把51的简单操作学会了,就想学其他的啊?

使用特权

评论回复
34
wyjie| | 2022-10-14 20:06 | 只看该作者
建议继续学习~能用51驱动各种液晶吗?能用51做个数字万用表吗?。。。。能用51驱动SPI FLASH吗?。。。

使用特权

评论回复
35
pengf| | 2022-10-14 20:08 | 只看该作者
可以自己动手做做小东西,比如电子钟,温度计等等,自己画原理图开始一直到写完程序调试出结果,自己整个经历一遍过程。

使用特权

评论回复
36
stly| | 2022-10-14 20:11 | 只看该作者
做些电设的题吧 不要漫无目的的去学习,面太广了 学不过来

使用特权

评论回复
37
huanghuac| | 2022-10-14 20:13 | 只看该作者
LZ这种情形建议定个实际的目标,有可操作性,又略有挑战的方案,实际把他做出来,然后调试ok,达到自己预期的目标即可,相信经历过一个实际案子之后,后续该干什么,你就清楚了

使用特权

评论回复
38
zwll| | 2022-10-14 20:18 | 只看该作者
AVR就算了,个人感觉一直是个**肋

使用特权

评论回复
39
pengf| | 2022-10-14 20:20 | 只看该作者
要学的东西太多了,关键看你感兴趣不?如果是为了工作,那你要学的就真的更多了

使用特权

评论回复
40
wuhany| | 2022-10-14 20:22 | 只看该作者

如果是个学生,就看看电子竞赛吧...
上面的每一个回帖都不适合你

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则