色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

51單片機的匯編程序庫

Wildesbeast ? 來源:單片機教程網 ? 作者:單片機教程網 ? 2020-12-06 17:31 ? 次閱讀

下面是一些51單片機匯編語言編程常用到的子程序代碼

1、片內RAM初始化子程序

2、片外RAM初始化子程序

3、片外RAM初始化子程序(雙字節個單元)

4、內部RAM數據復制程序

5、外部RAM數據復制程序

6、外部RAM數據復制程序

7、外部RAM數據復制到內部RAM程序

8、限幅濾波程序

9、中位值濾波程序

10、N點算術平均濾波

11、N點加權平均濾波

12、一階加權滯后濾波程序

13、雙字節取補程序

14、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

MOV R1,A

CLR A

IBC1 :MOV @R1,A

INC R1

DJNZ R7,IBC1

RET

;片外RAM初始化子程序

EBCLR1 :MOV A,ADDPL

MOV DPL,A

MOV A,ADDPH

MOV DPH,A

CLR C

EBC11 :MOVX @DPTR,A

INC DPTR

DJNZ R7,EBC11

RET

;片外RAM初始化子程序(雙字節個單元)

EBCLR2 :MOV A,ADDPL

MOV DPL,A

MOV A,ADDPH

MOV DPH,A

MOV A,R7

JZ EBC21

INC R6

EBC21 :CLR A

MOVX @DPTR,A

INC DPTR

DJNZ R7,EBC21

DJNZ R6,EBC21

RET

;內部RAM數據復制程序

;入口 :R0,R7

;占用資源:A

;堆棧需求:2字節

;出口 :R1

IBMOV :MOV A,R0

ADD A,R7

MOV R0,A

MOV A,R1

ADD A,R7

MOV R1,A

IBM1 :DEC R0

DEC R1

MOV A,@R0

MOV @R1,A

DJNZ R7,IBM1

RET

;外部RAM數據復制程序

;入口 :ADDPH,ADDPL,R7

;占用資源:ACC

;堆棧需求:2字節

;出口 :R0,R1

EBMOV1 :MOV A,ADDPL

ADD A,R7

MOV DPL,A

CLR A

ADDC A,ADDPH

MOV DPH,A

MOV A,R7

ADD A,R1

XCH A,R0

ADDC A,#00H

MOV P2,A

EBM11 :DEC R0

CJNE R0,#0FFH,EBM12

DEC P2

EBM12 :DEC DPL

MOV A,DPL

CJNE A,#0FFH,EBM13

DEC DPH

EBM13 :MOVX A,@R0

MOVX @DPTR,A

DJNZ R7,EBM11

RET

;外部RAM數據復制程序

;入口 :ADDPH,ADDPL,R6,R7

;占用資源:ACC

;堆棧需求:2字節

;出口 :R0,R1

EBMOV2 :MOV A,ADDPL

ADD A,R7

MOV DPL,A

MOV A,R6

ADDC A,ADDPH

MOV DPH,A

MOV A,R7

ADD A,R1

XCH A,R0

ADDC A,R6

MOV P2,A

MOV A,R7

JZ EBM21

INC R6

EBM21 :DEC R0

CJNE R0,#0FFH,EBM22

DEC P2

EBM22 :DEC DPL

MOV A,DPL

CJNE A,#0FFH,EBM23

DEC DPH

EBM23 :MOVX A,@R0

MOVX @DPTR,A

DJNZ R7,EBM21

DJNZ R6,EBM21

RET

;外部RAM數據復制到內部RAM程序

;入口 :ADDPH,ADDPL,R7

;占用資源:ACC

;堆棧需求:2字節

;出口 :R0

ITEMOV :MOV A,ADDPL

ADD A,R7

MOV DPL,A

MOV A,ADDPH

ADDC A,#00H

MOV DPH,A

MOV A,R0

ADD A,R7

MOV R0,A

ITEM1 :DEC R0

DEC DPL

MOV A,DPL

CJNE A,#0FFH,ITEM2

DEC DPH

ITEM2 :MOVX A,@DPTR

MOV @R0,A

DJNZ R7,ITEM1

RET

;限幅濾波程序

;入口 :A,SDAT,DELTY

;占用資源:B

;堆棧需求:2字節

;出口 :A

