早教吧 育儿知识 作业答案 考试题库 百科 知识分享

新手学习单片机的疑问,关于dptr和keil的memoryC:0x0000与D:0x0000的区别做实验时用keiluvision4做模拟at89c51的实验,二进制数转化为ascii码的实验,程序如下RESULTEQU30HORG00HSTART:MOVA,#1AHCALLBINTOHEXLJMP$B

题目详情
新手学习单片机的疑问,关于dptr和keil的memory C:0x0000与D:0x0000的区别
做实验时用keil uvision4做模拟at89c51的实验,二进制数转化为ascii码的实验,程序如下
RESULT EQU 30H
ORG 00H
START:
MOV A,#1AH
CALL BINTOHEX
LJMP $
BINTOHEX:
MOV DPTR,#ASCIIAB
MOV B,A
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV RESULT,A
MOV A,B
ANL A,#0FH
MOVC A,@A+DPTR
MOV RESULT+1,A
RET
ASCIIAB:DB '0123456789ABCDEF'
END
关于"MOV DPTR,#ASCIIAB"是干什么的,dptr具体是怎么回事啊,怎么查表的,还有就是关于memory的 C:0x0000与D:0x0000的区别,求懂得的回答,本人新手,这学期才开始学习单片机,
▼优质解答
答案和解析
MOV DPTR,#ASCIIAB 作用是是获取 ASCIIAB: DB '0123456789ABCDEF' 这个表格在程序中的首地址,也就是‘0’的地址;
DPTR 是51单片机里面的数据指针;
MOVC A,@A+DPTR 这句指令就实现了查表,表格的首地址在DPTR里面,偏移地址在A里面,A+DPTR就是数据地址了,这就是查表;
C:0x0000 指的是code 的起始地址,也就是ROM,程序存储器的起始地址;
D:0x0000 指的是data 的起始地址,也就是RAM,数据存储器的起始地址;