51单片机汇编编程(51单片机的汇编程序库)

以下是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