例程2:在内部RAM的40H单元中存放一个8位二进制数,要求将其转换成相应的BCD码,并由高位到低位的顺序存入内部RAM以60H为首址的三个连续单元中。
汇编源代码:
ORG 0000H
LJMP START
ORG 1000H
START: MOV R0,#60H ;设置存数指针初值
MOV A,40H ;取被转换的二进制数
MOV B,#100 ;置除数100
DIV AB ;除以100,求百位数
MOV @R0,A ;将百位数送指定单元
INC R0 ;修改指针
MOV A,#10 ;置除数为10
XCH A,B ;交换被除数和除数
DIV AB ;求十位数
MOV @R0,A ;将十位数送指定单元
INC R0 ;修改指针
XCH A,B ;A中为个位数
MOV @R0,A ;将个位数送指定单元
END
C51源代码:
#include<stdio.h>
int main()
{
unsigned char *p=0x40;
unsigned char *a[]={0x60,0x61,0x62};
unsigned char x,y,z;
x=*p;
y=*p;
z=*p;
x=(x/100);
y=(y%100)/10;
z=(z%100)%10;
*a[0]=x;
*a[1]=y;
*a[2]=z;
}
文章评论(0条评论)
登录后参与讨论