作业习题 寻址方式和指令.docx
- 文档编号:14262812
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:14
- 大小:31.05KB
作业习题 寻址方式和指令.docx
《作业习题 寻址方式和指令.docx》由会员分享,可在线阅读,更多相关《作业习题 寻址方式和指令.docx(14页珍藏版)》请在冰点文库上搜索。
作业习题寻址方式和指令
寻址方式和指令习题
一、选择题
1、MOVXA,@DPTR指令中源操作数的寻址方式是()
(A) 寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址
2、ORG0003H
LJMP2000H
ORG000BH
LJMP3000H
当CPU响应外部中断0后,PC的值是()
(A) 0003H(B)2000H(C)000BH(D)3000H
3、执行PUSHACC指令,MCS-51完成的操作是()
(A)SP+1SP(ACC)(SP)(B)(ACC)(SP)SP-1SP
(C)SP-1SP(ACC)(SP)(D)(ACC)(SP)SP+1SP
4、LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=()
(A)2000H(B)2001H(C)2002H(D)2003H
5、51执行完MOVA,#08H后,PSW的哪一位被置位()
(A)C(B)F0(C)OV(D)P
6、下面条指令将MCS-51的工作寄存器置成3区()
(A)MOVPSW,#13H(B)MOVPSW,#18H
(C) SETBPSW.4CLRPSW.3(D)SETBPSW.3CLRPSW.4
7、执行MOVXA,@DPTR指令时,MCS-51产生的控制信号是()
(A)/PSEN(B)ALE(C)/RD(D)/WR
8、MOVC,#00H的寻址方式是()
(A) 位寻址(B)直接寻址(C)立即寻址(D)寄存器寻址
9、ORG0000H
AJMP0040H
ORG0040H
MOVSP,#00H
当执行完上面的程序后,PC的值是()
(A) 0040H(B)0041H(C)0042H(D)0043H
10、对程序存储器的读操作,只能使用()
(A) MOV指令(B)PUSH指令(C)MOVX指令(D)MOVC指令
二、判断题
1、MCS-51的相对转移指令最大负跳距是127B。
()
2、当MCS-51上电复位时,堆栈指针SP=00H。
()
3、调用子程序指令(如:
LCALL)及返回指令(如:
RET)与堆栈有关但与PC无关。
()
下面几条指令是否正确:
4、MOV@R1,#80H()
5、INCDPTR()
6、CLRR0()
7、MOV@R1,#80H()
8、ANLR1,#0FH()
9、ADDCA,C()
10、XORP1,#31H()
三、问答题
1简述MCS-51汇编语言指令格式。
2MCS-51指令系统主要有哪几种寻址方式?
试举例说明。
3对访问内部RAM和外部RAM,各应采用哪些寻址方式?
4设内部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,问执行下列指令后,各有关存储单元(即R0,R1,A,B,P1,30H,40H及5AH单元)的内容如何?
5SJMP(短转移)指令和AJMP(绝对转移)指令的主要区别。
四、编程题
1编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。
2片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256)。
3编一个程序,将累加器中的一个字符从串行接口发送出去。
4用查表法编一子程序,将R3中的BCD码转换成ASCII码。
5片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中。
6编一子程序,从串行接口接受一个字符。
7利用调用子程序的方法,进行两个多字节无符号数相加。
请编主程序及子程序。
8若有一数据块是有符号数,求正数个数。
编程并注释。
9编制一个循环闪烁灯的程序。
有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。
画出电路图。
答案
一、选择题
1、MOVXA,@DPTR指令中源操作数的寻址方式是(B)
(A) 寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址
2. ORG0003H
LJMP2000H
ORG000BH
LJMP3000H
当CPU响应外部中断0后,PC的值是(B)
(A) 0003H(B)2000H(C)000BH(D)3000H
3. 执行PUSHACC指令,MCS-51完成的操作是(A)
(A)
SP+1SP(ACC)(SP)(B)(ACC)(SP)SP-1SP
(C)SP-1SP(ACC)(SP)(D)(ACC)(SP)SP+1SP
4、 LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=(D)
(A) 2000H(B)2001H(C)2002H(D)2003H
5、51执行完MOVA,#08H后,PSW的哪一位被置位?
(D)
(A)C(B)F0(C)OV(D)P
6、下面哪条指令将MCS-51的工作寄存器置成3区(B)
(A)MOVPSW,#13H(B)MOVPSW,#18H
(C)SETBPSW.4CLRPSW.3(D)SETBPSW.3CLRPSW.4
7、执行MOVXA,@DPTR指令时,MCS-51产生的控制信号是(C)
(A) /PSEN(B)ALE(C)/RD(D)/WR
8、MOVC,#00H的寻址方式是(A)
(A) 位寻址(B)直接寻址(C)立即寻址(D)寄存器寻址
9、ORG0000H
AJMP0040H
ORG0040H
MOVSP,#00H
当执行完上边的程序后,PC的值是(D)
(A) 0040H(B)0041H(C)0042H(D)0043H
10、对程序存储器的读操作,只能使用(D)
(A) MOV指令(B)PUSH指令(C)MOVX指令(D)MOVC指令
二、判断题。
1、MCS-51的相对转移指令最大负跳距是127B。
(错)-128B
2、当MCS-51上电复位时,堆栈指针SP=00H。
(错)(SP=07H)
3、调用子程序指令(如LCALL)及返回指令(如RET)与堆栈有关但与PC无关。
(错)子序的转返与PC也有关(PC入栈与出栈)
4、MOV@R1,80H(对)
5、INCDPTR(对)
6、CLRR0(错)指令系统中没有。
7、MOV@R1,#80H(对)
8、ANLR1,#0FH(错)A或direct
9、ADDCA,C(错)字节、位
10、XORP1,#31H(对)
三、简答题
1简述MCS-51汇编语言指令格式。
答:
MCS-51汇编语言格式如下:
[标号:
]操作码助记符[操作数1][,操作数2][,操作数3][;注释]
标号是用户定义的符号,其值代表这条指令的地址。
操作码助记符是指令系统规定的代表特定指令功能的英文缩写符。
每条指令都有操作码记符。
指令的操作数最多有3个,也有无操作数的指令。
注释字段是用户对程序的说明,便于对程序的阅读和理解。
2MCS-51指令系统主要有哪几种寻址方式?
试举例说明。
答:
MCS-51指令操作数主要有以下7种寻址方式:
寻址方式举例
立即寻址MOVA,#16
直接寻址MOV20H,P1
寄存器寻址MOVA,R0
寄存器间接寻址MOVXA,@DPTR
变址寻址MOVCA,@A+DPRT
相对寻址SJMPLOOP
位寻址ANLC,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单元)的内容如何?
MOVR0,#30H;R0=30H
MOVA,@R0;A=5AH
MOVR1,A;R1=5AH
MOVB,R1;B=5AH
MOV@R1,P1;(5AH)=7FH
MOVA,P1;A=7FH
MOV40H,#20H;(40H)=20H
MOV30H,40H;(30H)=20H
解:
每一条指令执行后的结果如注释字段所标。
最后结果为:
R0=30H,R1=5AH,A=7FH,B=5AH,P1=7FH,(30H)=20H,(40H)=20H,(5AH)=7FH。
5SJMP(短转移)指令和AJMP(绝对转移)指令的主要区别。
前者提供了以SJMP的下一条指令的起始地址为中心的256字节范围的转移(-128~+127),
后者的转移目标地址必须在与AJMP的下一条指令的第一字节相同的2KB区的程序储存器中。
短转移SJMP方便PC可重定位编码,但转移范围小。
而ASJMP转移范围大,但存在跳区的限制,AJMP指令只有位于2KB区的最后2个字节处时,才可跳到下一个区去。
因此用AJMP指令来代替SJMP指令是有条件的,也就是目标地址必须与它下面的指令存放地址在同一个2KB区域内。
四、编程题
1编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。
解:
STRAT:
MOVR0,#30H
MOVR7,#0FH;循环次数,用#15更直观
MOVDPTR,#3000H
LOOP:
MOVA,@R0
MOVX@DPTR,A
INCR0
INCDPTR
DJNZR7,LOOP
RET
2片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256).
解 ADD10:
MOVR0,#30H
MOVR7,#9;循环次数
MOVA,@R0
LOOP:
INCR0
ADDA,@R0
DJNZR7,LOOP
MOV30H,A
RET
3编一个程序,将累加器中的一个字符从串行接口发送出去.
解SOUT:
MOVSCON,#40H;设置串行接口为工作方式1,8位传送
MOVTMOD,#20H;定时器T1工作于模式2,作波特率发生器
MOVTL1,#0E8H;;设置波特率为1200b/s
MOVTH1,#0E8H
SETBTR1
MOVSBUF,A
JNBTI,$
CLBTI
RET
4用查表法编一子程序,将R3中的BCD码转换成ASCII码.
解 MAIN:
MOVA,R3;待转换的数送A
MOVDPTR,#TAR;表首地址送DPTR
MOVCA,@A+DPTR;查ASCII码表
MOVR3,A;查表结果送R3
RET
TAR:
DB30H,31H,32H,33H,34H
DB35H,36H,37H,38H,39H
5片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中.
解START:
MOVR0,#40H;数据块首地址送R0
MOVR7,#09H;比较次数送R7
MOVA,@R0;取数送A
LOOP:
INCR0
MOV30H,@R0;取数送30H
CJNEA,30H,NEHT;(A)与(30H)相比
NEXT:
JNCBIE1(A)≥(30H)转BIE1
MOVA,30H;(A)<(30H),大数送A
BIE1:
DJNZR7,LOOP;比较次数减1,不为0,继续比较
MOV50H,A;比较结束,大数送50H
RET
6编一子程序,从串行接口接受一个字符.
解:
START:
MOVTMOD,#20H;定时器T1工作于模式2,作波特率发生器
MOVTH1,#0E8H;设置波特率为1200b/s
MOVTL1,#0E8H
SETBTR1;启动T1
MOVSCON,#50H;串行接口工作于方式1,8位传送,置位REN,开始接收
L1:
JNBRI,L1;等待接收数据,末接收到数据,继续等待
CLRRI;接收到数据,清RI
MOVA,SBUF;接收到数据送A
RET
7利用调子程序的方法,进行两个多字节无符号数相加。
请编主程序及子程序。
解:
用R0和R1作数据指针,R0指向第一个加数,并兼作“和”的指针,R1指向另一个加数,字节数存放到R2中作循环初值。
主程序:
JAFA:
MOVR0,#20H;指向加数最低字节
MOVR1,#29H;指向另一加数最低字节
MOVR2,#04H;字节数作计数值
ACALLJASUB;调用加法子程序
SJMP$
多字节加法子程序:
JASUB:
CLRC
JASUB1:
MOVA,@R0;取出加数的一个字节(4B无符号数)
ADDCA,@R1;加上另一数的一个字节
MOV@R0,A;保存和数
INCR0;指向加数的高位
INCR1;指向另一加数的高位
DJNZR2,JASUB1;全部加完了吗?
RET
8若片外RAM0001H起有数据块,是有符号数,其个数在0000H单元,求正数个数,编程并注释。
解ORG0030H
START:
MOV20H,#00H;计正数个数计数器
MOVDPTR,#0000H;
MOVXA,@DPTR;数据块长度→10H
MOV10H,A
INCDPTR;DPTR指向第一个数的地址
TWO:
MOVXA,@DPTR;取数→A
JZONE
JBACC.7,ONE;是负数转ONE,准备取下一个数
INC20H;是正数,正数计数器加1
ONE:
INCDPTR;地址指针加1
DJNZ10H,TWO;判断循环是否结束
RET
9编制一个循环闪烁灯的程序。
有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。
画出电路图。
解
P1.0
8013
P1.7
D0Q0
74LS240
D7Q7
5V
本程序的硬件连接如图所示。
当P1.0输出低电平时,LED灯亮,否则不亮。
其程序如下:
MOVA,#7FH;灯亮初值
SHIFT:
LCAILFLASH;调闪亮10次子程序
RRA;右移一位
SJMPSHIFT;循环
FLASH:
MOVR2,#0AH闪烁10次计数
FLASH1:
MOVP1,A;点亮
LCALLDELAY;延时
MOVP1,#0FFH;熄灭
LCALLDELAY;延时
DJNZR2,FLASH1;循环
RET
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 作业习题 寻址方式和指令 作业 习题 寻址 方式 指令
![提示](https://static.bingdoc.com/images/bang_tan.gif)