第四章作业
4.2 试说明为什么xdata型的指针长度要用两个字节?
答:因为xdata是外部数据存储器,最大可有64KB的存储单元,xdata指针式表示外部数据存储单元的地址,要表示64KB个单元地址。所以必须用2个字节,共16位表示。
4.4 编程将8XX51的内部数据存储器20H单元和35H单元的数据相乘,结果存到外部数据存储器中(位置不固定).
#include
{char data *p1,*p2; xdata int a; p1=0x20; p2=0x3;
a=*p1*(*p2); }
4.6 8051的片内数据存储器25H单元中放有一个0~10的整数,编程求其平方根(精确到五位有效数字,将平方根放到30H单元为首地址的内存。
#include
*p2=sqrt(*p1); }
4.8 将外部ram的10H~15H单元的内容传送到内部RAM的10H~15H单元。
#include
{char pdata *m; char data *n; p2=0;
for(m=0x10;m<=0x15;m++) {n=m;*n=*m;} }
4.10 将内部RAM21H单元的内容存放的BCD码数转换为二进制存入30H为首地址的单元,BCD嘛的长度存放到20H单元中。
main() {
int data a=0,*p3; char i,*p1,*p2; p1=0x20; p2=ox21; p3=0x30;
for(i=0;i<*p1;i++){ a=a*10+*p2; p2++; }
*p3=a; }