⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 21imcu.html

📁 一些关于数据转换与计算的子程序
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<p><br>;********************************************************************<br>;Name: <a name="BIN3toBCD4">BIN3toBCD4</a><br>;Func: 三字节二进制整数---&gt;&gt;BCD码四字节转换(Comped BCD)<br>;Input: 二进制数人低字节到高字节存放在内部RAM50H,51H,52H单元中<br>;Output: BCD码人低位到高位分别存放在内部RAM53H,54H,55H,56H单元中<br>;USE:&nbsp;&nbsp;&nbsp; R7-R0,&nbsp;&nbsp;&nbsp; 56H-50H<br>;********************************************************************<br>;PASSED<br>BIN3toBCD4:<br>LENG1 EQU 24<br>LENG2 EQU 4<br>LENG3 EQU 3<br>NUMB1 EQU 50H<br>NUMB2 EQU 53H<br>&nbsp;&nbsp;&nbsp; ;;;For test<br>&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; 50H,&nbsp;&nbsp;&nbsp; #00H<br>&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; 51H,&nbsp;&nbsp;&nbsp; #0FFH<br>&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; 52H,&nbsp;&nbsp;&nbsp; #0FFH<br>&nbsp;&nbsp;&nbsp; ;;;;;;;;;;<br>ACALL MUBTD<br>&nbsp;&nbsp;&nbsp; RET<br>;;LOOP: SJMP LOOP<br>MUBTD: MOV R0, #NUMB2<br>MOV R7, #LENG2<br>CLR A<br>LOOP1: MOV @R0, A<br>INC R0<br>DJNZ R7, LOOP1<br>MOV R7, #LENG1<br>LOOP4: MOV R1, #NUMB1<br>MOV R6, #LENG3<br>CLR C<br>LOOP2: MOV A, @R1<br>RLC A<br>MOV @R1, A<br>INC R1<br>DJNZ R6, LOOP2<br>MOV R5, #LENG2<br>MOV R0, #NUMB2<br>LOOP3: MOV A, @R0<br>ADDC A, @R0<br>DA A<br>MOV @R0, A<br>INC R0<br>DJNZ R5, LOOP3<br>DJNZ R7, LOOP4<br><br>MOV R0, 53H<br>MOV R1, 54H<br>MOV R2, 55H<br>MOV R3, 56H<br>RET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; &nbsp;&nbsp;&nbsp; end of BIN3toBCD4<br>;********************************************************************<br>;_____________________________________________________________________________<br>; Name: <a name="SIBITD">SIBITD</a><br>;Func: 单字节二进制整数--&gt;&gt;BCD码转换子程序<br>;Input: 二进制数放在内部RAM20H单元<br>;OutPut:&nbsp;&nbsp;&nbsp; 转换后的BCD码高位放在内部RAM22H<br>;_____________________________________________________________________________<br>LENG1 EQU 8 ;二进制数位数<br>LENG2 EQU 2 ;BCD码字节数<br>NUMB1 EQU 20H ;二进制数地址<br>NUMB2 EQU 21H ;BCD码首址<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORG&nbsp;&nbsp;&nbsp; 2000H<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AJMP&nbsp;&nbsp;&nbsp; MAIN<br>MAIN:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R0, &nbsp;&nbsp;&nbsp; #NMB1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R1, &nbsp;&nbsp;&nbsp; #NUMB2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R7, &nbsp;&nbsp;&nbsp; #LENG1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACALL&nbsp;&nbsp;&nbsp; SIBTD<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SJMP&nbsp;&nbsp;&nbsp; $<br>SIBTD:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; A<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; 21H,&nbsp;&nbsp;&nbsp; A<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; 22H,&nbsp;&nbsp;&nbsp; A<br>LOOP3:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp; C<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A,&nbsp;&nbsp;&nbsp; @R0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RLC&nbsp;&nbsp;&nbsp; A<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; @R0,&nbsp;&nbsp;&nbsp; A<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R1, &nbsp;&nbsp;&nbsp; #NUMB2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; R6, &nbsp;&nbsp;&nbsp; #LENG3<br>LOOP2:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; A, &nbsp;&nbsp;&nbsp; #R1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADDC&nbsp;&nbsp;&nbsp; A, &nbsp;&nbsp;&nbsp; #@R1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DA&nbsp;&nbsp;&nbsp; A<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp; @R1,&nbsp;&nbsp;&nbsp; A<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INC&nbsp;&nbsp;&nbsp; R1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DJNZ&nbsp;&nbsp;&nbsp; R6, &nbsp;&nbsp;&nbsp; LOOP2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DJNZ&nbsp;&nbsp;&nbsp; R7, &nbsp;&nbsp;&nbsp; LOOP3<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RET<br>;___________________________________________________________________________<br>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 二进制数 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BCD码<br>; (20H) (22H 21H)<br>; FF 2 55<br>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7F &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 27<br>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 28<br>;____________________________________________________________________________<br><br><br>;_____________________________________________________________________________<br>; Name: <a name="ADDM1">ADDM1</a><br>;Func: 三字节加法子程序并显示和值<br>;Input: 被加数数据区首址由R0指向内部RAM20H单元.加数数据区首地址由R1指向内部RAM23单元<br>;OutPut: 和数放在被加数的数据区<br>;_____________________________________________________________________________<br>ORG 20H<br>DATA: DEFB 66H ;被加数低字节<br>DEFB 77H<br>EEFB 88H ;被加数高字节<br>DATAB: DEFB 44H ;加数低字节<br>DEFB 66H<br>DEFB 77H; ;加数高字节<br>COVNT: EQU 03H ;字节数<br>ORG DAH<br>DS: DEFS 06H; display BUF<br>ORG 2000H<br>AJMP MAIN<br>MAIN: MOV R3, #COVNT<br>MOV R0, #DATA<br>MOV R1, #DATB<br>ACALL ADDM1<br>ACALL DSVP0<br>LOOP0: SJMP LOOP0<br>ADDM1: CLR A<br>LOOP: MOV A, @R0<br>ADDC A, @R1<br>MOV @R0, A<br>INC R0<br>INC R1<br>DJNZ R3, LOOP1<br>RET<br>DSUP0: MOV R0, #DS+5<br>MOV A, DATA<br>ACALL PTDS<br>MOV A, DATA+1<br>ACALL PTDS<br>MOV A, DATA+2<br>ACALL PTDS<br>MOV R0, #DS<br>MOV R2, #20H<br>MOV R3, #00H<br>MOV DPTR, #SEGPT<br>DSVP1: MOV A, #0FFH<br>MOV R1, #0E3H<br>MOVX @R1, A<br>MOVX A, @R0<br>MOVC A, @A+DPTR<br>MOV R1, #0E1H<br>MOVX @R, A<br>MOV A, R2<br>MOV R1, #0E3H<br>MOVX @R1, A<br>DSVP2: DJNZ R3, DSVP2<br>INC R0<br>CLR C<br>MOV A, R2<br>RRC A<br>MOV R2, A<br>JNZ A, DSVP1<br>LJMP DSVP0<br>RET<br>PTDS: MOV R1, A<br>ACALL PTDS1<br>MOV A, P1<br>SWAP<br>PTDS1: ANL A, #0FH<br>MOV @R0, A<br>DEC R0<br>RET<br>SEGPT: DEFB 0C0H, 0F9H<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEFB&nbsp;&nbsp;&nbsp; 0A4H, &nbsp;&nbsp;&nbsp; 0B0H<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEFB&nbsp;&nbsp;&nbsp; 99H, &nbsp;&nbsp;&nbsp; 92H<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEFB&nbsp;&nbsp;&nbsp; 82H, &nbsp;&nbsp;&nbsp; 0F8H<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEFB&nbsp;&nbsp;&nbsp; 80H, &nbsp;&nbsp;&nbsp; 90H<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEFB&nbsp;&nbsp;&nbsp; 88H, &nbsp;&nbsp;&nbsp; 83H<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEFB&nbsp;&nbsp;&nbsp; 0C6H, &nbsp;&nbsp;&nbsp; 0A1H<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEFB&nbsp;&nbsp;&nbsp; 86H, &nbsp;&nbsp;&nbsp; 8EH<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END<br>;__________________________________________________________________________<br>; 被加数 加数 和数<br>; 22H21H20H 25H24H23H 22H21H20H<br>; 88 77 66 77 66 44 FF DD AA<br>; 78 65 44 77 65 98 F0 00 00<br>;__________________________________________________________________________<br><br>;_____________________________________________________________________________<br>;Name: <a name="SUBM">SUBM</a><br>;Func: 多字节减法子程序<br>;Input: 被减数数据区首址由R0指向内部RAM20H单元.减数数据区首地址由R1指向内部RAM23单元<br>;OutPut: 差数放在被减数的数据区<br>;_____________________________________________________________________________<br><br>ORG 20H<br>DATA: DEFB 0FFH ;被减数低字节<br>DEFB 0FFH<br>DEFB 0FFH <br>DEFB 0FFH ;被减数高字节<br>DATB: DEFB 55H ;减数低字节<br>DEFB 55H <br>DEFB 55H<br>DEFB 55H ;减数高字节<br>COVNT: EQU 04H ;字节数<br>ORG 2000H<br>AJMP MAIN<br>MAIN: MOV R3, #COVNT<br>MOV R0, #DATA<br>MOV R1, #DATB<br>ACALL SUBM<br>LOOP: SJMP LOOP<br>SUMB: CLR C<br>CLR A<br>LOOP1: MOV A, @R0<br>SUBB A, @R1<br>MOV @R0, A<br>INC R0<br>INC R1<br>DJNZ R3, LOOP1<br>RET<br>END<br>;__________________________________________________________________________<br>;&nbsp;&nbsp;&nbsp; 被减数 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 减数 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 差数<br>;&nbsp;&nbsp;&nbsp; 23H22H21H20H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 27H26H25H24H &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 23H22H21H20H<br>;&nbsp;&nbsp;&nbsp; FF FF FF FF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 55 55 55 55&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AA AA AA AA <br>;&nbsp;&nbsp;&nbsp; AA AA AA AA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 55 55 55 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -