51单片机大量不明寄存器!!!

2020-01-23 14:43发布

在百度文库下了一个(51汇编实用子程序库)发现完全看不懂,粘贴出来大家看看:

;N 字节无符号数乘法程序 ([R0]*[R1])=([R0])
;入口:     R0,R1,M,N
;占用资源:     ACC,B,R2,R5,R6,R7,NCNT
;堆栈需求:     2 字节
;出口:     R0


NMULMN     :     MOV       A,M
ADD       A,R0
MOV       R5,A


XCH       A,R1
XCH       A,R5
ADD       A,N
XCH       A,R0
MOV       R6,A
MOV       B,M
MOV       NCNT,B NMLMN1     :     DEC       R0
DEC       R1
CLR       A
XCH       A,@R1
MOV       @R0,A
DJNZ     NCNT,NMLMN1 MOV       NCNT,B
NMLMN2     :     CLR       A
XCH       A,@R0
MOV       R2,A
MOV       A,R6
MOV       R0,A
MOV       A,R5
MOV       R1,A
MOV       R7,N
CLR       C NMLMN3     :     MOV       A,R2
MOV       B,@R1
INC       R1
MUL       AB
ADDC     A,@R0
MOV       @R0,A
INC       R0
MOV       A,B
ADDC     A,@R0
MOV       @R0,A DJNZ     R7,NMLMN3 INC       R0
INC       R6
DJNZ     NCNT,NMLMN2 MOV       A,R0
CLR       C
SUBB     A,M
SUBB     A,N
MOV       R0,A
RET
占用资源:     ACC,B,R2,R5,R6,R7,NCNT;ncnt是神马?


;N 字节无符号除法程序(组合) ([R0]/[R1])=([R0])
;入口:     R0,R1,M,N
;占用资源:     ACC,R2,R3,R4,R5,R7,NCNT,F0,NADDN,NSUBBN,NRLCN
;堆栈需求:     4 字节
;出口:     R0


;NDIVMN     :     MOV       A,M CLR       C


SUBB     A,N
MOV       NCNT,A
ADD       A,R0
MOV       R4,A
XCH       A,R0
MOV       R3,A
MOV       A,R1
MOV       R5,A
MOV       R2,#00H NDVMN1     :     MOV       R7,N
LCALL   NSUBN MOV       A,R5
MOV       R1,A
JC         NDVMN2
INC       R2
SJMP     NDVMN1 NDVMN2     :     MOV       R7,N
LCALL   NADDN MOV       A,NCNT
SWAP     A
RR         A
MOV       NCNT,A NDVMN3     :     MOV       A,R3
MOV       R0,A
MOV       R7,M LCALL   NRLCN MOV       F0,C
MOV       A,R4
MOV       R0,A
MOV       A,R5
MOV       R1,A
MOV       R7,N LCALL   NSUBN
JB         F0,NDVMN4
JC         NDVMN5 NDVMN4     :     MOV       A,R3
MOV       R0,A
INC       @R0 SJMP     NDVMN6
NDVMN5     :     MOV       A,R5
MOV       R1,A
MOV       R7,N LCALL   NADDN
NDVMN6     :     DJNZ     NCNT,NDVMN3 MOV       A,R4
MOV       R1,A
MOV       A,R2
MOV       @R1,A

MOV       A,R3
MOV       R0,A
RET
占用资源:     ACC,R2,R3,R4,R5,R7,NCNT,F0,NADDN,NSUBBN,NRLCN;这些又是神马?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
four_zhg
1楼-- · 2020-01-24 11:58
NADDN,NSUBBN,NRLCN 这几个是程序标号肯定是经过宏定义的
chengtina
2楼-- · 2020-01-24 16:24
那些不认识的,应该是程序开头用伪操作定义过的吧,要么人家程序前面定义没贴出来,要么你没贴全
liyute
3楼-- · 2020-01-24 20:37
资料残缺,百度文库有些文档的质量很差,毕竟是免费的。
fulitun
4楼-- · 2020-01-25 00:32
 精彩回答 2  元偷偷看……
一匹狼
5楼-- · 2020-01-25 06:29
M是不是经过替换,没见过有M寄存器的啊
一匹狼
6楼-- · 2020-01-25 11:16
A,B,R0-7这些寄存器比较常用,建议先学习汇编再学c

一周热门 更多>