微机原理与接口技术第三章试题及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章
3-1选择题
1、MOVX A,@DPTR指令中源操作数的寻址方式是(B)
(A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址2.ORG 0003H
LJMP 2000H
ORG 000BH
LJMP 3000H 当CPU响应外部中断0后,PC的值是(B)
(A)0003H (B)2000H (C)000BH (D)3000H
3.执行PUSH ACC指令,MCS-51完成的操作是(A)
(A)SP+1 SP (ACC)(SP)(B)(ACC)(SP)SP-1 SP
(B)(C)SP-1 SP (ACC)(SP) (D)(ACC)(SP)SP+1 SP
4、LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=(D)
(C)2000H (B)2001H (C)2002H (D)2003H
5、51执行完MOV A,#08H后,PSW的一位被置位(D)
(A)(A)C (B)F0 (C)OV (D)P
6、下面条指令将MCS-51的工作寄存器置成3区(B)
(A)MOV PSW,#13H (B)MOV PSW,#18H
(B)SETB PSW.4 CLR PSW.3 (d) SETB PSW.3 CLR PSW.4
7、执行MOVX A,DPTR指令时,MCS-51产生的控制信号是(C)
(D)/PSEN (B)ALE (C)/RD (D)/WR
8、MOV C,#00H的寻址方式是(A)
(A)位寻址(B)直接寻址(C)立即寻址(D)寄存器寻址
9、ORG 0000H
AJMP 0040H
ORG 0040H
MOV SP,#00H当执行完左边的程序后,PC的值是(C)
(A)0040H (B)0041H (C)0042H (D)0043H
10、对程序存储器的读操作,只能使用(D)
(A)MOV指令(B)PUSH指令(C)MOVX指令(D)MOVC指令
3-2判断题。

4.MCS-51的相对转移指令最大负跳距是127B。

(错)128B
5.当MCS-51上电复位时,堆栈指针SP=00H。

(SP=07H)(错)
6.调用子程序指令(如:CALL)及返回指令(如:RET)与堆栈有关但与PC无关。

(错)子序的转返与PC也有关(PC入栈与出栈)
7.MOV @R1,#80H (错)
5、INC DPTR (对)
6、CLR R0 (错)指令系统中没有。

7、MOV @R1,#80H (对)
8、ANL R1,#0FH (错)
9、ADDC A,C (错)
10、XOR P1,#31H (对)
3-3简答题
1 简述MCS-51汇编语言指令格式。

答:MCS-51汇编语言格式如下:
[标号:]操作码助记符[操作数1] [操作数2] [操作数3][注释]标号是用户定义的符号,其值代表这条指令的地址。

操作码助记符是指令系统规定的代表特定指令功能的英文缩写符。

每条指令都有操作码记符。

指令的操作数最多有3个,也有无操作数的指令。

注释字段是用户对程序的说明,便于对程序的阅读和理解。

简答
2 MCS-51指令系统主要有哪几种寻址方式?试举例说明。

答:MCS-51指令操作数主要有以下7种寻址方式:
寻址方式举例
立即寻址MOV A,#16
直接寻址MOV 20H,P1
寄存器寻址MOV A,R0
寄存器间接寻址MOVX A, @DPTR
变址寻址MOVC A, @A+DPRT
相对寻址SJMP LOOP
位寻址ANL C,70H
3对访问内部RAM和外部RAM,各应采用哪些寻址方式?
答:对内部RAM的寻址方式有直接寻址、寄存器间接寻址和可对位寻址的位寻址。

对外部RAM的寻址方式只能用寄存器R0/R1(8位地址)或DPTR(16位地址)间接寻址。

4设内部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,问执行下列指令后,各有关存储单元(即R0,R1,A,B,P1,30H,40H及5AH单元)的内容如何?
MOV R0,#30H ;R0=30H
MOV A,@R0 ;A=5AH
MOV R1,A ;R1=5AH
MOV B,R1 ;B=5AH
MOV @R1,P1 ;(5AH)=7FH
MOV A,P1 ;A=7FH
MOV 40H,#20H ;(40H)=20H
MOV 30H,40H ;(30H)=20H
解:每一条指令执行后的结果如注释字段所标。

最后结果为:R0=30H,R1=5AH,A=7FH,B=5AH,P1=7FH,(30H)=20H,(40H)=20H,(5AH)=7FH。

5 SJMP(短转移)指令和AJMP(绝对转移)指令的主要区别。

前者提供了以SJMP的下一条指令的起始地址为中心的256字节范围的转移(-128~+127),后者的转移目标地址必须在与AJMP的下一条指令的第一字节相同的2KB区的程序储存器中。

短转移方便了可重定位编码。

SJMP方便了PC可重定位编码,但转移范围小。

而ASJMP转移范围大,但存在跳区的限制,AJMP指令只能位于2KB区的最后2个字节处时,才可跳到下一个区去。

因此用AJMP指令来代替SJMP指令是有条件的,也就是目标地
址必须与它下面的指令存放地址在同一个2KB区域内。

3-4编程题
1 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。

解:STRAT:MOV R0,#30H
MOV R7,#0FH
MOV DPTR,#3000H
LOOP:MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R7,LOOP
RET
2 片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256 ).
解ADDIO:MOV R0,30H
MOV R7,#9
MOV A,@R0
LOOP:INC R0
ADD A,@R0
DJNZ R7,LOOP
MOV 30H,A
RET
3 编一个程序,将累加器中的一个字符从串行接口发送出去.
解SOUT:MOV SCON,#40H ;设置串行接口为工作方式
MOV TMOD,#20H ;定时器T1工作于模式2
MOV TL1,#0E8H; ;设置波特率为1200b/s
MOV TH1,#0E8H
SETB TR1
MOV SBUF,A
JNB T1,$
CLB T1
RET
4 用查表法编一子程序,将R3中的BCD码转换成ASCII码.
解MAIN: MOV A,R3 ;待转换的数送A
MOV DPTR,#TAR ;表首地址送DPTR
MOVC A,@A+DPTR ;查ASCII码表
MOV R3,A ;查表结果送R3
RET
TAR DB 30H,31H,32H,33H,34H
DB 35H,36H,37H,38H,39H
5 片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中.
解START: MOV R0,#40H ;数据块首地址送R0
MOV R7,#09H ;比较次数送R7
MOV A,@R0 ;取数送A
LOOP: INC R0
MOV 30H,@R0 ;取数送30H
CJNE A,30H,NEHT ;(A)与(30H)相比
NEXT: JNC BIE1 (A)≥(30H)转BIR1
MOV A,30H ;(A)<(30H),大数送A
BIE1: DJNZ R7,LOOP ;比较次数减1,不为0,继续比较
MOV 50H,A ;比较结束,大数送50H
RET
6 编一子程序,从串行接口接受一个字符.
解:START: MOV TMOD,#20H ;定时器T1工作于模式2
MOV TH1,#0E8H ;设置波特率为1 200b/s
MOV TL1,#0E8H
SETB TR1 ;启动T1
MOV SCON,#50H ;串行接口工作于方式1,充许接收L1: JNB RI,L1 ;等待接收数据,末接收到数据,继续等待CLR RI ;接收到数据,清RI
MOV A,SBUF ;接收到数据送A
RET
7 利用调子程序的方法,进行两个无符号数相加。

