【单片机】求用汇编语言写图中的2、3题
答案:4 悬赏:60 手机版
解决时间 2021-03-10 06:54
- 提问者网友:蓝莓格格巫
- 2021-03-09 09:43
【单片机】求用汇编语言写图中的2、3题
最佳答案
- 五星知识达人网友:过活
- 2021-03-09 11:07
1:
DATM:
MOV R2,#100
MOV DPL,#00H
DATM1:
MOV DPH,#10H
MOVX A,@DPTR
MOV DPH,#20H
MOVX @DPTR,A
INC DPTR
DJNZ R2,DATM1
RET
2:
TONGJI:
MOV R2,#0
MOV R3,#0
MOV R4,#0
MOV R7,#10
MOV R0,#30H
TJ1:
MOV A,@R0
JNZ TJ2
INC R2
SJMP TJE
TJ2:
JB ACC.7,TJ3
INC R3
SJMP TJE
TJ3:
INC R4
TJE:
INC R0
DJNZ R7,TJ1
RET
3:
SUM:
MOV R2,#0
MOV R3,#0
MOV R7,#2
SUM1:
MOV A,R3
ADD A,R7
MOV R3,A
MOV A,R2
ADDC A,#0
MOV A,R7
ADD A,#2
MOV R7,A
CJNE R7,#101,SUM2
SUM2:
JC SUM1
RET
DATM:
MOV R2,#100
MOV DPL,#00H
DATM1:
MOV DPH,#10H
MOVX A,@DPTR
MOV DPH,#20H
MOVX @DPTR,A
INC DPTR
DJNZ R2,DATM1
RET
2:
TONGJI:
MOV R2,#0
MOV R3,#0
MOV R4,#0
MOV R7,#10
MOV R0,#30H
TJ1:
MOV A,@R0
JNZ TJ2
INC R2
SJMP TJE
TJ2:
JB ACC.7,TJ3
INC R3
SJMP TJE
TJ3:
INC R4
TJE:
INC R0
DJNZ R7,TJ1
RET
3:
SUM:
MOV R2,#0
MOV R3,#0
MOV R7,#2
SUM1:
MOV A,R3
ADD A,R7
MOV R3,A
MOV A,R2
ADDC A,#0
MOV A,R7
ADD A,#2
MOV R7,A
CJNE R7,#101,SUM2
SUM2:
JC SUM1
RET
全部回答
- 1楼网友:狂恋
- 2021-03-09 13:17
分太少,太费事!
- 2楼网友:躲不过心动
- 2021-03-09 12:25
需要DJNZ循环,程序量不小
- 3楼网友:低血压的长颈鹿
- 2021-03-09 11:42
是思考题。
--------
这样的题目,要考虑一些技巧。
动一动脑子,不能直来直去的编。
特别是第三题,是已知数列求和,如果用循环50遍、累加,就不符合题意了。
应该用数列求和的公式来做,简化程序,尽量缩短程序运行的时间。
3.程序如下:
MOV A, #2 ;首项
ADD A, #100 ;加上末项
MOV B, #25 ;项数/2
MUL AB ;结果在B、A中
SJMP $
结果是:
B = 09H
A = F6H
BA = 09F6H = 2550 = 2 + 4 + 6 + ... + 100
---------------------------
第二题,也可以优化如下:
2.
MOV R0, #30H
MOV R2, #0
MOV R3, #0
MOV R4, #0
LOOP:
CJNE @R0, #0, FU
INC R2 ;零的个数
JMP NEXT
FU:
CJNE @R0, #128, $ + 3
JC ZHENG
INC R4 ;负数个数
JMP NEXT
ZHENG:
INC R3 ;正数个数
NEXT:
INC R0
CJNE R0, #3AH, LOOP
SJMP $
END
程序很简单,所用的寄存器也最少。
--------
这样的题目,要考虑一些技巧。
动一动脑子,不能直来直去的编。
特别是第三题,是已知数列求和,如果用循环50遍、累加,就不符合题意了。
应该用数列求和的公式来做,简化程序,尽量缩短程序运行的时间。
3.程序如下:
MOV A, #2 ;首项
ADD A, #100 ;加上末项
MOV B, #25 ;项数/2
MUL AB ;结果在B、A中
SJMP $
结果是:
B = 09H
A = F6H
BA = 09F6H = 2550 = 2 + 4 + 6 + ... + 100
---------------------------
第二题,也可以优化如下:
2.
MOV R0, #30H
MOV R2, #0
MOV R3, #0
MOV R4, #0
LOOP:
CJNE @R0, #0, FU
INC R2 ;零的个数
JMP NEXT
FU:
CJNE @R0, #128, $ + 3
JC ZHENG
INC R4 ;负数个数
JMP NEXT
ZHENG:
INC R3 ;正数个数
NEXT:
INC R0
CJNE R0, #3AH, LOOP
SJMP $
END
程序很简单,所用的寄存器也最少。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