第三章指令系统及汇编语言程序设计.docx
- 文档编号:5972099
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:20
- 大小:25.94KB
第三章指令系统及汇编语言程序设计.docx
《第三章指令系统及汇编语言程序设计.docx》由会员分享,可在线阅读,更多相关《第三章指令系统及汇编语言程序设计.docx(20页珍藏版)》请在冰豆网上搜索。
第三章指令系统及汇编语言程序设计
第三章指令系统及汇编语言程序设计
3-1选择题
1、MOVX A,@DPTR指令中源操作数的寻址方式是( B )
(A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址
2、 ORG 0003H
LJMP2000H
ORG000BH
LJMP3000H当CPU响应外部中断0后,PC的值是( B )
(A)0003H(B)2000H(C)000BH(D)3000H
3、LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=( D )
(A)2000H(B)2001H(C)2002H(D)2003H
4、51执行完MOV A,#08H后,PSW的一位被置位( D )
(A)C(B)F0(C)OV(D)P
5、下面条指令将MCS-51的工作寄存器置成3区( B )
(A)MOV PSW,#13H(B)MOV PSW,#18H
(C)SETB PSW.4 CLRPSW.3 (D)SETBPSW.3 CLRPSW.4
6、执行MOVX A,DPTR指令时,MCS-51产生的控制信号是( C )
(A)/PSEN(B)ALE(C)/RD(D)/WR
7、MOVC,#00H的寻址方式是( A )
(A)位寻址(B)直接寻址(C)立即寻址(D)寄存器寻址
8、ORG0000H
AJMP0040H
ORG0040H
MOVSP,#00H
当执行完左边的程序后,PC的值是( C )
(A)0040H(B)0041H(C)0042H(D)0043H
9、对程序存储器的读操作,只能使用( D )
(A)MOV指令(B)PUSH指令(C)MOVX指令(D)MOVC指令
10、MCS-51单片机可分为两个优先级别。
各中断源的优先级别设定是利用寄存器( B )
(A)IE (B)IP (C)TCON (D)SCON
11、在寄存器间接寻址方式中,指定寄存器中存放的是( B )
(A)操作数 (B)操作数地址 (C)转移地址 (D)地址偏移量
12、在MCS—51中,需双向传递信号的是( B )
(A)地址线 (B)数据线 (C)控制线 (D)电源线
13、下列指令中于进位标志位CY无关的指令有( D )
(A)移位指令 (B)位操作指令 (C)十进制调整指令 (D)条件转移指令
14、在程序储存器的读操作,只能使用( D )
(A)MOV指令 (B)PUSH指令 (C)MOVX指令 (D)MOVC指令
15、以下运算中对溢出标志OV没有影响或不受OV影响的运算是( A )
(A)逻辑运算 (B)符号数加减法运算 (C)乘法运算 (D)除法运算
16、指令AJMP的跳转范围是(C)
(A)256B (B)1KB (C)2KB (D)64KB
3-2判断题
1、MCS-51的相对转移指令最大负跳距是127B。
( × )
2、当MCS-51上电复位时,堆栈指针SP=00H。
( × )
3、调用子程序指令(如:
CALL)及返回指令(如:
RET)与堆栈有关但与PC无关。
( × )
4、MOV @R1,#80H。
( √ )
5、INC DPTR ( √ )
6、DEC DPTR ( × )
7、CLR R0 ( × )
8、ANL R1,#0FH ( × )
9、ADDC A,C ( × )
10、XOR P1,#31H ( √ )
11、MOV28H,@R2 ( ×)
12、CLR R0 ( × )
13、CPLR5 ( × )
14、MOV R0,R1 ( ×)
15、PUSH DPTR ( × )
16、PUSH R1 ( × )
17、RLC R0 ( × )
18、DJNZ@R1,32H ( × )
19、寄存器DPTR可拆开成两个独立的寄存器DPH与DPTL使用。
( √ )
3-3填空题
1、JBC bit rel指令是对位bit进行判断,若bit=1则转移,并对该位 清零 。
2、指令POP B的源操作数是 SP ,是 寄存器间接寻址 寻址方式,目的操作数是 B ,是 寄存器寻址 寻址方式。
3、已知SP=25H,PC=4345H,(24H)=12H,(25H)=34H,(26H)=56H,当执行RET指令后,SP= 23H ,PC= 3412H 。
4、指令是由 操作码 和 操作数 构成。
5、MCS-51单片机有立即数寻址 、 直接寻址、 寄存器寻址、 寄存器间接寻址、 变址寻址 、 相对寻址、 位寻址七种寻址方式。
6、MOVC A,@A+DPTR第二操作数采用是 变址 寻址方式
7、执行ANLP1,# 0F H后,可对P1口的高四位清零。
8、若执行XRL P1,# 11000000B后,可对P1口的高两位取反。
9、堆栈必须遵循“ 后进先出 ”的原则。
10、JZe的操作码地址为1000H,e=20H,它转移的目标地址为1022H。
11、MOVA,40H指令对于源操作数的寻址方式是直接寻址。
12、已知A=0F8H,当执行ADDA,#0A9H指令后,PSW中的OV=、CY=、AC=、P=。
若是有符号数,A中的结果用十进制表示是
[解答]OV:
0、CY:
1、AC:
1、P:
1A:
-95
3-4问答题与编程题
1、8051单片机指令系统按功能可分为几类?
答:
MCS-51单片机指令系统按功能可分为5类:
(1)数据传送指令
(2)算术运算指令
(3)逻辑运算和移位指令
(4)控制转移指令
(5)位操作指令
2、什么叫寻址方式?
具有几种寻址方式?
它们的寻址范围如何?
答:
寻址方式:
寻址方式就是寻找指令中操作数或操作数所在地址的方式。
也就是如何找到存放操作数的地址,把操作数提取出来的方法。
MCS-51单片机的指令系统提供了七种寻址方式,其对应的寻址范围如下表:
寻址方式
使用的变量
寻址范围
立即寻址
程序存储器
直接寻址
内部RAM低128个字节;
特殊功能寄存器SFR
寄存器寻址
R0~R7;A、B、DPTR、C
寄存器间接寻址
@R0、@R1、SP
内部RAM、堆栈指针SP
@R0、@R1、@DPTR
外部RAM
变址寻址
@A+PC、@A+DPTR
程序存储器
相对寻址
PC+偏移量
程序存储器
位寻址
内部RAM低128B位寻址区
可位寻址的特殊功能寄存器位
3、堆栈的功能是什么?
有什么操作原则?
栈顶地址如何指示?
答:
堆栈是存储器中的特殊群体。
在内RAM中专门辟出一个连续存储区,用来暂时存放子程序断口地址、中断断口地址和其他需要保存的数据。
堆栈操作无论是存入或取出数据,均只能依次存人或依次取出,不能越位,必须遵循“先进后出"、“后进先出”的原则。
堆栈指针SP指出栈顶存储单元的地址
4、什么是汇编?
什么是汇编语言?
它有什么特点?
4、答:
汇编:
汇编语言源程序在交付计算机执行之前,需要先翻译成目标程序,这个翻译过程叫汇编。
汇编语言:
是用助记符替代机器语言中的操作码,用16进制数替代二进制代码。
特点是比较直观,易于记忆和检查,可读性较好。
但是计算机执行时,必须将汇编语言翻译成机器语言,不同的微处理器有不同的汇编语言。
5、什么叫指令周期?
答:
指令周期:
指执行一条指令所占用的全部时间。
通常一个指令周期含1~4个机器周期。
6、什么是指令?
什么是程序?
答:
指令:
人为输入计算机,由计算机识别并执行一步步操作的命令的形式称为指令。
程序:
一系列指令的有序集合称为程序。
7、什么是进位和溢出?
答:
两数运算的结果若没有超出字长的表示范围,则由此产生的进位是自然进位;若两数的运算结果超出了字长的表示范围(即结果不合理),则称为溢出。
例如将正数3FH和负数D0H相加,其结果不会超出8位字长的表示范围,所以其结果10FH中的进位是正常进位(也就是模)。
但是,若正数3FH与正数70H相加,其结果为AFH,最高位为"1",成了负数的含义,这就不合理了,这种情况称为溢出。
8、“DA A”指令的作用是什么?
怎样使用?
答:
这条指令是在进行BCD码加法运算时,跟在“ADD”和“ADDC”指令之后,用来对BCD码的加法运算结果自动进行修正的,使其仍为BCD码表达形式。
在计算机中,遇到十进制调整指令时,中间结果的修正是由ALU硬件中的十进制修正电路自动进行的。
用户不必考虑何时该加“6”,使用时只需在上述加法指令后面紧跟一条“DA A”指令即可。
9、片内RAM20H~2FH单元中的128个位地址与直接地址00H~7FH形式完全相同,如何在指令中区分出位寻址操作和直接寻址操作?
答:
虽然内部RAM位寻址区的位地址范围00H~7FH与低128个单元的单元地址范围00H~7FH形式完全相同,但是在应用中可以通过指令的类型区分单元地址和位地址。
位寻址的操作只适用于下列位指令,而直接寻址操作对这些指令是无效的。
MOVC,bit
MOVbit,C
CLRbit
SETBbit
CPLbit
ANLC,bit
ANLC,/bit
JBbit,rel
JNBbit,rel
10、8051单片机指令系统中有长跳转LJMP,长调用LCALL指令,为何还没有设置了绝对跳转AJMP,绝对调用ACALL指令?
在实际使用是应怎样考虑?
答:
在实际应用中,可从寻址范围和指令长度两个方面来选择长跳转指令LJMP和短跳转指令AJMP、长调用指令LCALL和短调用指令ACALL。
长跳转LJMP在64KB范围内转移,而短跳转AJMP只能在2KB空间转移。
长调用LCALL调用位于64KB程序空间的子程序,而短调用ACALL调用位于2KB程序空间范围的子程序。
AJMP、ACALL指令代码长度为2个字节;LJMP、LCALL指令代码长度为3个字节。
13、在“MOVC A,@A+DPTR”和“MOVC A,@A+PC”中,分别使用了DPTR和PC作基址,请问这两个基址代表什么地址?
使用中有何不同?
答:
使用@A+DPTR基址变址寻址时,DPTR为常数且是表格的首地址,A为从表格首址到被访问字节地址的偏移量。
使用@A+PC基址变址寻址时,PC仍是下条指令首地址,而A则是从下条指令首地址到常数表格中的被访问字节的偏移量。
14、设片内RAM中的(40H)=50H,写出执行下列程序段后寄存器A和R0,以及片内RAM中50H和51H单元的内容为何值?
答:
结果为:
(A)=30H (R0)=50H (50H)=00H (51H)=30H
15、堆栈指针(SP)=60H,片内RAM中的(30H)=24H,(31H)=10H。
执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化?
答:
结果为:
(61H)=24H (62H)=10H (30H)=00H
(31H)=0FFH DPTR=2410H SP=60H
16、在8051的片内RAM中,已知(20H)=30H,(30H)=40H,(40H)=50H,(50H)=55H。
分析下面各条指令,说明源操作数的寻址方式,分析按顺序执行各条指令后的结果。
MOV A,40H
MOV R0,A
MOV P1,#0F0H
MOV @R0,20H
MOV 50H,R0
MOV A,@R0
MOV P2,P1
答:
指令 源操作数的寻址方式 执行指令后的结果
MOVA,40H 直接寻址 (A)=50H
MOVR0,A 寄存器寻址 (R0)=50H
MOVP1,#80H 立即寻址 (P1)=80H
MOV@R0,20H 寄存器间接寻址 (50H)=30H
MOVDPTR,#2000H 立即寻址 (DPTR)=2000H
MOV40H,30H 直接寻址 (40H)=40H
MOVR0,30H 直接寻址 (R0)=40H
MOVD0H,R0 直接寻址 (D0H)=40H
MOV10H,#10H 立即寻址 (10H)=10H
MOVA,@R0 寄存器间接寻址 (A)=50H
MOVP2,P1 寄存器寻址 (P2)=80H
17、完成以下的数据传送过程。
(1)R1的内容传送到R0。
(2)片外RAM20H单元的内容送R0。
(3)片外RAM20H单元的内容送片内RAM20H
(4)片外RAM1000H单元的内容送片内RAM20H
(5)片外RAM20H单元的内容送R0。
(6)片外RAM2000H单元的内容送片内RAM20H
(7)片外RAM20H单元的内容送片外RAM20H
答:
(1)R1的内容传送到R0;
MOV A, R1
MOV R0, A
(2)片外RAM20H单元内容送R0;
MOV DPTR, #0020H
MOVX A, @DPTR
MOV R0, A
(3)片外RAM20H单元的内容送片内RAM20H单元;
MOV DPTR, #0020H
MOVX A, @DPTR
MOV 20H, A
(4)片外RAM1000H单元的内容送片内RAM20H单元;
MOV DPTR, #1000H
MOVX A, @DPTR
MOV 20H, A
(5)ROM2000H单元的内容送R0单元;
MOV A, #00H
MOV DPTR, #2000H
MOVC A, @A+DPTR
MOV R0H, A
(6)ROM2000H单元的内容送片内RAM20H单元;
MOV A, #00H
MOV DPTR, #2000H
MOVC A, @A+DPTR
MOV 20H, A
(7)ROM2000H单元的内容送片外RAM20H单元。
MOV A, #00H
MOV DPTR, #2000H
MOVC A, @A+DPTR
MOV DPTR, #0020H
MOVX @DPTR, A
18、设有两个4位BCD码,分别存放在片内RAM的23H,22H单元和33H,32H单元中,求它们的和,并送入43H,42H单元中去。
(以上均为低位字节,高位在高字节)。
18、解:
ORG 0000H
LJMP START
ORG 0030H
START:
MOV A,22H
ADD A,32H
DAA
MOV 42H,A
MOV A,23H
ADDC A,33H
DA A
MOV 43H,A
SJMP$
END
19、编程将片内RAM的40H~60H单元中内容送到片外RAM以3000H开始的单元中。
20、已知内部RAM的BLOCK单元开始有一无符号数据块,块长在LEN单元。
请编出求数据块中各数累加和并存入SUM单元的程序。
20、编程计算片内RAM区30H~37H的8个单元中数的算术平均值,结果存在3AH单元中。
21、把内部RAM中起始地址为DATA的数据串传送到外部RAM以BUFFER为首地址的区域,直到发现“$“字符的ASCⅡ码为止。
同时规定数据串的最大长度为32个字节。
22、设内部RAM的20H和21H单元中有两个带符号数,将其中的大数存放在于22H单元中,编出程序。
23、设有100个有符号数,连续存放在片外RAM以2200H为首地址的存储区中,试片成统计其中正数、负数、零的个数。
24、编程将内部数据存储器20H~24H单元压缩的BCD码转换成ASCⅡ存放在于25H开始的单元。
25、试编一查表程序,从首地址为2000H、长度为9FH的数据块中找出第一个ASCII码A,将其地址送到20A0H和20A1H单元中。
26、片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256
27、用查表法编一子程序,将R3中的BCD码转换成ASCII码。
28、片内RAM40H开始的单元内有10个字节的无符号二进制数,编程找出其中最大值并存于50H单元中.
29、编制一个循环闪烁灯的程序。
有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。
画出电路图。
30、设计一个4位数码显示电路,并用汇编语言编程使"8"从右到左显示一遍。
31、编制一个循环闪烁的程序。
有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。
画出电路图。
32、利用89C51的P1口控制8个发光二极管LED。
相邻的4个LED为一组,使2组每隔0.5s交替发亮一次,周而复始。
试编写程序。
19—32编程答案:
19、解:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVR7,#20H
MOVR1,#40H
MOVDPTR,#3000H
LOOP:
MOVA,@R1
MOVX@DPTR,A
INCR1
INCDPTR
DJNZR7,LOOP
SJMP$
END
20、解:
参考程序:
ORG0200H
LEN:
DATA20H
SUM:
DATA21H
BLOCK:
DATA22H
CLRA ;A清零
MOVR2,LEN ;块长度送R2
MOVR1,#BLOCK ;块始址送R1
INCR2 ;R2←块长+1
SJMPCHECK
LOOP:
ADDA,@R1 ;A←A+(R1)
INCR1 ;修改数据块指针R1
CHECK:
DJNZR2,LOOP
MOVSUM,A ;存累加和
END
20、解:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVR0,#30H
MOVR1,#00H
MOVR2,#00H
MOVR3,#07H
LP2:
MOVA,@R0
ADDA,R2
MOVR2,A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 指令系统 汇编语言 程序设计