
以下是51单片机汇编语言编程中常用的一些子程序代码库。
1、片内RAM初始化子程序
2、片外RAM初始化子程序
3、片外RAM初始化子程序(双字节单元)
4、内部RAM数据复制程序
5、外部RAM数据复制程序
6、外部RAM数据复制程序
7、将外部RAM数据复制到内部RAM程序
8、剪辑过滤器程序
9、中值滤波程序
10、N点算术平均滤波
11、N点加权平均滤波
12、一阶加权滞后滤波器程序
13、双字节提取和补码程序
第1节4、N获取和补充程序
15、双字节无符号数加法程序
16、N字节无符号数加法程序
17、双字节无符号数减法程序
18、N字节无符号数减法程序
19、单字节无符号数乘法程序
20.单字节无符号数乘法程序
21、单字节无符号数乘法程序
22、双字节无符号数乘法程序
23、双字节无符号数乘法程序
24、N字节无符号数乘法程序
25、单字节无符号除法程序
26、单字节无符号除法程序
27、双字节无符号除法程序
28、N字节无符号除法程序(组合)
29、N字节无符号除法程序
30,N字节数据左移程序
31、原始代码中的有符号双字节减法程序
32、原始代码中的有符号双字节加法程序
33、原始代码中的有符号双字节乘法程序
34、原始代码中的有符号双字节除法过程
35、单字节顺序查找程序
36、单字节顺序查找程序
37、双字节字符串顺序查找程序
38、双字节字符串顺序查找程序
39、N字节字符串序列查找器
40.单字节最大值查找器
41、浮点数序列查找器
42、浮点数最大值查找器
43、单字节半查找器
;片内RAM初始化子程序
IBCLR :MOV A,R0
MOVR1
CLR A
IBC1 :MOV @R1
R1公司
DJNZ R7,IBC1
浸水使柔软
;片外RAM初始化子程序
EBCLR1 :MOV A,ADDPL
MOVDPL
阿道夫MOV
MOVDPH
CLR C
EBC11 :MOVX @DPTR
DPTR公司
DJNZ R7,EBC11
浸水使柔软
;片外RAM初始化子程序(双字节单元)
MOV A,ADDPL
MOVDPL
阿道夫MOV
MOVDPH
MOV A,R7
JZ EBC21
R6公司
EBC21 :CLR A
MOVX @DPTR
DPTR公司
DJNZ R7,EBC21
DJNZ R6,EBC21
浸水使柔软
;RAM内部数据复制程序
;入口:R0、R7
;资源占用:a
;堆栈要求:2字节
;出口:R1
伊布莫夫:MOV A,R0
添加A,R7
MOV R0,A
R1 MOV
添加A,R7
MOVR1
IBM1 :DEC R0
十二月R1
MOV A,@R0
MOV @R1
DJNZ R7,IBM1
浸水使柔软
;外部RAM数据复制程序
;入口:ADDPH,ADDPL,R7
;入住率:ACC
;堆栈要求:2字节
;出口:R1 R0
EBMOV1 :MOV A,ADDPL
添加A,R7
MOVDPL
CLR A
阿道夫ADDPH
MOVDPH
MOV A,R7
加一个,R1
XCH A,R0
ADDC A,#00H
MOVP2
EBM11 :DEC R0
CJNE R0,#0FFH,EBM12
十二月P2
EBM 12:DPL十二月
DPL MOV
CJNE A,#0FFH,EBM13
十二月DPH
EBM13 :MOVX A,@R0
MOVX @DPTR
DJNZ R7,EBM11
浸水使柔软
;外部RAM数据复制程序
;入口:阿德夫,阿德普,R6,R7
;入住率:ACC
;堆栈要求:2字节
;出口:R1 R0
EBMOV2 :MOV A,ADDPL
添加A,R7
MOVDPL
R6 MOV
阿道夫ADDPH
MOVDPH
MOV A,R7
加一个,R1
XCH A,R0
R6 ADDC
MOVP2
MOV A,R7
JZ EBM21
R6公司
EBM21 :DEC R0
CJNE R0,#0FFH,EBM22
十二月P2
EBM 22:DPL十二月
DPL MOV
CJNE A,#0FFH,EBM23
十二月DPH
EBM23 :MOVX A,@R0
MOVX @DPTR
DJNZ R7,EBM21
DJNZ R6,EBM21
浸水使柔软
;外部RAM数据被复制到内部RAM程序
;入口:ADDPH,ADDPL,R7
;入住率:ACC
;堆栈要求:2字节
;出口:R0
伊泰莫夫:MOV阿德尔
添加A,R7
MOVDPL
阿道夫MOV
ADDC A,#00H
MOVDPH
MOV A,R0
添加A,R7
MOV R0,A
项目1:十二月零日
十二月DPL
DPL MOV
CJNE A,#0FFH,项目2
十二月DPH
第二项:MOVX A,@DPTR
MOV @R0,A
DJNZ R7,项目1
浸水使柔软
;极限过滤程序
;入口:A,SDAT,德尔蒂
;占用资源:b
;堆栈需求:2字节
;出口:至
贾格菲特:MOV
CLR C
subb a
JNC JUGFT1
CPL A型
公司a
法官1 :SETB
subb a #德尔蒂
JNC JUGFT3战斗机
SDAT MOV
后悔吗
法官3 :MOV甲、乙
MOVSDAT
后悔吗
;中位值滤波程序
;入口:addph、addpl、n
;占用资源:驴位置
;堆栈需求:4字节
;出口:至
MEDFILT :LCALL驴地点
莫夫一个,n
CLR C
RRC A(消歧义)
加一,加l
MOVDPL型
莫夫阿德夫
MOVDPH型核潜艇
JNC MEDFT1型核潜艇
(单位:千美元)
MEDFT1 :MOVX A,@DPTR
后悔吗
;n个点算术平均滤波
;入口:addph、addpl、n
;占用资源:b、R3、R4
;堆栈需求:2字节
;出口:至
AVFILT :MOV A,addpl
MOVDPL型
莫夫阿德夫
MOVDPH型核潜艇
CLR A
MOV R3,a
MOVR4
MOV R7,n
AVFT1 :MOVX A,@DPTR
DPTR公司
增加一、R4
MOVR4
JNC AVFT2战斗机
第三代
AVFT2 :DJNZ R7、AVFT1
MOV R7,n
电影R2 # 00小时
lcall ndiv 31
莫夫一、R4
后悔吗
;n个点加权平均滤波
;入口:addph、addpl、n
;占用资源:b、R3、R4
;堆栈需求:2字节
;出口:至
QAVFILT :CLR A
MOV R3,a
MOVR4
MOV R7,n
MOVP2,ADDPH
MOVR1
mov dptr # qavtab
QAVFT1 :MOVC A,@A DPTR
莫夫乙,甲
MOVX A,@R1
DPTR公司
公司R1
MUL AB(骡子)
增加一、R4
MOVR4
莫夫一个b
addc a、R3
MOV R3,a
DJNZ R7,QAVFT1
莫夫一、R4
JNB ACC.7,QAVFT2号文件
第三代
QAVFT2 :MOV A,R3
后悔吗
QAVTAB:资料库
;一阶加权滞后滤波程序
;入口:a,德尔蒂
;占用资源:b、R3、R4
;堆栈需求:2字节
;出口:至
BQFILT :MOV
CLR A
mov dptr # abtab
MOVC A,@至DPTR
MUL AB(骡子)
MOVR4
MOV R3,b型
mov a # 01小时
MOVC A,@至DPTR
莫夫b德尔蒂
MUL AB(骡子)
增加一、R4
MOVR4
莫夫一个b
addc a、R3
MOV R3,a
莫夫一、R4
JNB第7区,FT1号文件
第三代
FT1 :MOV A、R3
莫夫德尔蒂,一个
后悔吗
BQTAB :DB 80H,80H
;双字节取补程序/(R3R4)=(R3R4)
;入口:R3,R4
;占用资源:ACC
;堆栈需求:2字节
;出口:R3,R4
CMPT :MOV A,R4
CPL A型
添加答# 01h
MOVR4
莫夫a,R3
CPL A型
添加一个# 00h
MOV R3,a
后悔吗
;n个节取补程序/[r0])=([r0])
;入口:R0、R7
;占用资源:ACC,b
;堆栈需求:2字节
;出口:R0
NCMPTN :MOV B,R0
塞卜c
NCPT1 :MOV A,@R0
CPL A型
添加一个# 00h
MOV @R0,a
INC R0(消歧义)
DJNZ R7,NCPT1
莫夫R0,b
后悔吗
;双字节无符号数加法程序(R3R4 R6R7)=(R3R4)
;入口:R3、R4、R6、R7
;占用资源:ACC
;堆栈需求:2字节
;出口:R3,R4,参见
nad:R4 mov a
增加a,R7
MOVR4
莫夫a,R3
addc a
MOV R3,a
后悔吗
;n个字节无符号数加法程序([R0] [R1])=([R0])函数
;入口:R0、R1、R7
;占用资源:ACC,b
;堆栈需求:2字节
;出口:R0,参见
纳德恩:MOV B,R0
CLR C
纳德1 :MOV A,@R0
@R1的地址
MOV @R0,a
INC R0(消歧义)
公司R1
DJNZ R7,NADN1
莫夫R0,b
后悔吗
;双字节无符号数减法程序(R3R4-R6R7)=(R3R4)
;入口:R3、R4、R6、R7
;占用资源:ACC
;堆栈需求:2字节
;出口:R3,R4
国家统计局:mov a,R4
CLR C
SUBB A,R7
MOVR4
莫夫a,R3
子R6 b-a
MOV R3,a
后悔吗
;n个字节无符号数减法程序([R0]-[R1])=([R0])
;入口:R0、R1、R7
;占用资源:ACC,b
;堆栈需求:2字节
;出口:R0,参见
nsbn:mov b,R0
MOV R7,n
CLR C
nsbn 1:mov a,@R0
SUBBAR1
MOV @R0,a
INC R0(消歧义)
公司R1
DJNZ R7,nsubn 1号
莫夫R0,b
后悔吗
;单字节无符号数乘法程序(R3R4*R7)=(R2R3R4)
;入口:R3、R4、R7
;占用资源:ACC,b
;堆栈需求:2字节
;出口:R2、R3、R4
摩门教21:R4 MOV A
莫夫b,R7
MUL AB(骡子)
MOVR4
莫夫一个b
XCH A、R3
莫夫b,R7
MUL AB(骡子)
添加a,R3
MOV R3,a
CLR A
addc a,b(添加a,b)
MOVR2
CLR OV
后悔吗
;单字节无符号数乘法程序(R2R3R4*R7)=(R5R2R3R4)
;入口:R2、R3、R4、R6、R7
;占用资源:ACC,b
;堆栈需求:2字节
;出口:R5、R2、R3、R4
穆罕默德31日:电影a,R4
莫夫b,R7
MUL AB(骡子)
MOVR4
莫夫一个b
XCH A、R3
莫夫b,R7
MUL AB(骡子)
添加a,R3
MOV R3,a
CLR A
addc a,b(添加a,b)
R2 XCH
莫夫b,R7
MUL AB(骡子)
添加一、R2
MOVR2
CLR A
addc a,b(添加a,b)
MOV R5、a
CLR OV
后悔吗
;单字节无符号数乘法程序(R2R3R4*R7)=(R7R5R2R3R4)
;入口:R5、R2、R3、R4、R7
;占用资源:ACC,b
;堆栈需求:2字节
;出口:R7、R5、R2、R3、R4
穆罕默德41:电影a,R4
莫夫b,R7
MUL AB(骡子)
MOVR4
莫夫一个b
XCH A、R3
莫夫b,R7
MUL AB(骡子)
添加a,R3
MOV R3,a
CLR A
addc a,b(添加a,b)
R2 XCH
莫夫b,R7
MUL AB(骡子)
添加一、R2
MOVR2
CLR A
addc a,b(添加a,b)
XCH A,R5
莫夫b,R7
MUL AB(骡子)
增加a,R5
MOV R5、a
CLR A
addc a,b(添加a,b)
莫夫R7,a
CLR OV
后悔吗
;双字节无符号数乘法程序(R3R4*R6R7)=(R5R2R3R4)
;入口:R3、R4、R6、R7
;占用资源:ACC,b
;堆栈需求:2字节
;出口:R5、R2、R3、R4
穆罕默德22日:电影a,R4
莫夫b,R7
MUL AB(骡子)
R4 XCH
MOV R5 b型
莫夫R6
MUL AB(骡子)
增加a,R5
MOV R5、a
CLR A
addc a,b(添加a,b)
MOVR2
莫夫a,R3
莫夫b,R7
MUL AB(骡子)
增加a,R5
MOV R5、a
莫夫一个b
addc a
MOVR2
CLR A
添加一个# 00h
XCH A、R3
莫夫R6
MUL AB(骡子)
添加一、R2
MOVR2
莫夫一个b
addc a、R3
XCH A,R5
MOV R3,a
CLR OV
后悔吗
;双字节无符号数乘法程序(R2R3R4*R6R7)=(R1R5R2R3R4)
;入口:R2、R3、R4、R6、R7
;占用资源:ACC,b
;堆栈需求:2字节
;出口:R1、R5、R2、R3、R4
穆罕默德32:电影a,R4
莫夫b,R7
MUL AB(骡子)
R4 XCH
MOV R5 b型
莫夫R6
MUL AB(骡子)
增加a,R5
MOV R5、a
CLR A
addc a,b(添加a,b)
MOVR1
莫夫a,R3
莫夫b,R7
MUL AB(骡子)
增加a,R5
MOV R5、a
莫夫一个b
addc a
MOVR1
CLR A
添加一个# 00h
XCH A、R3
莫夫R6
MUL AB(骡子)
添加一、R1
MOVR1
莫夫一个b
addc a、R3
XCH A,R5
MOV R3,a
莫夫一、R2
莫夫b,R7
MUL AB(骡子)
添加一、R1
MOVR1
莫夫一个b
addc a,R5
MOV R5、a
CLR A
添加一个# 00h
R2 XCH
莫夫R6
MUL AB(骡子)
增加a,R5
MOV R5、a
莫夫一个b
addc a
R1 XCH
MOVR2
CLR OV
后悔吗
;n个字节无符号数乘法程序([R0]*[R1])=([R0])
;入口:R0、R1、m、n
;占用资源:ACC、b、R2、R5、R6、R7、NCNT
;堆栈需求:2字节
;出口:R0
摩门教:莫夫上午,下午
添加a,R0
MOV R5、a
R1 XCH
XCH A,R5
增加一个,n
XCH A,R0
MOVR6型核潜艇
莫夫b,m
MOVNCNT湾
NMLMN1 :DEC R0
十二月R1(数字量输入)
CLR A
XCHAR1
MOV @R0,a
新西兰NCNT、NMLMN1
MOVNCNT湾
NMLMN2 :CLR A
XCH A,@R0
MOVR2
莫夫一、R6
莫夫R0,a
莫夫a,R5
MOVR1
MOV R7,n
CLR C
nml Mn 3:R2 MOV A
MOVBR1
公司R1
MUL AB(骡子)
addc a,@R0
MOV @R0,a
INC R0(消歧义)
莫夫一个b
addc a,@R0
MOV @R0,a
DJNZ R7,NMLMN3
INC R0(消歧义)
第六代
新西兰NCNT、NMLMN2
莫夫a,R0
CLR C
副学士,硕士
子英国
莫夫R0,a
后悔吗
;单字节无符号除法程序(R2R3R4/R7)=(R2)R3R4余数S7-1200可编程控制器
;入口:R2、R3、R4、R7
;占用资源:ACC、b、F0
;堆栈需求:3字节
;出口* R2、R3、R4、R7、OV
ndiv 31:R2 MOV A
莫夫b,R7
DIV AB(消歧义)
推a
MOVR2湾
莫夫b # 10小时
NDV311 :CLR C
莫夫一、R4
RLC甲(消歧义)
MOVR4
莫夫a,R3
RLC甲(消歧义)
MOV R3,a
莫夫一、R2
RLC甲(消歧义)
MOVR2
莫夫足球俱乐部
CLR C
SUBB A,R7
JB F0、NDV312
JC NDV313战斗机
MOVR2
第四代
NDV313 :DJNZ B,NDV311
流行a
CLR OV
JZ NDV314
塞卜洛夫
NDV 314:R2 XCH A
莫夫R7,a
后悔吗
;单字节无符号除法程序(R5R2R3R4/R7)=(R5)R2R3R4余数S7-1200可编程控制器
;入口:R2、R3、R4、R7
;占用资源:ACC、b、F0
;堆栈需求:3字节
;出口* R2、R3、R4、R7、OV
NDIV41 :MOV A,R5
莫夫b,R7
DIV AB(消歧义)
推a
MOV R5 b型
莫夫b # 18小时
NDV411 :CLR C
莫夫一、R4
RLC甲(消歧义)
MOVR4
莫夫a,R3
RLC甲(消歧义)
MOV R3,a
莫夫一、R2
RLC甲(消歧义)
MOVR2
莫夫a,R5
RLC甲(消歧义)
MOV R5、a
莫夫足球俱乐部
CLR C
SUBB A,R7
JB F0,NDV412
JC NDV413战斗机
NDV412 :MOV R5、a
第四代
NDV413 :DJNZ B,NDV411
流行a
CLR OV
JZ NDV414
塞卜洛夫
NDV414 :XCH A,R5
莫夫R7,a
后悔吗
;双字节无符号除法程序(R5R2R3R4/R6R7)=(R2)R3R4余数R6R7
;入口:R5、R2、R3、R4、R6、R7
;占用资源:ACC、b、F0
;堆栈需求:4字节
;出口* R2、R3、R4、R6、R7、OV
R1 MOV A区
推a
mov b # 00小时
NDV 421:R2 MOV A
CLR C
SUBB A,R7
MOVR1
莫夫a,R5
子R6 b-a
JC NDV422战斗机
MOV R5、a
莫夫一、R1
MOVR2
第二部分
SJMP NDV421
NDV422:推入b
莫夫b # 10小时
NDV423 :CLR C
莫夫一、R4
RLC甲(消歧义)
MOVR4
莫夫a,R3
RLC甲(消歧义)
MOV R3,a
莫夫一、R2
RLC甲(消歧义)
MOVR2
XCH A,R5
RLC甲(消歧义)
XCH A,R5
莫夫足球俱乐部
CLR C
SUBB A,R7
MOVR1
莫夫a,R5
子R6 b-a
JB F0,NCV424
JC NDV425战斗机
ncv 424:mov r5,a
莫夫一、R1
MOVR2
第四代
NDV 425:djnz b,NDV423
流行a
CLR OV
JNZ NDV426战列舰
塞卜洛夫
NDV 426:xch a,R2
莫夫R7,a
莫夫a,R5
MOVR6型核潜艇
流行a
MOVR1
后悔吗
;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
子英国
莫夫NCNT
添加a,R0
MOVR4
XCH A,R0
MOV R3,a
莫夫一、R1
MOV R5、a
电影R2 # 00小时
ndvmn 1:mov r7,n
lcall nsubn
莫夫a,R5
MOVR1
JC NDVMN2
第二代
SJMP NDVMN1
ndvmn 2:mov r7,n
lcall naddn
莫夫一、NCNT
交换到
RR A
莫夫NCNT
ndvmn 3:mov a、R3
莫夫R0,a
莫夫R7,m
LCALL NRLCN
莫夫足球俱乐部
莫夫一、R4
莫夫R0,a
莫夫a,R5
MOVR1
MOV R7,n
lcall nsubn
JB F0、NDVMN4
JC NDVMN5
ndvmn 4:mov a、R3
莫夫R0,a
INC @R0
SJMP NDVMN6
ndvmn 5:mov a,R5
MOVR1
MOV R7,n
lcall naddn
ndvmn 6:NZ ncnt、NDVMN3
莫夫一、R4
MOVR1
莫夫一、R2
MOV @R1
莫夫a,R3
莫夫R0,a
后悔吗
;n字节无符号除法程序(集成)([r0]/r[1])=([r0])
;r0、R1、m、n
;占用资源:ACC、R2、R3、R4、R5、R7、F0
;堆栈需求:2字节
;R0
ndivmn:mov a、m
CLR C
子英国
莫夫乙,甲
添加a,R0
MOVR4
XCH A,R0
MOV R3,a
莫夫一、R1
MOV R5、a
电影R2 # 00小时
ndvmn 1:mov r7,n
CLR C
ndvmn 2:mov a,@R0
SUBBAR1
MOV @R0,a
INC R0(消歧义)
公司R1
DJNZ R7,NDVMN2
莫夫一、R4
莫夫R0,a
莫夫a,R5
MOVR1
JC NDVMN3
第二代
SJMP NDVMN1
ndvmn 3:mov r7,n
CLR C
ndvmn 4:mov a,@R0
@R1的地址
MOV @R0,a
INC R0(消歧义)
公司R1
DJNZ R7、NDVMN4
mov a # 08小时
MUL AB(骡子)
莫夫乙,甲
ndvmn 5:mov a、R3
莫夫R0,a
莫夫R7,m
CLR C
ndvmn 6:mov a,@R0
RLC甲(消歧义)
MOV @R0,a
INC R0(消歧义)
DJNZ R7,NDVMN6
莫夫足球俱乐部
莫夫一、R4
莫夫R0,a
莫夫a,R5
MOVR1
MOV R7,n
CLR C
ndvmn 7:mov a,@R0
SUBBAR1
MOV @R0,a
INC R0(消歧义)
公司R1
DJNZ R7、NDVMN7
JB F0、NDVMNB
JC NDVMN8
ndvmnb:mov a、R3
莫夫R0,a
INC @R0
SJMP NDVMNA
ndvmn 8:mov r7,n
莫夫一、R4
莫夫R0,a
莫夫a,R5
MOVR1
CLR C
ndvmn 9:mov a,@R0
@R1的地址
MOV @R0,a
INC R0(消歧义)
公司R1
DJNZ R7,NDVMN9
ndvmna:djnz b,NDVMN5
莫夫上午,下午
CLR C
子英国
添加a,R3
MOVR1
莫夫一、R2
MOV @R1
莫夫a,R3
莫夫R0,a
后悔吗
;n字节数据左移程序rlc([r0])=(cf[r0])
;r0、R7
;占用资源:ACC,b
;堆栈需求:2字节
;r0,参见
nrlcn:mov b,R0
CLR C
nrn 1:mov a,@R0
RLC甲(消歧义)
MOV @R0,a
INC R0(消歧义)
DJNZ R7,nrln 1
莫夫R0,b
后悔吗
;原码有符号双字节减法程序(r3r4-r6r7)=r3r4
;R3、R4、R6、R7
;占用资源:ACC,DADD
;堆栈需求:6字节
;R3、R4、OV
电影a、R6
中国共产党(the Communist Party of China)第七条
MOVR6型核潜艇
lcall dadd(全氟辛烷磺酸)
后悔吗
;原码有符号双字节加法程序(r3r4 r6r7)=r3r4
;R3、R4、R6、R7
;占用资源:ACC、SR0、NADD、NSUB、CMPT
;堆栈需求:4字节
;R3、R4、OV
dadd:mov a,R3
莫夫c,前注七
莫夫SR0,c
XRL A、R6
莫夫c,前注七
莫夫a,R3
清除(clear的缩写)取得七
MOV R3,a
莫夫一、R6
清除(clear的缩写)取得七
MOVR6型核潜艇
JC DAB2
lcall nadd(消歧义)
莫夫a,R3
JB ACC.7,大伯
dab 1:mov c,SR0
莫夫足球俱乐部
MOV R3,a
CLR OV
后悔吗
塞卜洛夫
后悔吗
dab 2:LCL nsb
莫夫a,R3
jnb ACC 7,DAB1
lcall cmpt
CPL SR0
SJMP DAB1
;原码有符号双字节乘法程序(r3r4*r6r7)=(r5r2r3r4)
;R3、R4、R6、R7
;占用资源:ACC、SR0、NMUL22
;堆栈需求:4字节
;r5、R2、R3、R4
免疫:MOV A,R3
XRL A、R6
莫夫c,前注七
莫夫SR0,c
莫夫a,R3
清除(clear的缩写)取得七
MOV R3,a
莫夫一、R6
清除(clear的缩写)取得七
MOVR6型核潜艇
立法会二十二题
莫夫a,R5
莫夫c Sr 0
莫夫足球俱乐部
MOV R5、a
后悔吗
;原码有符号双字节除法程序(r5r2r3r4/R6R7)=(r3r4)余数(r6r7)
;r5、R2、R3、R4
;占用资源:ACC、SR0、NDIV42
;堆栈需求:6字节
;R3、R4、R6、R7、OV
伊迪夫:莫夫a,R5
R6XRL
MOV C,ACC.7
MOV角SR0
MOV A,R5
CLR ACC.7
MOV R5,A
R6MOV
CLR ACC.7
MOVR6
LCALL NDIV42
MOV A,R3
JB ACC.7,IDIVE
我是JB OV
MOV C,SR0
MOV ACC.7,C
MOV R3,A
浸水使柔软
我是SETBOV
浸水使柔软
;单字节顺序查找程序
;入口:R0,R1,A,R7
;占用资源:B
;堆栈需求:2字节
;出口:R0,R1,A
调查结果1 :MOV
R1MOVDPL
MOVDPH
FINDB11 :MOVX A,@DPTR
CJNE A,B,FINDB12
DPLMOVR1
DPH MOV R0
CLR A
浸水使柔软
FINDB12 :INC DPTR
DJNZ R7,FINDB11
MOV A,#0FFH
浸水使柔软
;单字节顺序查找程序
;入口:R0,R1,A,R6,R7
;占用资源:B
;堆栈需求:2字节
;出口:R0,R1,A
调查结果2 :MOV
R1MOVDPL
MOVDPH
MOV A,R7
JZ FINDB21
R6公司
FINDB21 :MOVX A,@DPTR
CJNE A,B,FINDB22
DPLMOVR1
DPH MOV R0
CLR A
浸水使柔软
FINDB22 :INC DPTR
DJNZ R7,FINDB21
DJNZ R6,FINDB21
MOV A,#0FFH
浸水使柔软
;双字节字符串顺序查找程序
;入口:R0、R1、R3、R4、R7
;占用资源:ACC,B
;堆栈需求:2字节
;出口:R0,R1,A
调查结果1:MOVDPL,R1
MOVDPH
发现11 :MOVX A,@DPTR
DPTR公司
CLR C
R4SUBB
JNZ发现12
MOVX A,@DPTR
SUBB A,R3
JNZ发现12
DPLMOV
CLR C
SUBB A,#01H
MOVR1
DPHMOV
SUBB A,#00H
MOV R0,A
CLR A
浸水使柔软
结果12 :DJNZ R7,结果11
MOV A,#0FFH
浸水使柔软
;双字节字符串顺序查找程序
;入口:R0、R1、R3、R4、R6、R7
;占用资源:ACC,B
;堆栈需求:2字节
;出口:R0,R1,A
调查结果2:R1的MOVDPL
MOVDPH
MOV A,R7
JZ发现21
R6公司
发现21 :MOVX A,@DPTR
DPTR公司
CLR C
R4SUBB
JNZ FINDS22
MOVX A,@DPTR
SUBB A,R3
JNZ FINDS22
DPLMOV
CLR C
SUBB A,#01H
MOVR1
DPHMOV
SUBB A,#00H
MOV R0,A
CLR A
浸水使柔软
查找22 :DJNZ R7,查找21
DJNZ R6,调查结果21
MOV A,#0FFH
浸水使柔软
;普通字节字符串顺序查找程序
;入口 :ADDPH,ADDPL,R0,R6,R7,N
;占用资源:ACC,B,R2,NCNT
;堆栈需求:2字节
;出口 :ADDPH,ADDPL,A
FINDN :MOV A,R0
MOV R2,A
MOV A,ADDPL
MOV DPL,A
MOV A,ADDPH
MOV DPH,A
MOV A,R7
JZ FINDN1
INC R6
FINDN1 :MOV A,R2
MOV R0,A
MOV A,N
MOV NCNT,A
FINDN2 :MOVX A,@DPTR
CLR C
SUBB A,@R0
JNZ FINDN3
INC DPTR
INC R0
DJNZ NCNT,FINDN2
MOV A,DPL
CLR C
SUBB A,N
MOV ADDPL,A
MOV A,DPH
SUBB A,#00H
MOV ADDPH,A
CLR A
RET
FINDN3 :CLR C
MOV A,R0
SUBB A,R2
JNZ FINDN4
INC DPTR
FINDN4 :DJNZ R7,FINDN1
DJNZ R6,FINDN1
MOV A,#0FFH
RET
;单字节最值查找程序
;入口 :R0,R1,R6,R7
;占用资源:ACC,B
;堆栈需求:2字节
;出口 :R0(最大值),R1(最小值),R2,R3,R4,R5
FMAMIB :MOV DPL,R1
MOV DPH,R0
MOVX A,@DPTR
MOV R0,A
MOV R1,A
MOV A,DPL
MOV R3,A
MOV R5,A
MOV A,DPH
MOV R2,A
MOV R4,A
MOV A,R7
JZ FMMB1
INC R6
FMMB1 :MOVX A,@DPTR
MOV B,A
SETB C
SUBB A,R0
JC FMMB2
MOV R0,B
MOV R3,DPL
MOV R2,DPH
SJMP FMMB3
FMMB2 :MOV A,B
CLR C
SUBB A,R1
JNC FMMB3
MOV R1,B
MOV R5,DPL
MOV R4,DPH
FMMB3 :INC DPTR
DJNZ R7,FMMB1
DJNZ R6,FMMB1
RET
;浮点数顺序查找程序
;入口 :R0,R1,R2,R3,R4,R6,R7
;占用资源:B,NCNT,FCMP
;堆栈需求:2字节
;出口 :R0,R1,A
FINDF :MOV DPL,R1
MOV DPH,R0
MOV A,R7
MOV B,A
MOV NCNT,R6
JZ FINDF1
INC NCNT
FINDF1 :MOVX A,@DPTR
INC DPTR
MOV R5,A
MOVX A,@DPTR
INC DPTR
MOV R6,A
MOVX A,@DPTR
INC DPTR
MOV R7,A
LCALL FCMP
JNZ FINDF2
MOV A,DPL
CLR C
SUBB A,#03H
MOV R1,A
MOV A,DPH
SUBB A,#00H
MOV R0,A
CLR A
RET
FINDF2 :DJNZ B,FINDF1
DJNZ NCNT,FINDF1
MOV A,#0FFH
RET
;浮点数最值查找程序
;入口 :ADDPH,ADDPL,R6,R7
;占用资源:ACC,B,NCNT,ITEMOV,EBMOV,MOVB,MOVR1,FCMP
;堆栈需求:5字节
;出口 :[R0](最大值),[R1](最小值),R2,R3,R4,R5
FMAMIF :MOV A,ADDPL
MOV R3,A
MOV R5,A
MOV DPL,A
MOV A,ADDPH
MOV R2,A
MOV R4,A
MOV DPH,A
MOV B,R7
MOV R7,#03H
LCALL ITEMOV
MOV R7,#03H
LCALL IBMOV
MOV A,B
JZ FMMF1
INC NCNT
FMMF1 :PUSH B
MOVX A,@DPTR
INC DPTR
MOV R2,A
MOVX A,@DPTR
INC DPTR
MOV R3,A
MOVX A,@DPTR
INC DPTR
MOV R4,A
LCALL MOVR1
LCALL FCMP
JNC FMMF2
MOV A,R0
XCH A,R1
MOV R0,A
LCALL MOVB
MOV R5,DPL
MOV R4,DPH
MOV A,R0
XCH A,R1
MOV R0,A
SJMP FMMF3
FMMF2 :MOV A,R0
XCH A,R1
MOV R0,A
LCALL MOVR1
LCALL FCMP
MOV A,R0
XCH A,R1
MOV R0,A
JZ FMMF3
JC FMMF3
LCALL MOVB
MOV R3,DPL
MOV R2,DPH
FMMF3 :POP B
DJNZ B,FMMF1
DJNZ NCNT,FMMF1
RET
;单字节折半查找程序
;入口 :A,R0,R1,R6,R7
;占用资源:B,R2
;堆栈需求:2字节
;出口 :R0,R1
SEARCHB :MOV B,A
MOV A,R1
ADD A,R7
MOV R7,A
MOV A,R0
ADDC A,R6
MOV R6,A
MOV A,R7
SUBB A,#01H
MOV R7,A
JNC SECH1
DEC R6
SECH1 :MOV A,R7
CLR C
SUBB A,R1
MOV A,R6
SUBB A,R0
JNC SECH2
MOV A,#0FFH
RET
SECH2 :MOV A,R7
ADD A,R1
MOV R2,A
MOV A,R6
ADDC A,R0
RRC A
MOV DPH,A
MOV A,R2
RRC A
MOV DPL,A
MOVX A,@DPTR
CLR C
SUBB A,B
JNC SECH3
INC DPTR
MOV R0,DPH
MOV R1,DPL
SJMP SECH1
SECH3 :JZ SECH5
MOV A,DPL
SUBB A,#01H
MOV R7,A
JNC SECH4
MOV R6,DPH
DEC R6
SECH4 :SJMP SECH1
SECH5 :MOV R0,DPH
MOV R1,DPL
CLR A
RET









