51单片机大量不明寄存器!!!
在百度文库下了一个(51汇编实用子程序库)发现完全看不懂,粘贴出来大家看看:;N 字节无符号数乘法程序 (*)=()
;入口: 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,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;这些又是神马?
LZ没整过汇编,也没学过单片机原理? 貌似程序不全,像这些NADDN,NSUBBN,NRLCN真没见过,估计是定义语句你没贴上来 楼主,建议你那一本单片机最基础的书看看,里面有基本的描述的 第一程序不全,第二语句格式不对,有些地方该换行的没有换行, NADDN,NSUBBN,NRLCN 这几个是程序标号,也就是PC地址,程序标号后面是冒号,分号后面是注释; 资源: ACC,R2,R3,R4,R5,R7,。。。
这些找你的mcu课本,上面绝对有解释{:titter:}{:victory:}。。。。。
好吧,我想问的是好似标号的那几个东东,acc,b,r1,r2这些我是知道的.源程序全粘贴下来了,没有定义. NADDN,NSUBBN,NRLCN 这几个是程序标号肯定是经过宏定义的 那些不认识的,应该是程序开头用伪操作定义过的吧,要么人家程序前面定义没贴出来,要么你没贴全 资料残缺,百度文库有些文档的质量很差,毕竟是免费的。 NADDN N-ADD-N
NSUBBN N-SUBB-N
NRLCNN-RLC-N
这样看估计是标号
(修改错误) M是不是经过替换,没见过有M寄存器的啊 A,B,R0-7这些寄存器比较常用,建议先学习汇编再学c
页:
[1]