|
问个51的程序问题 以下是供C调用的汇编程序,功能是向片内20-2F存储空间写入16个数字1-16
NAME HUIBIAN
?PR?FUNC?HUIBIAN SEGMENT CODE
PUBLIC func
RSEG ?PR?FUNC?HUIBIAN
func:
MOV R0,#1
MOV R1,#20H
MOV R2,#16
FUNC1:MOV A,R0
MOV @R1,A
INC R0
INC R1
DJNZ R2,FUNC1
RET
END
以下是C主程序:#include <stdio.h>
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
extern func();
void main()
{
uint i;
uint j;
uchar data *p=(uchar data *)0x20;
SCON = 0x50;
TMOD |= 0x20;
TH1 = 221;
TR1 = 1;
TI = 1;
func();
for(i=0;i<16;i++)
printf("%d",*(p++));
while(1);
}
想在C主程序中输出20-2F中的数据,现在的C程序不能输出正确结果,我想问一下在C中,怎么样输出绝对地址中的内容啊?uchar data *p=(uchar data *)0x20;这句话是把20H的绝对地址赋给指针变量p正确吗?
|
|