JUGFILT :MOV B,A

CLR C

SUBB A,SDAT

JNC JUGFT1

CPL A

INC A

JUGFT1 :SETB A

SUBB A,#DELTY

JNC JUGFT3

MOV A,SDAT

RET

JUGFT3 :MOV A,B

MOV SDAT,A

RET

;中位值濾波程序

;入口 :ADDPH,ADDPL,N

;占用資源:ESELSORT

;堆棧需求:4字節

;出口 :A

MEDFILT :LCALL ESELSORT

MOV A,N

CLR C

RRC A

ADD A,ADDPL

MOV DPL,A

MOV A,ADDPH

MOV DPH,A

JNC MEDFT1

INC DPH

MEDFT1 :MOVX A,@DPTR

RET

;N點算術平均濾波

;入口 :ADDPH,ADDPL,N

;占用資源:B,R3,R4

;堆棧需求:2字節

;出口 :A

AVFILT :MOV A,ADDPL

MOV DPL,A

MOV A,ADDPH

MOV DPH,A

CLR A

MOV R3,A

MOV R4,A

MOV R7,N

AVFT1 :MOVX A,@DPTR

INC DPTR

ADD A,R4

MOV R4,A

JNC AVFT2

INC R3

AVFT2 :DJNZ R7,AVFT1

MOV R7,N

MOV R2,#00H

LCALL NDIV31

MOV A,R4

RET

;N點加權平均濾波

;入口 :ADDPH,ADDPL,N

;占用資源:B,R3,R4

;堆棧需求:2字節

;出口 :A

QAVFILT :CLR A

MOV R3,A

MOV R4,A

MOV R7,N

MOV P2,ADDPH

MOV R1,ADDPL

MOV DPTR,#QAVTAB

QAVFT1 :MOVC A,@A+DPTR

MOV B,A

MOVX A,@R1

INC DPTR

INC R1

MUL AB

ADD A,R4

MOV R4,A

MOV A,B

ADDC A,R3

MOV R3,A

DJNZ R7,QAVFT1

MOV A,R4

JNB ACC.7,QAVFT2

INC R3

QAVFT2 :MOV A,R3

RET

QAVTAB :DB

;一階加權滯后濾波程序

;入口 :A,DELTY

;占用資源:B,R3,R4

;堆棧需求:2字節

;出口 :A

BQFILT :MOV B,A

CLR A

MOV DPTR,#ABTAB

MOVC A,@A+DPTR

MUL AB

MOV R4,A

MOV R3,B

MOV A,#01H

MOVC A,@A+DPTR

MOV B,DELTY

MUL AB

ADD A,R4

MOV R4,A

MOV A,B

ADDC A,R3

MOV R3,A

MOV A,R4

JNB ACC.7,FT1

INC R3

FT1 :MOV A,R3

MOV DELTY,A

RET

BQTAB :DB 80H,80H

;雙字節取補程序 /(R3R4)=(R3R4)

;入口 :R3,R4

;占用資源:ACC

;堆棧需求:2字節

;出口 :R3,R4

CMPT :MOV A,R4

CPL A

ADD A,#01H

MOV R4,A

MOV A,R3

CPL A

ADDC A,#00H

MOV R3,A

RET

;N節取補程序 /([R0])=([R0])

;入口 :R0,R7

;占用資源:ACC,B

;堆棧需求:2字節

;出口 :R0

NCMPTN :MOV B,R0

SETB C

NCPT1 :MOV A,@R0

CPL A

ADDC A,#00H

MOV @R0,A

INC R0

DJNZ R7,NCPT1

MOV R0,B

RET

;雙字節無符號數加法程序 (R3R4+R6R7)=(R3R4)

;入口 :R3,R4,R6,R7

;占用資源:ACC

;堆棧需求:2字節

;出口 :R3,R4,CF

NADD :MOV A,R4

ADD A,R7

MOV R4,A

MOV A,R3

ADDC A,R6

MOV R3,A

RET

;N字節無符號數加法程序 ([R0]+[R1])=([R0])

;入口 :R0,R1,R7

;占用資源:ACC,B

;堆棧需求:2字節

;出口 :R0,CF

NADDN :MOV B,R0

CLR C

NADN1 :MOV A,@R0

ADDC A,@R1

MOV @R0,A

INC R0

INC R1

