微机原理与接口技术离线作业Word文件下载.docx
《微机原理与接口技术离线作业Word文件下载.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术离线作业Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
![微机原理与接口技术离线作业Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-10/27/8676075f-2630-445d-ae64-803895306d8d/8676075f-2630-445d-ae64-803895306d8d1.gif)
在物理上和逻辑上各有哪几种地址空间?
访问片内数据存储器和片外数据存储器的指令格式有何区别?
答80C51单片机采用哈佛Har-yard结构即将程序存储器和数据存储器截然分开分
别进行寻址。
不仅在片内驻留一定容量的程序存储器和数据存储器及众多的特殊功能寄存
器而且还具有较强的外部存储器扩展能力扩展的程序存储器和数据存储器寻址范围都可
达到64KB。
1.在物理上设有4个存储器空间
片内程序存储器
片外程序存储器
片内数据存储器
片外数据存储器
2.在逻辑上设有3个存储器地址空间
片内、片外统一的64KB程序存储器地址空间
片内256字节(80C52为384字节)数据存储器地址空间
片内数据存储器空间在物理上又包含两部分
对于80C51型单片机0~127字节为片内数据存储器空间;
128~255字节为特殊功
能寄存器SFR空间实际仅占用了20多个字节
对于80C52型单片机0~127字节为片内数据存储器空间;
128~255字节共128
个字节是数据存储器和特殊功能寄存器地址重叠空间。
片外64KB的数据存储器地址空间。
在访问3个不同的逻辑空间时应采用不同形式的指令以产生不同存储空间的选
通信号。
访问片内RAM采用MOV指令访问片外RAM则一定要采用MOVX指令因为
MOVX指令会产生控制信号RD或WR用来访问片外RAM。
访问程序存储器地址空间
则应采用MOVC指令。
6.80C51片内数据存储器低128个存储单元划分为哪4个主要部分?
各部分主要功能是什么?
答80C51片内RAM的低128个存储单元划分为4个主要部分
寄存器区。
共4组寄存器每组8个存储单元各组以R0~R7作为单元编号。
常用于保存操作数及中间结果等。
R0~R7也称为“通用工作寄存器”占用00H~1FH
共32个单元地址。
位寻址区。
单元地址为20H~2FH既可作为一般RAM单元使用按字节进行操作
也可对单元中的每一位进行位操作。
因此称为“位寻址区”。
寻址区共有16个RAM单
共计128位位地址为00H~7FH。
用户RAM区。
在内部RAM低128单元中出去前面两个区剩下80个单元单元
地址为30H~7FH。
在用户RAM区内可以设置堆栈区。
堆栈区及堆栈指示器SP。
其具体功能有两个保护断点和保护现场。
在80C51单片微
机中堆栈在子程序调用和中断时会把断点地址自动进栈和出栈还有对堆栈的进栈和栈
的指令PUSH、POP操作用于保护现场和恢复现场。
第三章P87
9.MOV、MOVC、MOVX指令有什么区别,分别用于那些场合,为什么?
MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等)。
MOVX指令采用间接寻址方式访问外部数据存储器.有Ri和DPTR两种间接寻址方式。
执行MOVX指令时,在P3.7引脚上输出RD有效信号.或在P3.6引脚上输出WR有效信号,可以用做外部数据存储器或I/O的读/写选通信号,与单片机扩展电路有关。
15.已知(R1)=20H,(20H)=AAH,请写出执行完下列程序段后A的内容。
MOVA,#55H
ANLA,#0FFH
ORL20H,A
XRLA,@R1
CPLA
答:
各指令的执行结果如下:
MOVA,#55H;
(A)=55H
ANLA,#0FFH;
ORL20H,A;
(20H)=FFH
XRLA,@R1;
(A)=AAH
CPLA;
执行完程序段后,A的内容为55H
16.阅读下列程序,说明其功能。
MOVR0,#30H
MOVA,@R0
RLA
MOVR1,A
ADDA,R1
MOV@R0,A
17.已知两个十进制数分别从内部数据存储器中的40H单元和50H单元开始存放(低位在前),其字节长度存放在内部数据存储器的30H单元中。
编程实现两个十进制数求和,并把和的结果存放在内部数据存储器40H开始的单元中。
程序如下:
ORG0000H
SJMPMAIN
ORG0030H
MAIN:
MOVR0,#40H
MOVR1,#50H
MOVR2,#30H
CLRC
PP:
MOVA,@R1
ADDCA,@R0
DAA
MOV@R0,A
INCR0
INCR1
DJNZR2,PP
AJMP$
END
21.读程序,请⑴画出P1.0~P1.3引脚上的波形图,并标出电压V-时间T坐标;
⑵加以注释。
ORG0000H
START:
MOVSP,#20H
MOV30H,#01H
MOVP1,#01
MLP0:
ACALLD50ms;
软件延时50mS
MOVA,30H
CJNEA,#08H,MLP1
MOVA,#01H
MOVDPTR,#ITAB
MLP2∶MOV30H,A
MOVCA,@A+DPTR
MOVP1,A
SJMPMLP0
MLP1:
INCA
SJMPMLP2
ITAB:
DB0,1,2,4,8
DB8,4,2,1
D50ms:
…;
延时50ms子程序(略)
RET
第四章P123
6.根据运算结果给出的数据到指定的数据表中查找对应的数据字。
运算结果给出的数据在片内数据存储器的40H单元中,给出的数据大小在00~0FH之间,数据表存放在20H开始的片内程序存储器中。
查表所得数据字(为双字节、高位字节在后)高位字节存于42H、低位字节存于41H单元。
其对应关系为:
给出数据;
000102……0DH0EH0FH
对应数据:
00A0H7DC2HFF09H3456H89ABH5678H
请编制查表程序段,加上必要的伪指令,并加以注释。
AJMPMAIN
MOVA,40H
MOVDPTR,#TAB
RLA
MOV40H,A
MOVCA,@A+DPTR
MOV41H,A
MOVA,40H
INCA
MOV42H,A
SJMP$
ORG0070H
TAB:
DB0A0H,00H,0C2H,7DH,09H,0FFH,...,56H,34H
DB0ABH,89H,78H,56H
10.把长度为10H的字符串从内部数据存储器的输入缓冲区INBUF向设在外部数据存储器的输出缓冲区OUTBUF进行传送,一直进行到遇见回车字符“CR”结束传送或整个字符串传送完毕。
加上必要的伪指令,并对源程序加以注释。
ORG000H
MOVR7,#10H;
数据长度
MOVR0,#INBUF;
源数据首地址
MOVDPTR,#OUTBUF;
目的数据首地址
LOOP:
MOVA,@R0;
把源数据的值赋给A
CJNEA,#0DH,LOOP1;
判是否是字符“CR”
SJMPEND1;
是字符“CR”,则结束传送
LOOP1:
MOVX@DPTR,A;
把A中的源数据赋给目的数据区
INCR0;
源数据地址加1
INCDPTR;
目的数据地址加1
DJNZR7,LOOP;
判断数据是否传送完毕
END1:
SJMPEND1
12.比较两个ASCII码字符串是否相等。
字符串的长度在内部数据存储器的20H单元,第一个字符串的首地址在内部数据存储器的30H中,第二个字符串的首地址在内部数据存储器的50H中。
如果两个字符串相等,则置用户标志F0为0;
否则置用户标志F0为1。
加上必要的伪指令,并加以注释。
(注:
每个ASCII码字符为一个字节,如ASCII码“A”表示为41H)
字符串中每一个字符都可以用一个ASCII码表示。
只要有一个字符不相同,就可以判定字符串不相同。
MOVR0,#30H;
第一个字符串的首地址
MOVR1,#40H;
第二个字符串的首地址
MOVA,@R0;
第一个字符串的字符值赋给A
MOVB,@R1;
第二个字符串的子符值赋给B
CJNEA,B,NEXT;
比较两个字符值,若有不相同则转
DJNZ20H,LOOP;
判字符串是否比较完
CLRF0;
字符串相等,则F0位清零
NEXT:
SETBF0;
字符串不等,则F0位置1
14.80C51单片机从内部数据存储器的31H单元开始存放一组8位带符号数,字节个数在30H中。
请编写程序统计出其中正数、零和负数的数目,并把统计结果分别存入20H、21H和22H三个单元中。
MOV20H,#0;
统计结果存放单元初始值为0
MOV21H,#0
MOV22H,#0
MOVR0,#31H;
数据首地址
MOVA,@R0;
取数据
JBACC.7,INC_NEG;
符号位为1,表示该数为负,跳转加1CJNEA,#0,INC_POS
INC21H;
该数为0,0个数加1
AJMPLOOP1
INC_NEG:
INC22H;
该数为负数,负数个数加1
INC_POS:
INC20H;
该数为正数,正数个数加1
指向下一个数据地址
DJNZ30H,LOOP;
判断统计是否结束
16.将外部数据存储器的2040H单元中的一个字节拆成2个ASCII码,分别存入内部数据存储器40H和41H单元中,试编写以子程序形式给出的转换程序,说明调用该子程序的入口条件和出口功能。
加上必要的伪指令,并加以注释。
子程序的入口条件、出口功能及源代码如下:
子程序入口条件:
准备拆为2个ASCII码,分别存入外部数据存储器的40H
单元中。
子程序出口功能:
拆成2