用汇编语言和C51语言实现将十进制数拆为三个BCD码,并存入30会开始的三个单元
时间: 2024-05-24 13:10:36 浏览: 156
汇编语言实现:
MOV A, #123 ;将十进制数123存入累加器A
DIV AB, #100 ;将A除以100,商存入B,余数存入A
MOV R0, A ;将余数存入R0
MOV A, B ;将商存入累加器A
DIV AB, #10 ;将A除以10,商存入B,余数存入A
MOV R1, A ;将余数存入R1
MOV R2, B ;将商存入R2
MOV DPTR, #0030H ;将数据存储地址指向0030H
MOV A, R0 ;将余数存入累加器A
ADD A, #30H ;将余数转换成ASCII码
MOVX @DPTR, A ;将ASCII码存入指针所指向的内存单元
INC DPTR ;指针地址加1
MOV A, R1 ;将余数存入累加器A
ADD A, #30H ;将余数转换成ASCII码
MOVX @DPTR, A ;将ASCII码存入指针所指向的内存单元
INC DPTR ;指针地址加1
MOV A, R2 ;将商存入累加器A
ADD A, #30H ;将商转换成ASCII码
MOVX @DPTR, A ;将ASCII码存入指针所指向的内存单元
C51语言实现:
unsigned int num = 123; //将十进制数123存入变量num
unsigned char bcd1, bcd2, bcd3; //定义三个存储BCD码的变量
bcd1 = num / 100; //将num除以100,商存入bcd1
num = num % 100; //将num对100取余,余数存入num
bcd2 = num / 10; //将num除以10,商存入bcd2
bcd3 = num % 10; //将num对10取余,余数存入bcd3
unsigned char *ptr = 0x0030; //将数据存储地址指向0030H
*ptr++ = bcd1 + 0x30; //将bcd1转换成ASCII码后存入指针所指向的内存单元
*ptr++ = bcd2 + 0x30; //将bcd2转换成ASCII码后存入指针所指向的内存单元
*ptr = bcd3 + 0x30; //将bcd3转换成ASCII码后存入指针所指向的内存单元
阅读全文