DJNZ R7,NADN1

MOV R0,B

RET

;雙字節無符號數減法程序 (R3R4-R6R7)=(R3R4)

;入口 :R3,R4,R6,R7

;占用資源:ACC

;堆棧需求:2字節

;出口 :R3,R4

NSUB :MOV A,R4

CLR C

SUBB A,R7

MOV R4,A

MOV A,R3

SUBB A,R6

MOV R3,A

RET

;N字節無符號數減法程序 ([R0]-[R1])=([R0])

;入口 :R0,R1,R7

;占用資源:ACC,B

;堆棧需求:2字節

;出口 :R0,CF

NSUBN :MOV B,R0

MOV R7,N

CLR C

NSUBN1 :MOV A,@R0

SUBB A,@R1

MOV @R0,A

INC R0

INC R1

DJNZ R7,NSUBN1

MOV R0,B

RET

;單字節無符號數乘法程序 (R3R4*R7)=(R2R3R4)

;入口 :R3,R4,R7

;占用資源:ACC,B

;堆棧需求:2字節

;出口 :R2,R3,R4

NMUL21 :MOV A,R4

MOV B,R7

MUL AB

MOV R4,A

MOV A,B

XCH A,R3

MOV B,R7

MUL AB

ADD A,R3

MOV R3,A

CLR A

ADDC A,B

MOV R2,A

CLR OV

RET

;單字節無符號數乘法程序 (R2R3R4*R7)=(R5R2R3R4)

;入口 :R2,R3,R4,R6,R7

;占用資源:ACC,B

;堆棧需求:2字節

;出口 :R5,R2,R3,R4

NMUL31 :MOV A,R4

MOV B,R7

MUL AB

MOV R4,A

MOV A,B

XCH A,R3

MOV B,R7

MUL AB

ADD A,R3

MOV R3,A

CLR A

ADDC A,B

XCH A,R2

MOV B,R7

MUL AB

ADD A,R2

MOV R2,A

CLR A

ADDC A,B

MOV R5,A

CLR OV

RET

;單字節無符號數乘法程序 (R5R2R3R4*R7)=(R7R5R2R3R4)

;入口 :R5,R2,R3,R4,R7

;占用資源:ACC,B

;堆棧需求:2字節

;出口 :R7,R5,R2,R3,R4

NMUL41 :MOV A,R4

MOV B,R7

MUL AB

MOV R4,A

MOV A,B

XCH A,R3

MOV B,R7

MUL AB

ADD A,R3

MOV R3,A

CLR A

ADDC A,B

XCH A,R2

MOV B,R7

MUL AB

ADD A,R2

MOV R2,A

CLR A

ADDC A,B

XCH A,R5

MOV B,R7

MUL AB

ADD A,R5

MOV R5,A

CLR A

ADDC A,B

MOV R7,A

CLR OV

RET

;雙字節無符號數乘法程序 (R3R4*R6R7)=(R5R2R3R4)

;入口 :R3,R4,R6,R7

;占用資源:ACC,B

;堆棧需求:2字節

;出口 :R5,R2,R3,R4

NMUL22 :MOV A,R4

MOV B,R7

MUL AB

XCH A,R4

MOV R5,B

MOV B,R6

MUL AB

ADD A,R5

MOV R5,A

CLR A

ADDC A,B

MOV R2,A

MOV A,R3

MOV B,R7

MUL AB

ADD A,R5

MOV R5,A

MOV A,B

ADDC A,R2

MOV R2,A

CLR A

ADDC A,#00H

XCH A,R3

MOV B,R6

MUL AB

ADD A,R2

MOV R2,A

MOV A,B

ADDC A,R3

XCH A,R5

MOV R3,A

CLR OV

RET

;雙字節無符號數乘法程序 (R2R3R4*R6R7)=(R1R5R2R3R4)

;入口 :R2,R3,R4,R6,R7

;占用資源:ACC,B

;堆棧需求:2字節

;出口 :R1,R5,R2,R3,R4

NMUL32 :MOV A,R4

MOV B,R7

MUL AB

XCH A,R4

MOV R5,B

MOV B,R6

MUL AB

ADD A,R5

MOV R5,A

CLR A

ADDC A,B

MOV R1,A

MOV A,R3

MOV B,R7

MUL AB

