您的当前位置:首页正文

16进制转换程序

2024-01-18 来源:钮旅网
ORG 0000H

MAIN: MOV SP,#60H ;设置堆栈

CLR A ;为缓存器初始化做准备

MOV 41H,A ;41H、42H、43H为十进制缓冲单元 MOV 42H,A MOV 43H,A

MOV 30H,#0ffh ;44H、45H为十六进制缓冲单元 MOV 31H,#23h

START:LCALL H_BCD ;调用十六进制-十进制转换子程序 MOV 30h,#0FFH MOV 31H,#23H

LCALL DISP lJMP START

H_BCD:PUSH PSW MOV R1,#41H MOV R5,#03H CLR A LP1: MOV @R1,A INC R1

DJNZ R5,LP1 MOV R7,#10H LP2: MOV R0,#30H MOV R6,#02H CLR C

LP3: MOV A,@R0 RLC A

MOV @R0,A INC R0

DJNZ R6,LP3 MOV R1,#41H MOV R5,#03H NOP

LP4: MOV A,@R1 ADDC A,@R1

DA A MOV @R1,A INC R1

DJNZ R5,LP4 DJNZ R7,LP2 POP PsW RET

;显示子程序

DISP: MOV R0,#3aH mov R4,#04

;调用显示子程序 ;保护现场数据 ;十进制单元低位

;准备对41H、42H、43H清零 ;BCD码初始化

;对41H、42H、43H清零 ;转换双字节十六进制整数 ;从高端移出待转换数的一位到CY中 ;BCD码带进位自身相加,相当于乘2 ;十进制调整

;转换结果放在41H、42H、43H单元 ;恢复现场 ;显示缓冲器单元首址 MOV A,41H ;对十进制单元数据进行拆分 LCALL PTDS MOV A,42H

LCALL PTDS ;就本任务本身43H单元为0,显示省略 MOV R0,#3AH ;显示缓冲器单元首址(指向个位) MOV R2,#00H ;延时时间参数

MOV R3,#0FEH ;初始字位码(指向个位) MOV DPTR,#LEB ;显示字形码表格首址 LOP1:MOV P2,#0FFH ;关显示器 MOV A,@R0 ;取字形

MOVC A,@A+DPTR ;查表取字形码 MOV P1,A ;送字形码到字形口 MOV P2,R3

WAIT: DJNZ r2,wait ;延时

INC R0 ;修改显示缓冲区单元地址 MOV A,R3

RLC A ;修改显示位 MOV R3,A ;取字形 dJNz R4,LOP1 ;四位显示完了吗? RET

LEB: DB 0C0H,0F9H ;0、1的字形码 DB 0A4H,0B0H ;2、3的字形码 DB 99H,92H,82H ;4、5、6的字形码 DB 0F8H, 80H,90H ;7、8、9的字形码 ;拆分子程序

PTDS: MOV R1,A ;暂存A,准备处理低半字节 LCALL PTDS1 ;调用子程序

MOV A,R1 ;准备处理高半字节 SWAP A ;高低半字节交换 PTDS1: ANL A,#0FH ;保留低半字节 MOV @R0,A

INC R0 RET END

因篇幅问题不能全部显示,请点此查看更多更全内容