; 1, 以下的程序是一些关于数据转换与计算的子程序.但由于本人现在很忙,仅测试了; 其中的很少一部分.本人不保证所有的程序都是正确的,并且由于使用不同的编译器,; 即使是本人已测试过的程序,您也可能要修改一些指令.; 2. 一旦将其整理测试完毕,将会免费发送.; 3. 若有任何问题,与TongZhongZhi@联系;******************************************************************** 函数名说明BIN3toBCD4 三字节二进制整数--->>BCD码四字节转换SIBITD 单字节二进制整数-->>BCD码转换子程序ADDM1 三字节加法子程序并显示和值SUBM 多字节减法子程序SUBM4 四字节乘四字节乘法子程序CHU3 五字节除五字节除法子程序CHU4 双字节除单字节除法子程序CHU5 双字节除单字节商为双字节除法子程序CHU6 三字节除单字节商为三字节除法了程序CHU7 三字节除双字节商为三字节除法子程序CHU8 四字节除双字节商为二字节除法子程序CHU9 三字节或二字节的倒数结果为三字节除法子程序CHU10 带符号双字节除单字节除法子程序SQRT 双字节平方根子程序BCDAD1 单字节BCD码加法子程序BCDAD2 四字节BCD码加法子程序BCDSUB3 单字节BCD码减法子程序DSUB2 四字节BCD码减法子程序BCDSUB4 单字节BCD码乘法子程序DCHFA 十进制数8位乘8位(四字节BCD码乘四字节BCD码)乘法子程序DCHU1 单字节BCD码除法子程序DCHU2 四字节BCD码除法子程序DSQR1 单字节BCD码平方根子程序DSQR2 双字节BCD码平方根子程序DSQR3 三字节BCD码平方根子程序ASBIN1 ASCII码--->>二进制数转换子程序EXASC1 十六进制--->>ASCII码转换子程序BCDAS1 BCD码--->>ASCII码转换子程序BINBCD 双字节二进制-->>三字节BCD码转换子程序DTOB4 四位BCD码--->>十六位二进制数转换子程序BINASC 二进制数--->>ASCII码字符串转换子程序BCH 二进制数--->>十六进制数转换子程序ASCBCD ASCII码-->>BCD码转换子程序ASCHEX ASCII码-->>十六进制数转换子程序BCDBIN BCD码--->>二进制数转换子程序EXASC3 十六进制数-->>ASCII码转换子程序;******************************************************************** ;Name: BIN3toBCD4;Func: 三字节二进制整数--->>BCD码四字节转换(Comped BCD);Input: 二进制数人低字节到高字节存放在内部RAM50H,51H,52H单元中;Output: BCD码人低位到高位分别存放在内部RAM53H,54H,55H,56H单元中;USE: R7-R0, 56H-50H;******************************************************************** ;PASSEDBIN3toBCD4:LENG1 EQU 24LENG2 EQU 4LENG3 EQU 3NUMB1 EQU 50HNUMB2 EQU 53H;;;For testMOV 50H, HMOV 51H, FFHMOV 52H, FFH;;;;;;;;;;ACALL MUBTDRET;;LOOP: SJMP LOOPMUBTD: MOV R0, #NUMB2MOV R7, #LENG2CLR ALOOP1: MOV @R0, AINC R0DJNZ R7, LOOP1MOV R7, #LENG1LOOP4: MOV R1, #NUMB1MOV R6, #LENG3CLR CLOOP2: MOV A, @R1RLC AMOV @R1, AINC R1DJNZ R6, LOOP2MOV R5, #LENG2MOV R0, #NUMB2LOOP3: MOV A, @R0ADDC A, @R0DA AMOV @R0, AINC R0DJNZ R5, LOOP3DJNZ R7, LOOP4MOV R0, 53HMOV R1, 54HMOV R2, 55HMOV R3, 56HRET ; end of BIN3toBCD4;******************************************************************** ;____________________________________________________________________ _________; Name: SIBITD;Func: 单字节二进制整数-->>BCD码转换子程序;Input: 二进制数放在内部RAM20H单元;OutPut: 转换后的BCD码高位放在内部RAM22H;____________________________________________________________________ _________LENG1 EQU 8 ;二进制数位数LENG2 EQU 2 ;BCD码字节数NUMB1 EQU 20H ;二进制数地址NUMB2 EQU 21H ;BCD码首址ORG 2000HAJMP MAINMAIN: MOV R0, #NMB1MOV R1, #NUMB2MOV R7, #LENG1ACALL SIBTDSJMP $SIBTD: CLR AMOV 21H, AMOV 22H, ALOOP3: CLR CMOV A, @R0RLC AMOV @R0, AMOV R1, #NUMB2MOV R6, #LENG3LOOP2: MOV A, #R1ADDC A, #@R1DA AMOV @R1, AINC R1DJNZ R6, LOOP2DJNZ R7, LOOP3RET;____________________________________________________________________ _______; 二进制数BCD码; (20H) (22H 21H); FF 2 55; 7F 1 27; 80 1 28;____________________________________________________________________ ________;____________________________________________________________________ _________; Name: ADDM1;Func: 三字节加法子程序并显示和值;Input: 被加数数据区首址由R0指向内部RAM20H单元.加数数据区首地址由R1指向内部RAM23单元;OutPut: 和数放在被加数的数据区;____________________________________________________________________ _________ORG 20HDATA: DEFB 66H ;被加数低字节DEFB 77HEEFB 88H ;被加数高字节DATAB: DEFB 44H ;加数低字节DEFB 66HDEFB 77H; ;加数高字节COVNT: EQU 03H ;字节数ORG DAHDS: DEFS 06H; display BUFORG 2000HAJMP MAINMAIN: MOV R3, #COVNTMOV R0, #DATAMOV R1, #DATBACALL ADDM1ACALL DSVP0LOOP0: SJMP LOOP0 ADDM1: CLR A LOOP: MOV A, @R0 ADDC A, @R1MOV @R0, AINC R0INC R1DJNZ R3, LOOP1RETDSUP0: MOV R0, #DS+5 MOV A, DATAACALL PTDSMOV A, DATA+1 ACALL PTDSMOV A, DATA+2 ACALL PTDSMOV R0, #DSMOV R2, HMOV R3, HMOV DPTR, #SEGPT DSVP1: MOV A, FFH MOV R1, E3HMOVX @R1, AMOVX A, @R0MOVC A, @A+DPTR MOV R1, E1HMOVX @R, AMOV A, R2MOV R1, E3HMOVX @R1, ADSVP2: DJNZ R3, DSVP2 INC R0CLR CMOV A, R2RRC AMOV R2, AJNZ A, DSVP1LJMP DSVP0RETPTDS: MOV R1, A ACALL PTDS1MOV A, P1SWAPPTDS1: ANL A, FHMOV @R0, ADEC R0RETSEGPT: DEFB 0C0H, 0F9HDEFB 0A4H, 0B0HDEFB 99H, 92HDEFB 82H, 0F8HDEFB 80H, 90HDEFB 88H, 83HDEFB 0C6H, 0A1HDEFB 86H, 8EHEND;____________________________________________________________________ ______; 被加数加数和数; 22H21H20H 25H24H23H 22H21H20H; 88 77 66 77 66 44 FF DD AA; 78 65 44 77 65 98 F0 00 00;____________________________________________________________________ ______;____________________________________________________________________ _________;Name: SUBM;Func: 多字节减法子程序;Input: 被减数数据区首址由R0指向内部RAM20H单元.减数数据区首地址由R1指向内部RAM23单元;OutPut: 差数放在被减数的数据区;____________________________________________________________________ _________ORG 20HDATA: DEFB 0FFH ;被减数低字节DEFB 0FFHDEFB 0FFHDEFB 0FFH ;被减数高字节DATB: DEFB 55H ;减数低字节DEFB 55HDEFB 55HDEFB 55H ;减数高字节COVNT: EQU 04H ;字节数ORG 2000HAJMP MAINMAIN: MOV R3, #COVNTMOV R0, #DATAMOV R1, #DATBACALL SUBMLOOP: SJMP LOOPSUMB: CLR CCLR ALOOP1: MOV A, @R0SUBB A, @R1MOV @R0, AINC R0INC R1DJNZ R3, LOOP1RETEND;____________________________________________________________________ ______; 被减数减数差数; 23H22H21H20H 27H26H25H24H 23H22H21H20H; FF FF FF FF 55 55 55 55 AA AA AA AA; AA AA AA AA 55 55 55 55 55 55 55 55; 12 34 56 78 12 34 56 79 FF FF FF FF;____________________________________________________________________ ______;____________________________________________________________________ _________;Name: SUBM4;Func: 四字节乘四字节乘法子程序;Input:被乘数和乘数分别放在内部RAM20H--27H单元中,乘数位数放在2AH单元中;OutPut: 乘积放在内部RAM61H-68H单元中.;____________________________________________________________________ _________ORG 20HDATA1 DEFB 0FFH 被乘数低字节DATA2 DEFB 0FFHDATA3 DEFB 0FFHDATA4 DEFB 7FH 被乘数高字节DATB1 DEFB 0FFH 乘数低字节DATB2 DEFB 0FFHDATB3 DEFB 0FFHDATB4 DEFB 7FH 乘数高字节COVNT EQU 20HORG 2000HAJMP MAINMAIN: MOV R0, DATA1 MOV R1, DATA2MOV R2, DATA3MOV R3, DATA4MOV R4, DATB1MOV R5, DATB2MOV R6, DATB3MOV R7, DATB4MOV 2AH, #COVNTCLR AMOV 61H, AMOV 62H, AMOV 63H, AMOV 64H, AMOV 65H, AMOV 66H, AMOV 67H, AMOV 68H, AACALL CHENG6LOOP0: SJMP LOOP0ORG 2200HCHENG6: MOV A, 61HADD A, 61HMOV 61H, AMOV A, 62HADDC A, 62HMOV 62H, AMOV A, 63HADDC A, 63HMOV 63H, AMOV A, 64HADDC A, 64HMOV 64H, AMOV A, 65HADDC A, 65HMOV 65H, AMOV A, 66HADDC A, 66HMOV 66H, AMOV A, 67HADDC A, 67HMOV 67H, AMOV A, 68HADDC A, 68HMOV 68H, AMOV A, R4ADD A, R4MOV R4, AMOV A, R5ADD A, R5MOV R5, AMOV A, R6ADD A, R6MOV R6, AMOV A, R7ADD A, R7MOV R7, AJNC LOOP1MOV A, 61HADD A, R0MOV 61H, AMOV A, 62HADDC A, R1MOV A, 63HADDC A, R2MOV 63H, AMOV A, 64HADDC A, R3MOV 64H, AMOV A, 65HADDC A, HMOV 65H, AMOV A, 66HADDC A, HMOV 66H, AMOV A, 67HADDC A, HMOV 67H, AMOV A, 68HADDC A, HMOV 68H, ALOOP1: DJNZ 2AH, LOOP2 RETLOOP2: AJMP CHENG6END;____________________________________________________________________ ______; 被乘数乘数积数; 23H22H21H20H 27H26H25H24H 68H--61H; 7F FF FF FF 7F FF FF FF 3F FF FF FF 00 00 01 00; 00 FF FF FF 00 00 FF FF 00 00 00 FF FE FF 00 01;____________________________________________________________________ ______;____________________________________________________________________ _________;Name: CHU3;Func: 五字节除五字节除法子程序;Input: 被除数放在内部RAM20H-24H单元中,除数放在10H-14H单元中.;OutPut:商数放在25-29单元中,25H单元放最低字节,余数放在20H-24H单元中,20H单元放最低字节;Use: 用A,C,R0,R1,R2,R3,R6,R7寄存器,其中R0作移位减计数器,使用位地址60H单元作进位位,C作暂存器;____________________________________________________________________ _________ORG 20HDATA1: DEFB 21H 被除数最低字节DATA2: DEFB 43HDATA3: DEFB 65HDATA4: DEFB 87HDATA5: DEFB A9H 被除数最高字节ORG 10HDATB1: DEFB 9AH 除数最低字节DATB2: DEFB 78HDATB3: DEFB 56HDATB4: DEFB 34HDATB5: DEFB 12H 除数最高字节ORG 2000HAJMP MAINMAIN: ACALL CHU3LOOP: SJMP LOOPCHU3: MOV R0, #DATB1MOV R7, H ;检查除数为零停止运算LOOP1: MOV A, @R0JNC R0ORL A, @R0JNZ A, LOOP0DJNZ R7, LOOP1AJMP LOOP2LOOP0: CLR AMOV R0, HMOV R7, HLOOP3: MOV @R0, AINC R0DJNZ R7, LOOP6MOV R6, H ;移位计数器LOOP8: MOV R0, #DATA1 ;与商连在一起左移MOV R7, AHLOOP4: MOV A, @R0RLC AMOV @R0, AINC R0DJNZ R7, LOOPCLR CMOV R0, H; 被除数减除数(此被除数是扩充位) MOV R1, #DATB1MOV R7, HLOOP5: MOV A, @R0SUBB A, @R1MOV @R0, AINC R0INC R1DJNZ R7, LOOP5JNC C, LOOP6MOV 66H, C ;暂存进位位MOV R0, H ;不够减恢复余数MOV R1, #DATB1MOV R7, HCLR CLOOP7: MOV A, @R0ADDC A, @R1MOV @R0, AINC R0INC R1DJNZ R7, LOOP7MOV C, 60HLOOP6: CPL CDJNZ R6, LOOP8MOV R1, HMOV R1, HMOV 7, HLOOP9: MOV A, @R0RLC AMOV R3, AMOV A, @R1MOV @R0, AMOV A, R3MOV @R1, AINC R0INC R1DJNZ R7, LOOP9LOOP2: RET;____________________________________________________________________ _________;Name: CHU4;Func: 双字节除单字节除法子程序;Input: 被除数放在R0,R1 R0放被除数低字节,除数放在R4,R7为字节长度;OutPut: 商数庆在R0中,余数放在R1中;Use:;____________________________________________________________________ _________DATA1 EQU 6DH 被除数低字节DATA2 EQU 32H 被除数高字节DATB EQU 47H 除数ORG 2000HAJMP MAINMAIN: MOV R0, #DATA1MOV R1, #DATA2MOV R4, #DATBMOV R7, HACALL CHU4LOOP: SJMP LOOPCHU4: MOV A, R0ADD A, R0MOV R0, AADDC A, R1MOV R1, ASUBB A, R4JC C, LOOP1MOV R1, AINC R0LOOP1: DJNZ R7, CHU4RETEND;____________________________________________________________________ ______; 被除数除数商数余数; R1R0 R4 R0 R1; 326D 47 B5 3A; 00FF 10 0F 0F; 7FFF FG 80 7F; 0040 F8 00 40; FFC0 08 FF D2;____________________________________________________________________ ______;____________________________________________________________________ _________;Name: CHU5;Func: 双字节除单字节商为双字节除法子程序;Input: 被除数放在R0,R1中,除数放在R3中,R2为被除数扩充位;OutPut: 商数放在R4,R5中,R4放低位,余数放在R2中;____________________________________________________________________ _________DATA1 EQU 01H 被除数低字节DATA2 EQU 10H 被除数高字节DATB EQU 10H 除数ORG 2000HAJMP MAINMAIN: MOV R0, #DATA1MOV R1, #DATA2MOV R2, HMOV R3, #DATBMOV R4, HMOV R5, HMOV R7, 10HACALL CHU5LOOP: SJMP LOOPCHU5: MOV A, R0ADD A, R0MOV R0, AMOV A, R1ADDC A, R1MOV R1, AMOV A, R2ADDC A, R2MOV R2, AMOV A, R4 ;商数左移ADD A, R4MOV R4, AMOV A, R5ADDC A, R5MOV R5, ACJNE R2, #DATB, LOOP0LOOP0: JC C, LOOP1MOV A, R2; 建立新的余数SUBB A, R3MOV R2, AMOV A, R4ADD A, HMOV R4, AMOV A, R5ADDC A, HMOV R5, ,ALOOP1: DJNZ R7, CHU5RET;____________________________________________________________________ _________; 被乘数乘数商数余数; R1R0 R2 R5R4 R2; 1001 10 0100 01; 17FF 10 007F 0F;____________________________________________________________________ _________;____________________________________________________________________ _________;Name: CHU6;Func: 三字节除单字节商为三字节除法了程序;Input: 被除数放在R0R1R2中, 除数放在R4中,R3存放被除数扩充位,也是余数存放数;OutPut:商数放在内部RAM20H-22H单元中,其中20H单元放最低位;Use:;____________________________________________________________________ _________DATA1 EQU 08H ; 被除数最低位DATA2 EQU 00H ; 被除数最高位DATA3 EQU D0HDATB EQU 20H ; 除数ORG 2000HAJMP LOOP0LOOP0 MOV R0, #DATA1MOV R1, #DATA2MOV R2, #DATA3MOV R3, #DATABMOV R4, #DATA1MOV R3, HMOV 20H, HMOV 21H, HMOV 22H, HMOV R7, HACALL CHU6LOOP2: SJMP LOOP2CHU6: MOV A, R0ADD A, R0 ; 被除数左移,包括扩充位MOV R0, AMOV A, R1ADDC A, R1MOV R1, AMOV A, R2ADDC A, R2MOV R2, AMOV A, R3ADDC A, R3MOV R3, AMOV A, 20H; 商数左移RLC AMOV 20H, AMOV A, 21HRLC AMOV 21H, AMOV A, 22HRLC AMOV 22H, AMOV A, R3SUBB A, R4JC C, LOOP1MOV R3, AJNC 20HAJMP LOOP2LOOP1: ADD A, R4LOOP2: DJNZ R7, CHU6RET;____________________________________________________________________ _________;Name: CHU7;FUNC: 三字节除双字节商为三字节除法子程序:INPUT: 被除数放在内部RAM20H--22H单元中,除数放在R4,R5中;OUTPUT:商数放在内部RAM26H--28H单元中,余数放在23H,24H单元中.;____________________________________________________________________ _________20H EQU 00H ;被除数最低字节21H EQU 00H ;被除数低字节22H EQU F0H ;被除数最高字节DATB1 EQU 1DH ;除数低字节DATB2 EQU 23H ;除数高字节ORG 2000HAJMP LOOP0LOOP0: MOV R4, #DATB1MOV R5, #DATB1MOV R7, HMOV 20H, HMOV 21H, HMOV 22H, F0HMOV 23H, HMOV 24H, HACALL CHU7LOOP: SJMP LOOPCHU7: CLR CMOV A, 20H ;被除和扩充位左移RLC AMOV 20H, AMOV A, 21HRLC AMOV 21H, AMOV A, 22HRLC AMOV 22H, AMOV A, 23HRLC AMOV 23H, AMOV A, 24HRLC AMOV 24H, AMOV A, 26H ;商数左移RLC AMOV 26H, AMOV A, 27HRLC AMOV 27H, AMOV A, 28HRLC AMOV 28H, ACLR CMOV A, 23H ;判断SUBB A, R4MOV R1, AMOV A, 24HSUBB A, R5MOV R2, AINC 26HMOV A, R1 ;建立余数MOV 23H, AMOV A, R2MOV 24H, ALOOP1: DJNZ R7, CHU7RET;____________________________________________________________________ _________;Name: CHU8;Func: 四字节除双字节商为二字节除法子程序;Input: 被除数放在R3R2R1R0,除数放在R5R4,R7为被除数扩充位;OutPut:商数放在R1R0中,余数放在R3R2;____________________________________________________________________ _________DATA1 EQU 00H ;被除数最低字节DATA2 EQU 00H ;被除数低字节DATA3 EQU 00H ;被除数低字节DATA4 EQU 0FFH ;被除数最高字节DATB1 EQU 00H ;除数低字节DATB2 EQU 0FFH ;除数高字节ORG 2000HAJMP MAINMAIN: MOV R0, #DATA1MOV R1, #DATA2MOV R2, #DATA3MOV R3, #DATA4MOV R4, #DATB1MOV R5, #DATB2ACALL CHV8SJMP $CHV8: MOV R7, HLOOP3: CLR CMOV A, R0 ;被除数左移ADD A, R0MOV R0, AMOV A, R1ADDC A, R1MOV R1, AADDC A, R2MOV R2, AMOV A, R3ADDC A, R3MOV R3, AJC LOOP1MOV A, R2 ;高位被除数减除数SUBB A, R4MOV R2, AMOV A, R3SUBB A, R5MOV R3, AJNC C, LOOP2MOV A, R2 ;恢复被除数ADD A, R4MOV R2, AMOV A, R3ADDC A, R5MOV R3, ADJNZ R7, LOOP3RETLOOP1: CLR CMOV A, R2SUBB A, R4MOV R2, AMOV A, R3SUBB A, R5MOV R3, ALOOP2: INC R0DJNZ R7, LOOP3RET;____________________________________________________________________ _________;Name: CHU9;Func: 三字节或二字节的倒数结果为三字节除法子程序;Input: 待求倒数的数,即除数放在内部RAM26H-28H单元,被除数均为1放在20H 单元.;OutPut:结果即商的小数清确小数点后三字节,放在23H--25H单元;Use: 使用21H--24H,60H--62H单元为工作寄存器;____________________________________________________________________ _________ORG 2000HAJMP MAINMAIN: MOV 20H, HMOV 21H, HMOV 22H, HMOV 23H, HMOV 24H, HMOV 25H, HMOV 26H, HMOV 27H, HMOV 28H, HMOV 60H, HMOV 61H, HMOV 62H, HMOV R7, HACALL CHU9LOOP: SJMP LOOPCHU9: CLR CLOOP4: MOV A, 20H ;被除数及扩充位左移RLC AMOV 20H, AMOV A, 21HRLC AMOV 21H, AMOV A, 22HRLC AMOV 22H, AMOV A, 23HRLC AMOV 23H, AMOV A, 24HRLC AMOV 24H, AMOV A, 25HRLC AMOV 25H, AJNC LOOP1 ;判断扩充MOV A, 23HSUBB A, 26H ;位减MOV 23H, A ;除数MOV A, 24HMOV 24H, AMOV A, 25HSUBB A, 28HMOV 25H, AMOV A, 23H ;商加1ADD A, HMOV 23H, AMOV A, 24HADDC A, HMOV 24H, AMOV A, 25HADDC A, HMOV 25H, ASETB CSJMP LOOP2LOOP1: MOV A, 23H ;扩充位减除数SUBB A, 26HMOV 23H, AMOV A, 24HSUBB A, 27HMOV 24H, AMOV A, 25HSUBB A, 28HMOV 25H, AJNC LOOP3MOV A, 23H ;恢复除数MOV 23H, AMOV A, 24HADDC A, 27HMOV 24H, AMOV A, 25HADDC A, 28HMOV 25H, ALOOP3: CPL CLOOP2: DJNZ R7, LOOP4;MOV A, 20HXCH A, 23HMOV 20H, AMOV A, 21HSXCH A, 24HMOV 21H, AMOV A, 22HMOV 22H, AMOV A, 23HADDC A, 23HMOV 23H, AMOV A, 24HADDC A, 24HMOV 24H, AMOV A, 25HADDC A, 25MOV 25H, AMOV 60H, 23HMOV 61H, 24HMOV 62H, 25HMOV A, 20HXCH A, 23HMOV 20H, AMOV A, 21HXCH A, 24HMOV 21H, AMOV A, 22HXCH A, 25HMOV 22H, ACLR ACLR CMOV 20H, HMOV 21H, HMOV 22H, HMOV R7, H LOOP8: MOV A, 20H RLC AMOV 20H, AMOV A, 21HRLC AMOV 21H, AMOV A, 22HRLC AMOV 22H, AMOV A, 23HRLC AMOV 23H, AMOV A,24HRLC AMOV 24H, AMOV A, 25HRLC AMOV 25H, AJNC LOOP5MOV A, 23HSUBB A, 26HMOV 23H, AMOV A, 24HSUBB A, 27HMOV 24H, AMOV A, 25HSUBB A, 28HMOV 25H, AMOV A, 23HADD A, HMOV 23H, AMOV A, 24HADDC A, HMOV 24H, AMOV A, 25HADDC A, HMOV 25H, ASETB CSJMP LOOP6LOP5: MOV A, 23H SUBB A, 26HMOV 23H, AMOV A, 24HSUBB A, 27HMOV 24H, AMOV A, 25HSUBB A, 28HMOV 25H, AJNC LOOP7MOV A, 23HADD A, 26HMOV 23H, AMOV A, 24HADDC A, 27HMOV 24H, AMOV A, 25HADDC A, 28HMOV 25H, ALOOP7: CPL CLOOP6: DJNZ R7, LOOP8MOV A, 20HXCH A, 23HMOV 20H, AMOV A, 21HXCH A, 24HXCH A, 24HMOV 21H, AMOV A, 22HXCH A, 25HMOV 22H, AMOV A, 23HADDC A, 23HMOV 23H, AMOV A, 24HADDC A, 24HMOV 24H, AMOV A, 25HADDC A, 25HMOV 25H, AMOV 20H, 60HMOV 21H, 61HMOV 22H, 62HRET;____________________________________________________________________ _________;Name: CHU10;Func: 带符号双字节除单字节除法子程序;Input: 被除数放在R1R0中,除数放在R4中.移位计数器放在R7中;OutPut:商数放在R0,余数放在R1中;Use: 使用内部RAM60H--62H单元存放被除数,除数和商的符号位;____________________________________________________________________ _________DATA1 EQU 40H ; 被除数低字节DATA2 EQU 00H ; 被除数高字节DATB EQU 0F8H ; 除数ORG 2000HAJMP MAINMAIN: MOV R0, #DATA1MOV R1, #DATA2MOV R4, #DATBMOV R7, HACALL CHU10 LOOP: SJMP LOOP CHU10: MOV A, R4 JZ A, LOOP1MOV A, R1RLC AMOV 60H, CMOV A, R4RLC AMOV 61H, CANL C, 60HJC C, LOOP2MOV C, 60HORL C, 61HSJMP LOOP3LOOP2: CPL CLOOP3: MOV 62H, C MOV A, R4JB ACC.7, LOOP4 LOOP9: MOV A, R1 JB ACC.7 LOOP5 LOOP7: ACALL CHU4JB 62H, LOOP6 LOOP8: CLR ARETLOOP4: MOV A, R4 CPL AADD A, HMOV R4, ASJMP LOOP9LOOP5: MOV A, R0 CPL AADD A, HMOV R0, AMOV A, R1CPL AADDC A, HMOV R1, ASJMP LOOP7LOOP6: MOV A, R0CPL AADD A, HMOV R0, ASJMP LOOP8LOOP1: MOV A, FFHRET;____________________________________________________________________ _________;Name: SQRT;Func: 双字节平方根子程序;Input: 待开平方根放在R1R0中;OutPut:平方根放在R3R2中;Use:;____________________________________________________________________ _________ORG 2000HAJMP LOOP0LOOP0: SJMP LOOPSQRT: CLR AMOV R2, AMOV R3, ASETB CLOOP: MOV A, R0SUBB A, R2MOV R0, AMOV A, R1SUBB A, R3MOV R1, AJC C, LOOP2MOV A, R0SWUBB A, R2MOV R0, AMOV A, R1SUBB A, R3MOV R1, AJC C, LOOP2MOV A, R2ADD A, HMOV R2, AMOV A, R3ADDC A, HMOV R3, ASJMP LOOP1LOOP2: RET;____________________________________________________________________ _______;Name: BCDAD1;Func: 单字节BCD码加法子程序;Input: R0指向两个加数的首地址;OutPut: 和数为双字节,放在加数后的地址单元中;Use:;____________________________________________________________________ _________20H EQU 99H21H EQU 99H22H DEFB 02HORG 2000HAJMP MAINMAIN: MOV R0, HACALL BCDAD1LOOP: SJMP LOOPBCDAD1: CLR CMOV A, @R0INC R0ADD A, @R0DA AINC R0MOV @R0, ARLC AANL A, HINC R0MOV @R0, ARET;____________________________________________________________________ _______;Name: BCDAD2;Func: 四字节BCD码加法子程序;Input: 被加数首地址由R0指向内部RAM20H单元,加法首地址由R1指向内部RAM24H单元;OutPut: 和数放在内20H---24H单元中;Use:。