ADD A,R5

MOV R5,A

MOV A,B

ADDC A,R1

MOV R1,A

CLR A

ADDC A,#00H

XCH A,R3

MOV B,R6

MUL AB

ADD A,R1

MOV R1,A

MOV A,B

ADDC A,R3

XCH A,R5

MOV R3,A

MOV A,R2

MOV B,R7

MUL AB

ADD A,R1

MOV R1,A

MOV A,B

ADDC A,R5

MOV R5,A

CLR A

ADDC A,#00H

XCH A,R2

MOV B,R6

MUL AB

ADD A,R5

MOV R5,A

MOV A,B

ADDC A,R2

XCH A,R1

MOV R2,A

CLR OV

RET

;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

;單字節無符號除法程序 (R2R3R4/R7)=(R2)R3R4 余數R7

;入口 :R2,R3,R4,R7

;占用資源:ACC,B,F0

;堆棧需求:3字節

;出口 :(R2),R3,R4,R7,OV

NDIV31 :MOV A,R2

MOV B,R7

DIV AB

PUSH A

MOV R2,B

MOV B,#10H

NDV311 :CLR C

MOV A,R4

RLC A

MOV R4,A

MOV A,R3

RLC A

MOV R3,A

MOV A,R2

RLC A

MOV R2,A

MOV F0,C

CLR C

SUBB A,R7

JB F0,NDV312

JC NDV313

NDV312 :MOV R2,A

INC R4

NDV313 :DJNZ B,NDV311

POP A

CLR OV

JZ NDV314

SETB OV

NDV314 :XCH A,R2

MOV R7,A

RET

;單字節無符號除法程序 (R5R2R3R4/R7)=(R5)R2R3R4 余數R7

;入口 :R2,R3,R4,R7

;占用資源:ACC,B,F0

;堆棧需求:3字節

;出口 :(R5),R2,R3,R4,R7,OV

NDIV41 :MOV A,R5

MOV B,R7

DIV AB

PUSH A

MOV R5,B

MOV B,#18H

NDV411 :CLR C

MOV A,R4

RLC A

MOV R4,A

MOV A,R3

RLC A

MOV R3,A

MOV A,R2

RLC A

MOV R2,A

MOV A,R5

RLC A

MOV R5,A

MOV F0,C

CLR C

SUBB A,R7

JB F0,NDV412

JC NDV413

NDV412 :MOV R5,A

INC R4

NDV413 :DJNZ B,NDV411

POP A

CLR OV

JZ NDV414

SETB OV

NDV414 :XCH A,R5

MOV R7,A

RET

;雙字節無符號除法程序 (R5R2R3R4/R6R7)=(R2)R3R4 余數R6R7

;入口 :R5,R2,R3,R4,R6,R7

;占用資源:ACC,B,F0

;堆棧需求:4字節

;出口 :(R2),R3,R4,R6,R7,OV

NDIV42 :MOV A,R1

PUSH A

MOV B,#00H

NDV421 :MOV A,R2

CLR C

SUBB A,R7

MOV R1,A

MOV A,R5

SUBB A,R6

JC NDV422

MOV R5,A

MOV A,R1

MOV R2,A

INC B

SJMP NDV421

NDV422 :PUSH B

MOV B,#10H

NDV423 :CLR C

MOV A,R4

RLC A

MOV R4,A

MOV A,R3

RLC A

MOV R3,A

MOV A,R2

RLC A

MOV R2,A

XCH A,R5

RLC A

XCH A,R5

MOV F0,C

CLR C

SUBB A,R7

MOV R1,A

MOV A,R5

SUBB A,R6

JB F0,NCV424

JC NDV425

NCV424 :MOV R5,A

MOV A,R1

MOV R2,A

INC R4

NDV425 :DJNZ B,NDV423

POP A

CLR OV

JNZ NDV426

SETB OV

NDV426 :XCH A,R2

MOV R7,A

MOV A,R5

MOV R6,A

POP A

MOV R1,A

RET

;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

;N字節無符號除法程序(集成) ([R0]/R[1])=([R0])

;入口 :R0,R1,M,N

;占用資源:ACC,R2,R3,R4,R5,R7,F0

;堆棧需求:2字節

;出口 :R0

NDIVMN :MOV A,M

CLR C

SUBB A,N

MOV B,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

CLR C

NDVMN2 :MOV A,@R0

SUBB A,@R1

MOV @R0,A

INC R0

INC R1

DJNZ R7,NDVMN2

MOV A,R4

MOV R0,A

MOV A,R5

MOV R1,A

JC NDVMN3

INC R2

SJMP NDVMN1

NDVMN3 :MOV R7,N

CLR C

NDVMN4 :MOV A,@R0

ADDC A,@R1

MOV @R0,A

INC R0

INC R1

DJNZ R7,NDVMN4

MOV A,#08H

MUL AB

MOV B,A

NDVMN5 :MOV A,R3

MOV R0,A

MOV R7,M

CLR C

NDVMN6 :MOV A,@R0

RLC A

MOV @R0,A

INC R0

DJNZ R7,NDVMN6

MOV F0,C

MOV A,R4

MOV R0,A

MOV A,R5

MOV R1,A

MOV R7,N

CLR C

NDVMN7 :MOV A,@R0

SUBB A,@R1

MOV @R0,A

INC R0

INC R1

DJNZ R7,NDVMN7

JB F0,NDVMNB

JC NDVMN8

NDVMNB :MOV A,R3

MOV R0,A

INC @R0

SJMP NDVMNA

NDVMN8 :MOV R7,N

MOV A,R4

MOV R0,A

MOV A,R5

MOV R1,A

CLR C

NDVMN9 :MOV A,@R0

ADDC A,@R1

MOV @R0,A

INC R0

INC R1

DJNZ R7,NDVMN9

NDVMNA :DJNZ B,NDVMN5

MOV A,M

CLR C

SUBB A,N

ADD A,R3

MOV R1,A

MOV A,R2

MOV @R1,A

MOV A,R3

MOV R0,A

RET

;N字節數據左移程序 RLC([R0])=(CF[R0])

;入口 :R0,R7

;占用資源:ACC,B

;堆棧需求:2字節

;出口 :R0,CF

NRLCN :MOV B,R0

CLR C

NRLN1 :MOV A,@R0

RLC A

MOV @R0,A

INC R0

DJNZ R7,NRLN1

MOV R0,B

RET

;原碼有符號雙字節減法程序 (R3R4-R6R7)=R3R4

;入口 :R3,R4,R6,R7

;占用資源:ACC,DADD

;堆棧需求:6字節

;出口 :R3,R4,OV

DSUB :MOV A,R6

CPL ACC.7

MOV R6,A

LCALL DADD

RET

;原碼有符號雙字節加法程序 (R3R4+R6R7)=R3R4

;入口 :R3,R4,R6,R7

;占用資源:ACC,SR0,NADD,NSUB,CMPT

;堆棧需求:4字節

;出口 :R3,R4,OV

DADD :MOV A,R3

MOV C,ACC.7

MOV SR0,C

XRL A,R6

MOV C,ACC.7

MOV A,R3

CLR ACC.7

MOV R3,A

MOV A,R6

CLR ACC.7

MOV R6,A

JC DAB2

LCALL NADD

MOV A,R3

JB ACC.7,DABE

DAB1 :MOV C,SR0

MOV ACC.7,C

MOV R3,A

CLR OV

RET

DABE :SETB OV

RET

DAB2 :LCALL NSUB

MOV 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

IMUL :MOV A,R3

XRL A,R6

MOV C,ACC.7

MOV SR0,C

MOV A,R3

CLR ACC.7

MOV R3,A

MOV A,R6

CLR ACC.7

MOV R6,A

LCALL NMUL22

MOV A,R5

MOV C,SR0

MOV ACC.7,C

MOV R5,A

RET

;原碼有符號雙字節除法程序 (R5R2R3R4/R6R7)=(R3R4) 余數(R6R7)

;入口 :R5,R2,R3,R4

;占用資源:ACC,SR0,NDIV42

;堆棧需求:6字節

;出口 :R3,R4,R6,R7,OV

IDIV :MOV A,R5

XRL A,R6

MOV C,ACC.7

MOV SR0,C

MOV A,R5

CLR ACC.7

MOV R5,A

MOV A,R6

CLR ACC.7

MOV R6,A

LCALL NDIV42

MOV A,R3

JB ACC.7,IDIVE

JB OV,IDIVE

MOV C,SR0