请编主程序及子程序。

解用R0和R1作数据指针,R0指向第一个加数,并兼作“和”的指针,R1指向另一个加数,字节存放到R2中作计数初值。

主程序:
JAFA: MOV R0,#20H ;指向加数最低字节
MOV R1,#29H ;指向另一加数最低字节
MOV R2,#04H ;字节数作计数值
ACALL JASUB ;调用加法子程序
AJMP $
RTE
多字节加法子程序:
JASUB: CLR C
JASUB1: MOV A,@R0 ;取出加数的一个字节(4B无符号数加数)
ADDC A,@R1 ;加上另一数的一个字节
MOV @R0,A ;保存和数
INC R0 ;指向加数的高位
INC R1 ;指向另一加数的高位
DJNZ R2,JASUB1 ;全部加完了吗?
RET
8 若图数据块是有符号数,求正数个数,编程并注释。

解ORG 0030H
START: MOV 20H,#00H ;计正数个数计数器
MOV DPTR,#0000H ;
MOVX A,@DPTR ;数据块长度→10H
MOV 10H,A
INC DPTR ;DPTR指向第一个数的地址
TWO: MOVX A,@DPTR ;取数→A
JB ACC.7,ONE ;是负数转ONE,准备取下一个数
INC 20H ;是正数,正数计数器加1
ONE: INC DPTR ;地址指针加1
DJNZ 10H,TW ;数据块长度减1不等于0,继续寻找
RET
9 编制一个循环闪烁灯的程序。

有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。

画出电路图。


本程序的硬件连接如图所示。

当P1.0输出高电平时,LED灯亮,否则不亮。

其程序如下:
MOV A,#01H ;灯亮初值
SHIFT: LCAIL FLASH ;调闪亮10次子程序
RR A ;右移一位
SJMP SHIFT ;循环
FLASH: MOV R2,#0AH 闪烁10次计数
FLASH1; MOV P1,A ;点亮
LCALL DELAY ;延时MOV P1,#00H ;熄灭LCALL DELAY ;延时DJNZ R2,FLASH1 ;循环RET。

相关文档
最新文档