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

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

电脑 2022-07-31

c51单片机内30h∼39h单元处存放了10个二进制数,计算它们的累加和,并将结果存放到起始地址

SUM: MOV R0,#30H MOV 40H.#0 MOV 41H,#0 MOV R2,#10 LP: MOV A,@R0 ADD A,40H MOV 40H,A MOV A,41H ADDC A,#0 MOV 41H,A INC R0 DJNZ R2,LP RET

设单片机内部RAM从30H起始存放着10个无符号的二进制数,试编程将他们从大到小排序,存放倒30H开始的单元

http://blog.163.com/asm_c/blog/static/2482031132011826280454/ 参考。

马上考试了,各位大神,大仙帮帮忙,单片机的问题。

我给你答一下吧!因为大家都是从你这步走过来的,答这些问题可能有些我也忘了, 1.特点。软件控制硬件工作,没有做不到的,只有想不到的。 2.内部RAM,以at89C51为例。RAM的低128个字节空间(00H~7FH)的前32个字节空间分成了4组寄存器组,由PWS(状态字)寄存器RS0和RS1来选择当前工作寄存器;中间16个字节空间(20H~2FH)是可位寻址区;后面80个字节空间(30H~7FH)是堆栈和数据缓存区。此128个字节空间可以直接寻址和间接寻址 3.7种方式寻址。寄存器,直接,寄存器间接,立即,基址寄存器加变址寄存器,相对,位。 4.2个定时器或计数器T1和T2,它们复用,通过寄存

在单片机内部数据RAM的30H开始的单元中连续存放单子节10个有符号数,编

MAXDAT: MOV R0,#30H MOV R2,#10 MOV B,#0 LOOP: MOV A,@R0 CJNE A,B,LP1 LP1: JC LP2 MOV B,A LP2: INC R0 DJNZ R2,LOOP RET

汇编语言从内部30h开始,存9个数据1到9,求其和并存到r5中

一批单字节无符号数,以R0为首地址指针,R2中为字节数,将这批数进行升序排列.
SORT: MOV A,R0 ;
MOV R1,A ;(R1)为首地址
MOV A,R2 ;字节数送入R5
MOV R5,A ;(R5)为字节数
CLR F0 ;互换标志位F0清零
DEC R5 ;循环n-1
MOV A,@R1 ;
LOOP: MOV R3,A ;(R3)为前一个数
INC R1 ;地址指向下一个数
CLR C ;
MOV A,@R1 ;取下一个数
SUBB A,R3 ;比较大小
JNC LOOP1 ;如果进位位Cy=0,则转移
SETB F0 ;互换标志位F0置1
MOV A,R3 ;前面大的数放到A
XCH A,@R1 ;互换后,小的数在A,大数在@R1
DEC R1 ;(R1)指向前一个地址
XCH A,@R1 ;小的数放到前一个地址
INC R1 ; (R1)指向下一个地址
LOOP1: MOV A,@R1 ;取下一个数
DJNZ R5,LOOP
JB F0,SORT 如果直接寻址位=1,则转移
RET这是单片机汇编语言的经典冒泡法排序,看懂了,对你很有帮助!把R0=30H ,R2=100H-30H代入,就可以得到你要的结果【摘要】

汇编语言从内部30h开始,存9个数据1到9,求其和并存到r5中【提问】

一批单字节无符号数,以R0为首地址指针,R2中为字节数,将这批数进行升序排列.

SORT: MOV A,R0 ;

MOV R1,A ;(R1)为首地址

MOV A,R2 ;字节数送入R5

MOV R5,A ;(R5)为字节数

CLR F0 ;互换标志位F0清零

DEC R5 ;循环n-1

MOV A,@R1 ;

LOOP: MOV R3,A ;(R3)为前一个数

INC R1 ;地址指向下一个数

CLR C ;

MOV A,@R1 ;取下一个数

SUBB A,R3 ;比较大小

JNC LOOP1 ;如果进位位Cy=0,则转移

SETB F0 ;互换标志位F0置1

MOV A,R3 ;前面大的数放到A

XCH A,@R1 ;互换后,小的数在A,大数在@R1

DEC R1 ;(R1)指向前一个地址

XCH A,@R1 ;小的数放到前一个地址

INC R1 ; (R1)指向下一个地址

LOOP1: MOV A,@R1 ;取下一个数

DJNZ R5,LOOP

JB F0,SORT 如果直接寻址位=1,则转移

RET这是单片机汇编语言的经典冒泡法排序,看懂了,对你很有帮助!把R0=30H ,R2=100H-30H代入,就可以得到你要的结果【回答】

【回答】

谢谢老师,我想在请较一下,这是我刚刚提问前写的程序,还没上机试,可以在精简吗?或者有什么问题?

ORG 0000H

MOV\x09 30H, #1

MOV\x09 31H, #2

MOV\x09 32H, #3

MOV\x09 33H, #4

MOV\x09 34H, #5

MOV\x09 35H, #6

MOV\x09 36H, #7

MOV\x09 37H, #8

MOV\x09 38H, #9

MOV R0, #3OH

MOV R3, #9

MOV R5, #0

LOOP:MOV A,@RO

ADD A, R5

MOV R5, A

INC R0

DJNZ R3,LOOP

SHMP $【提问】

都还可以。挺好【回答】

嗯嗯,谢谢老师【提问】

客气了【回答】

除了这些还能有更精简些吗,我刚开始学,感觉还能更精简些【提问】

这个就比较的简单了

一开始的时候,我把AL想复杂了,想CF放到AH里去,但是给忘了,AX不就可以自动进位的嘛!

【回答】

一些数据我这边也发不过去。【回答】

嗯嗯,谢谢,晚安【提问】

只能靠你自己慢慢摸索。这都是靠自己慢慢摸索出来。【回答】

好【提问】


标签:信息技术 单片机 ram 符号 汇编语言

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18