MOV ACC.7,C

MOV R3,A

RET

IDIVE :SETB OV

RET

;單字節順序查找程序

;入口 :R0,R1,A,R7

;占用資源:B

;堆棧需求:2字節

;出口 :R0,R1,A

FINDB1 :MOV B,A

MOV DPL,R1

MOV DPH,R0

FINDB11 :MOVX A,@DPTR

CJNE A,B,FINDB12

MOV R1,DPL

MOV R0,DPH

CLR A

RET

FINDB12 :INC DPTR

DJNZ R7,FINDB11

MOV A,#0FFH

RET

;單字節順序查找程序

;入口 :R0,R1,A,R6,R7

;占用資源:B

;堆棧需求:2字節

;出口 :R0,R1,A

FINDB2 :MOV B,A

MOV DPL,R1

MOV DPH,R0

MOV A,R7

JZ FINDB21

INC R6

FINDB21 :MOVX A,@DPTR

CJNE A,B,FINDB22

MOV R1,DPL

MOV R0,DPH

CLR A

RET

FINDB22 :INC DPTR

DJNZ R7,FINDB21

DJNZ R6,FINDB21

MOV A,#0FFH

RET

;雙字節字符串順序查找程序

;入口 :R0,R1,R3,R4,R7

;占用資源:ACC,B

;堆棧需求:2字節

;出口 :R0,R1,A

FINDS1 :MOV DPL,R1

MOV DPH,R0

FINDS11 :MOVX A,@DPTR

INC DPTR

CLR C

SUBB A,R4

JNZ FINDS12

MOVX A,@DPTR

SUBB A,R3

JNZ FINDS12

MOV A,DPL

CLR C

SUBB A,#01H

MOV R1,A

MOV A,DPH

SUBB A,#00H

MOV R0,A

CLR A

RET

FINDS12 :DJNZ R7,FINDS11

MOV A,#0FFH

RET

;雙字節字符串順序查找程序

;入口 :R0,R1,R3,R4,R6,R7

;占用資源:ACC,B

;堆棧需求:2字節

;出口 :R0,R1,A

FINDS2 :MOV DPL,R1

MOV DPH,R0

MOV A,R7

JZ FINDS21

INC R6

FINDS21 :MOVX A,@DPTR

INC DPTR

CLR C

SUBB A,R4

JNZ FINDS22

MOVX A,@DPTR

SUBB A,R3

JNZ FINDS22

MOV A,DPL

CLR C

SUBB A,#01H

MOV R1,A

MOV A,DPH

SUBB A,#00H

MOV R0,A

CLR A

RET

FINDS22 :DJNZ R7,FINDS21

DJNZ R6,FINDS21

MOV A,#0FFH

RET

;N字節字符串順序查找程序

;入口 :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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1368

    瀏覽量

    114640
  • 51單片機
    +關注

    關注

    274

    文章

    5702

    瀏覽量

    123490
  • 程序
    +關注

    關注

    117

    文章

    3785

    瀏覽量

    81003
收藏 人收藏

    評論

    相關推薦

    pic單片機匯編程序實例

    以下是一個簡單的PIC單片機匯編程序示例,這個程序將實現一個LED閃爍的功能。 首先,我們需要了解PIC單片機的結構和指令集。PIC單片機
    的頭像 發表于 12-14 11:01 ?1881次閱讀

    匯編程序中靈活運用TSRs的程序庫

    匯編程序中靈活運用TSRs的程序庫
    發表于 02-24 14:43 ?2次下載

    PIC單片機控制時鐘芯片DS1302匯編程序

    PIC單片機控制時鐘芯片DS1302匯編程序
    發表于 05-24 09:56 ?1761次閱讀

    EMC系列單片機匯編程序

    本文提供的EMC系列單片機匯編程序,希望對你學習有所幫助!
    發表于 06-03 15:32 ?33次下載

    51單片機匯編程序

    51單片機匯編程序包。
    發表于 01-06 14:12 ?16次下載

    51單片機LCD1602匯編程序詳細資料免費下載

    1602匯編程序51單片機匯編程序,僅需修改引腳定義即可。晶振大小12M,程序測試完全正確。內部包含寫數據、寫命令(包括讀忙和不讀忙)、初
    發表于 08-24 15:24 ?24次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>LCD1602<b class='flag-5'>匯編程序</b>詳細資料免費下載

    51單片機匯編程序有哪些?51單片機匯編程序集詳細資料免費下載

    本文檔的主要內容詳細介紹的是51單片機匯編程序有哪些?51單片機匯編程序集詳細資料免費下載。
    發表于 09-06 16:31 ?55次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>匯編程序</b>有哪些?<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>匯編程序</b>集詳細資料免費下載

    51單片機音樂盒梁祝的proteus匯編程序和電路圖免費下載

    本文檔的主要內容詳細介紹的是51單片機音樂盒梁祝的proteus匯編程序和電路圖免費下載。
    發表于 02-28 15:51 ?32次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>音樂盒梁祝的proteus<b class='flag-5'>匯編程序</b>和電路圖免費下載

    51單片機內部各個模塊的匯編程序免費下載

    本文檔的主要內容詳細介紹的是51單片機內部各個模塊的匯編程序免費下載包括了:
    發表于 08-27 17:29 ?9次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>內部各個模塊的<b class='flag-5'>匯編程序</b>免費下載

    使用51單片機控制數碼管的匯編程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機控制數碼管的匯編程序免費下載。
    發表于 08-14 17:32 ?11次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>控制數碼管的<b class='flag-5'>匯編程序</b>免費下載

    使用51單片機點亮全部LED的匯編程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機點亮全部LED的匯編程序免費下載。
    發表于 07-04 17:41 ?2次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>點亮全部LED的<b class='flag-5'>匯編程序</b>免費下載

    DS18B20和51單片機連接的匯編程序免費下載

    匯編程序僅適合單個DS18B20和51單片機的連接,晶振為12MHZ左右
    的頭像 發表于 09-06 10:52 ?4577次閱讀

    單片機入門匯編程序--直流電機的控制

    單片機入門匯編程序--直流電機的控制(安徽理士電源技術有限公司招聘)-該文檔為單片機入門匯編程序--直流電機的控制總結文檔,是一份不錯的參考資料,感興趣的可以下載看看,,,,,,,,,
    發表于 09-22 14:33 ?11次下載
    <b class='flag-5'>單片機</b>入門<b class='flag-5'>匯編程序</b>--直流電機的控制

    單片機入門匯編程序--直流電機的單片機控制

    單片機入門匯編程序--直流電機的單片機控制(15kvaups電源技術協議)-該文檔為單片機入門匯編程序--直流電機的
    發表于 09-22 14:37 ?38次下載
    <b class='flag-5'>單片機</b>入門<b class='flag-5'>匯編程序</b>--直流電機的<b class='flag-5'>單片機</b>控制

    51單片機匯編程序,溫度報警項目

    51單片機匯編程序,溫度報警項目
    發表于 11-21 12:36 ?19次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>匯編程序</b>,溫度報警項目
    主站蜘蛛池模板: 女生下面免费看| 一本道无码v亚洲| 久久99亚洲热最新地址获取| freevideoshd| 亚洲午夜精品A片久久WWW解说| 男生互捏jiji的故事| 国产一区二区三区国产精品| XXX国产麻豆HD| 伊人狼人久久精品热9| 色综合久久五月| 暖暖日本免费播放| 久久视频在线视频观看天天看视频| 国产3级在线观看| 91福利在线观看| 亚洲一区成人| 亚洲AV无码影院在线播放| 日本一本道高清码v| 免费乱理伦片在线观看夜| 精品人妻伦九区久久AAA片69 | 116美女写真成人午夜视频| 甜性涩爱bt下载| 强奷漂亮女老板在线播放| 口工漫画r18全彩啪啪| 久久er99热精品一区二区| 国产女人毛片| 国产成人8x视频一区二区| GAY空少被体育生开菊| 97影院午夜午夜伦不卡| 岳打开双腿开始配合日韩视频| 性欧美videosex18嫩| 善良的女房东味道2在线观看| 欧美MV日韩MV国产网站| 蜜芽一区二区国产精品| 鲁大师影院在线视频在线观看| 久草在线精彩免费视频| 黄色三级三级免费看| 国产偷啪自怕网| 国产又粗又猛又爽黄老大爷| 国产乱人伦AV麻豆网| 国产免费人视频在线观看免费| 高清午夜福利电影在线|