内容正文:
四川省单独招生考试《单片机原理及应用》45分钟专题训练专辑,共30份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固电子信息类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加电子信息类高考的学生。与本专辑配套的还有四川省单独招生考试《电子技术基础与技能》《电工技术基础与技能》45分钟专题训练专辑,欢迎同学和老师们下载使用。
《单片机原理及应用》
第二章 指令系统与程序设计
课题四 程序控制指令与伪指令
时间:45分钟 总分:100分
班级 姓名 学号 成绩
一、选择题(本大题共12小题,每小题 2 分,共 24分)
1.执行指令 LCALL 2000H 时,首先将( )压入堆栈。
A. 当前 PC 值的高字节和低字节(下一条指令地址)
B. 2000H 的高字节和低字节
C. 累加器 A 的值
D. 程序状态字 PSW
【答案】A
【解析】LCALL 是长调用指令,执行时先将当前 PC 值(即 LCALL 指令下一条指令的地址)压入堆栈,先压高字节,后压低字节,然后跳转到指令中指定的地址处。故选 A。
2.对于指令 SJMP rel,若当前 PC 值为 1000H,rel = 30H,那么转移目标地址是( )。
A. 1030H B. 1032H C. 0F70H D. 1028H
【答案】A
【解析】SJMP 是短跳转指令,rel 是 8 位有符号数偏移量。因为 SJMP 指令是双字节指令,当当前 PC 值为 1000H 时,执行到该指令的跳转操作时 PC = 1000H + 2 = 1002H。转移目标地址 = 当前 PC 值 + rel = 1002H + 30H = 1030H。故选A。
3.下列指令中比较转移指令是指( )。
A.DJNZ Rn,rel B.CJNE Rn,#data,rel C.DJNZ direct,rel D.JBC bit,rel
【答案】B
【解析】选顶 A:DJNZ Rn,rel这是一个减1不为0转移指令。其功能是将寄存器 Rn 的内容减 1,若结果不为 0,则程序转移到偏0移量 rel指定的地址处执行;若结果为0,则顺序执行下一条指令。例如,在一段程序中有指令“DJNZ RO,LOOP”,假设 R0初始值为3,执行这条指令时,R0 先减1变为2,因为2不为 0,所以程序跳转到 LOOP 处执行,主要用于循环控制,而不是比较转移指令。选顶B:CJNE Rn,#data,rel这是比较不相等转移指令。它的功能是将寄存器 Rn 的内容与立即数 #data 进行比较,如果两者不相。等,则程序转移到偏移量 rel指定的地址处执行;如果相等,则顺序执行下一条指令。例如,有指令“CJNE R1,#10,NEXT”,若 R1 中的值为 8,与 10 不相等,程序就会跳转到 NEXT处执行,这是比较转移指令。选顶C:DJNZ direct,rel这是直接寻址单元内容减1不为0转移指令。它将直接寻址单元(direct)的内容减 1,若结果不为。0,则程序转移到偏移量rel指定的地址处执行;若结果为0,则顺序执行下一条指令。例如,指令“DJNZ 30H,AGAIN",假设内部 RAM 的 30H 单元初始值为 5,执行时 30H 单元内容减1变为 4,因为 4不为 0,所以跳转到 AGAIN 处执行,主要用于循环控制,不是比较转移指令。选顶 D:JBC bit,rel 这是位清零转移指令。它的功能是判断位地址 bit 的内容。故选B。
4.在MCS—51指令中,下列指令中( )是无条件转移指令。
A.LCALL addr16 B.DJNZ direct,rel C.SJMP rel D.ACALL addr11
【答案】C
【解析】选项 A:LCALL addr16这是长调用指令。它的功能是调用位于 addr16 处的子程序,执行该指令时,先将当前 PC(程序计数器)的值加3(因为 LCALL指令本身占3个字节),然后将 PC的值压入堆栈保存,最后把addr16 装入 PC,从而实现子程序调用,不是无条件转移指令。选顶B: DJNZ direct,rel(Decrement direct and Jump if Not Zero)这是直接寻址单元内容减1不为0转移指令。它先将直接寻址单元(direct)的内容减 1,若结果不为0,则程序转移到偏移量 rel指定的地址处执行;若结果为0,则顺序执行下一条指令。不是无条件转移指令。选顶C:SJMP rel这是短跳转指令,是无条件转移指令。它的功能是程序无条件地跳转到相对偏移量rel 指定的地址处执行。例如,当前 PC值为 1000H,执行指令"SJMP 05H",则程序会跳转到 1000H+05H=1005H处执行,这里没有其他条件限制,是无条件转移指令。选项D:ACALL addr11
这是绝对调用指令。它的功能是调用位于指定 2KB 页面内的子程序,先将PC+2的值压入堆栈保存,然后将 addr11装入PC的低 11位,PC的高5位不变,从而实现子程序调用,不是无条件转移指令。例如,若执行“ACALL0100H"指令,程序会先保存当前 PC值,然后跳转到相应的子程序地址处执行。故选C。
5.下列指令中影响堆栈指针的指令是( )。
A.LJMP B.ADD C.MOVC A,@A+PC D.LCALL
【答案】D
【解析】选项 A:LJMP 是长跳转指令。它的功能是将程序无条件地跳转到指定的16 位地址处执行。例如,执行。“LJMP 2000H”指令时,程序直接跳转到 2000H 地址处执行,这个过程不涉及堆栈操作,不会影响堆栈指针。选项 B:ADD 指令用于加法运算,例如“ADD A, Rn"是将累加器 A和寄存器 Rn 中的内容相加,结果存放在A 中。这个运算过程本身不涉及堆栈操作,不会影响堆指针。选项C:MOVCA,@A+ PC是程序存储器读取指令,用于从程序存储器中读取数据到累加器 A 中。该指令主要用于表格查找等操作,不涉及堆栈操作,不会影响堆栈指针。选项 D:LCALL 是长调用指令。当执行LCALL指令时,首先将当前 PC(程序计数器)的值加 3(因为 LCALL。指令本身占3个字节),然后将 PC的值压入堆栈保存,最后把指定的16 位子程序入口地址装入PC,从而实现子程序调用。这个过程涉及到将 PC值压入堆栈,会使堆栈指针SP加2(因为 PC是16 位,占两个字节),所以 LCALL指令会影响堆指针。故选D。
6.MCS—51指令系统中,执行下列程序后,程序计数器PC的内容为( )。
ORG 000H
MOV DPDR,#1000
MOV A, #00H
MOV 20H,A
LJMP 1500
END
A.100H B.1000h C.1500H D.0H
【答案】C
【解析】ORG 800H 定义程序起始地址为 000H。MOV DPTR,#1000 将立即数 1000 送入数据指针寄存器 DPTR。MOV A,#00H 将立即数 00H 送入累加器 A。MOV 20H,A 将累加器 A的内容 00H 送入内部 RAM 地址为 20H 的单元LIMP 1500 长跳转指令,将程序跳转到地址 1500H 处执行。确定程序计数器 PC的内容执行完 LJMP 1500 指令后,程序计数器 PC 的内容变为 1500H。故选C。
7.MCS-51指令系统中,执行下列程序后,堆栈指针SP的内容为( )。
MOV SP,#30H
MOV A,20H
LCALL 1000
MOV 20H,A
SJMP $
A.00H B.30H C.32H D.07H
【答案】B
【解析】在这段程序中,首先将堆栈指针SP设置为30H,然后执行了一个长调用(LACALL)指令,该指令会将返回地址压入堆栈。由于堆栈指针SP在调用前被设置为30H,调用后SP的值仍然保持为30H。故选择B。
8. 执行下列程序后,内部RAM 30H单元的内容是( )。
MOV 30H,#00H
MOV R0,#30H
MOV A, 30H
ADD A, #05H
MOVC A, @A+PC
MOV @R0, A
SJMP $
TDB:DB 00H ,01H ,02H,03H,05H
A.00H B.02H C.05H D.30H
【答案】 B
【解析】首先执行 Mov 30H,#00H,将内部 RAM 的30H单元初始化为 00H。接着 MOV RO,#30H,把 30H这个地址赋给寄存器 RO。然后 MOV A,38H,将30H单元的内容(此时为 00H)传送到累加器A,所以此时A=00H累加器 A中的内容(00H)与立即数05H相加,结果为05H,此时A=05H再执行ADD A,#05H,
MOVC A,@A + PC 是一条查表指令。在执行这条指令时,PC的值是当前指令 MOVC A,@A +Pc 的下条指令的地址。由于 MOVCA,@A + PC 是单字节指令,假设这条指令所在地址为XXH,那么执行这条指令时PC =XXH+1.
此时A = 05H,那么程序会从(PC+05H)这个地址单元中取出数据送到累加器 A 中。假设 MOVC A,@A + PC指令地址为YYH,那么PC =YYH+1,实际取数的地址是。(YYH+1+05H)。从 TDB:DB 0H,01H,02H,03H,85H这个数据表来看,A=05H,所以会取到数据表中的第6个字节。(因为从0开始计数),也就是02H。此时A=02H。
执行 MOV @R,A,将累加器A中的内容(02H)传送到 R0 所指向的单元,也就是 30H 单元。最后 SIMP $是原地踏步指令,程序停止在这里,所以内部 RAM 30H 单元的内容是 02H,答案选 B。故选B。
9.执行下列程序后,累加器A的内容为( )。
ORG 0000H
MOV A, #00H
ADD A, #02H
MOV DPTR, #0050H
MOVC A, @A+DPTR
MOV @R0, A
SJMP $
ORG 0050H
BAO: DB 00H,08H,0BH,6H,09H,0CH
END
A.00H B.0BH C.06H D.0CH
【答案】B
【解析】首先执行 MOv A,#00H 指令,此指令将立即数 80H 传送到累加器 A 中,此时累加器A的内容变为000H。接着执行 ADD A,#02H 指令,累加器A中的现有内容(即 80H)与立即数 82H 相加,通过计算(00H。
+02H),结果为 02H,此时累加器 A的内容更新为 02H。查表操作阶段:执行 MOV DPTR,#8058H 指令,该指令的作用是将数据指针 DPTR 设置为 8858H,这使得 DPTR 指向了后续定义的数据表所在的起始地址。
紧接着执行 MOVC A,@A+ DPTR 指令,这是一条基于数据指针 DPTR 的查表指令。在此刻,累加器A的内容为 2H,所以程序会依据(DPTR+A)的计算结果来确定要访问的数据表中的地址单元。已知 DPTR 的值为 8058H ,累加器A的值为 02H,那么两者相加(0050H+02H)得到的地址为00052H。在程序的 ORG 8858H部分定义了数据表 BA0:DB 88H,88H,BBH,6H,9H,BCH。按照地址偏移的计算。地址为 8052H 的单元(从 0058H 起始计数,偏移量为 82H)所存放的数据是 8BH。因此,执行 MOVC A,@A + DPTR 指令后,累加器 A 的内容就变为了 0BH。接着执行 MOV @R,A 指令,然而在给出的程序中,并没有对寄存器 R0 进行初始化赋值等相关操作,该指令使得程序进入循环等待状态,此时累加器 A的内容保持为 0BH 不变。最后执行 SIMP $ 指令,故选B。
10. 比较转移指令是( )。
A.DJNZ R0 rel B.CJNE A,direct,rel
C.DJNZ direct rel D.JBC bit rel
【答案】B
【解析】选项 A:DJNZ RO rel这是一个循环控制指令。指令的功能是将寄存器 R0 的内容减 1,然后判断结果是否为 0。如果结果0不为 0,则程序跳转到相对地址(rel)处继续执行;如果结果为0,则顺序执行下一条指令。它主要用于循环计数控制,不是比较转移指令。选顶 B:CJNE A,direct,rel这是比较转移指令。它的功能是将累加器A的内容与直接寻址单元(direct)的内容进行比较。如果A 中的内容不等于direct 中的内容,那么程序将跳转到相对地址(rel)处继续执行;如果 A中的内容等于 direct 中的内容,则顺序执行下一条指令。选顶C:DJNZ direct rel这也是一个循环控制指令。它将直接寻址单元(direct)的内容减 1,然后判断结果是否为 0。若不。为0,则跳转到相对地址(rel)处执行;若为0,则顺序执行下一条指令,不是比较转移指令。选项 D:JBC bit rel这是位操作指令。它的功能是判断位地址(bit)中的内容是否为1。如果是1,则将该位清零,并且。程序跳转到相对地址(rel)处执行:如果位地址中的内容为 0,则顺序执行下一条指令,不是比较转移指令。故选B。
11.LJMP跳转空间最大可达到( )。
A.2KB B.256B C.128B D.64KB
【答案】D
【解析】LJMP 是长跳转指令。在 MCS-51 单片机的指令系统中,程序存储器的地址空间是 16 位的,范围是0000H-FFFFH,总共是 64KB的空间。LJMP 指令可以在整个 64KB 的程序存储器空间内进行跳转。它的操作码后面直接跟的是 16 位的目标地址,能够实现对 64KB 范围内任意地址的跳转。故选择D。
12.在编程中使用伪指令的目的是( )。
A.指示和引导如何进行手工汇编 B.指示和引导编译程序如何汇编
C.指示和引导汇编程序进行汇编 D.指示和引导程序员进行汇编
【答案】C
【解析】伪指令是一种特殊的指令,它不是真正的机器指令,在汇编过程中不产生目标代码。其主要目的是为了给汇编程序提供一些必要的信息,例如定义数据、分配存储单元、定义程序段、指示程序的起始和结束位置等,从而指示和引导汇编程序进行正确的汇编操作。选项 A 中提到的手工汇编,伪指令主要不是用于指导手工汇编,虽然在手工汇编时也会参考伪指令,但这不是其主要目的。选项 B中“编译程序“说法错误,因为对于汇编语言是汇编程序而不是编译程序来处理。选项 D“指示和引导程序员进行汇编” 表述不准确,伪指令主要是针对汇编程序,而不是直接引导程序员进行汇编。故选C。
二、判断题(本大题共10小题,每题 2分,共 20 分)
1.无条件转移指令LJMP addr16称长转移指令,允许转移的目标地址在128KB空间范围内。( )
【答案】×
【解析】在 MCS-51单片机指令系统中,程序存储器空间是64KB(地址范围从 0000H-FFFFH)LJMP(长跳转指令)可以在整个64KB的程序存储器空间内进行跳转。它的操作码后面直接跟的是 16位的目标地址,这个 16 位地址决定了它的跳转范围是 64KB,而不是 128KB。故表述错误。
2.指令 AJMP addr11 的跳转目标地址计算与当前 PC 值的低 5 位无关。( )
【答案】×
【解析】AJMP addr11 是绝对跳转指令,其跳转目标地址的计算是将当前 PC 值的高 5 位与指令中的 11 位地址信息拼接。PC 值的高 5 位是确定 2KB 页面的关键,而低 5 位虽然在计算中看似没有直接参与,但它影响当前 PC 值所在位置,从而间接影响跳转目标地址是否在正确的 2KB 页面内,是有关系的。故表述错误。
3.SJMP 指令的跳转范围是相对于当前 PC 值 - 128到 +127 字节。( )
【答案】√
【解析】SJMP 是短跳转指令,rel 是 8 位有符号数偏移量,所以跳转范围是相对于当前 PC 值 - 128 到 + 127 字节。故表述正确。
4. 无条件转移指令 AJMP 的跳转范围小于长转移指令 LJMP 的跳转范围。( )
【答案】√
【解析】AJMP 是绝对跳转指令,跳转范围是 2KB,LJMP 是长跳转指令,跳转范围是 64KB,所以 AJMP 的跳转范围小于 LJMP。故表述正确。
5. MCS - 51 指令系统中,指令 DJNZ Rn, rel 在执行时,Rn 可以是 R0 - R7 中的任意一个寄存器。( )
【答案】√
【解析】DJNZ Rn, rel 指令中,Rn 可以是 R0 - R7 这 8 个工作寄存器中的任意一个,指令先将 Rn 的内容减 1 判断是否跳转。故表述正确。
6.对于指令 DJNZ R0, rel,当 R0 的初始值为 0 时,程序一定跳转。( )
【答案】×
【解析】DJNZ R0, rel 指令先将 R0 的内容减 1,当减 1 后 R0 的值不为 0 时才跳转,初始值为 0,减 1 后为 - 1(补码形式),值不为 0,会跳转,故表述错误。
7.在 MCS - 51 指令系统中,指令 AJMP addr11 的跳转目标地址必须在与当前 PC 值同一 2KB 区内。( )
【答案】√
【解析】AJMP addr11 是绝对跳转指令,11 位地址,跳转范围是与当前 PC 值在同一 2KB 区内。故表述正确。
8.指令 DJNZ direct, rel 在执行时,是先判断直接寻址单元内容是否为 0,再减 1。( )
【答案】×
【解析】DJNZ direct, rel 指令是先将直接寻址单元的内容减 1,然后判断减 1 后的结果是否为 0,若不为 0 则跳转。故表述错误。
9. MCS - 51 指令系统中,CJNE A, #00H, rel 指令执行后,如果 A = 00H,CY = 1。( )
【答案】×
【解析】CJNE A, #00H, rel ,当 A > 00H 时,CY = 0。故表述错误。
10. 指令 LCALL addr16 在执行时,会先将当前 PC 值压入堆栈,然后跳转到 addr16 地址处。( )
【答案】√
【解析】LCALL addr16 是长调用指令,执行时先将当前 PC 值(下一条指令的地址)压入堆栈保存,然后跳转到 addr16 地址处执行子程序。故表述正确。
3、 填空题(本题共6小题,每空2分,合计16分)
1.指令LCALL 37B0H,首地址在2000H,所完成的操作是_______入栈,_______→PC。
【答案】2003H,37B0H
【解析】LCALL(长调用指令)执行时,会先将当前程序计数器PC的值(也就是 LCALL指令下一条指令的地址)压入堆栈。因为首地址在 2000H,LCALL是三字节指令,所以下一条指令的地址是2000H+3=2003H,先将PC的高字节(20H)和低字节(03H)依次压入堆。然后将指令中给出的 16 位日标地址(37B0H)送入程序计数器 PC,实现长调用,即程序跳转到 37BOH处执行。所以指令 LCALL 37B0H,首地址在 2000H,所完成的操作是2003H入栈,37B0H→PC。
2.SJMP rel的指令操作码地址为0050H,rel=65H,那么它的转移目标地址为__________。
【答案】00B7H
【解析】SJMP(短跳转指令)是相对跳转指令,它的跳转目标地址是通过当前程序计数器 PC 的值加上相对偏移量 rel来计算的。已知 SJMP rel 的指令操作码地址为 0050H,因为 SIMP 指令是双字节指令,所以当执行到该指令的跳转操作时,程序计数器 PC的值已经指向了该指令操作码地址的下一个字节,即 PC=0050H+2=0052H。已知 rel= 65H,这是一个8位有符号数的相对偏移量。根据 SJMP 指令转移目标地址的计算公式:转移目标地址 =当前 PC 值 +rel。将PC=0052H和rel=65H 代入公式可得转移目标地址=0052H+65H=00B7H。
2. ORG 2000H
LCALL 4000H
ORG 4000H
ADD A,R2
执行完LCALL指令后,PC=__________。
【答案】4000H
【解析】LCALL 是长调用指令,在 MCS-51 指令系统中,当执行 LCALL 指令时,会进行以下两步操作:
首先,将当前程序计数器 PC的值(也就是 LCALL 指令下一条指令的地址)压入堆栈保存。因为 LCALL 指令是三字节指令,已知 ORG 2000H 设定了起始地址,那么 LCALL指令所在地址为 2000H,其下一条指令的地址就是 2000H+3=2003H。这个2003H的值会先将高字节(20H),再将低字节(03H)依次压入堆栈。
然后,将LCALL指令中给出的 16 位目标地址(这里是 4000H)送入程序计数器 PC,使得程序跳转到该目标地址处执行后续指令。根据上述 LCALL 指令的执行过程,在执行完 LCALL指令后,程序计数器 PC 的值会被设置为 LCALL 指令中指定的目标地址,即 4000H。所以,执行完 LCALL指令后,PC=4000H。
4.假定addr11=00100000000B,标号qaz的地址为1030H。执行指令:
qaz:AJMP addr11
后,程序转移到地址__________去执行。
【答案】1100H
【解析】AJMP(绝对跳转指令)是一条 11 位地址的跳转指令。它的操作码占1个字节,后面紧跟着 11 位地址信息,用于确定跳转的目标地址。AJMP 指令的跳转范围是以当前程序计数器 PC 值所在的 2KB 存储区域为基础进行计算的。其跳转目标地址的计算方式是:先将当前 PC 值的高5位保留,然后与指令中给出的 11 位地址信息拼接在-起,形成一个新的 16 位地址,这个新地址就是跳转的目标地址。已知标号 qaz 的地址为 1030H,当执行到指令"qaz:AJMP addr11”时,此时程序计数器 PC 的值就为1030H。将 1030H 转换为二进制形式为:00010000 00110000B。按照 AJMP 指令跳转目标地址的计算方法:先保留当前 PC值(1030H)的高5位,即00010B。然后与指令中给出的 11 位地址信息 addr11=001000000008 拼接在一起,得到新的 16 位地址:0001000100000000B。将这个新的 16 位地址转换为十六进制形式为:1100H。
5.在R7初值为00H的情况下,DJNZ R7,rel指令将循环执行__________次。
【答案】256
【解析】DJNZ(减1非零跳转)指令的功能是将指定的寄存器(这里是 R7)内容减 1,然后判断结果是否为0。如果结果不为0,则跳转到相对地址(rel)处继续执行;如果结果为0,则顺序执行下一条指令。当 R7 初值为 00H 时,执行 DJNZ R7,rel 指令,首先将 R7 的内容减 1,此时 R7的值变为 FFH(在 8O位二进制中,00H-1=FFH)。因为FFH不为0,所以会跳转到rel指定的地址处继续执行。然后再次执行 DJNZ R7,rel指令,R7 的值再次减1变为 FEH,不为 0,继续跳转执行。这个过程会一直持续,直到 R7 的值减为 00H。从 FFH 开始每次减 1,总共会经过 256 次(因为 R7 是8 位寄存器,能表示的范围是 00H-FFH,总共 256 个值),当R7的值最终减为 00H时,就不再跳转,循环结束。所以在 R7 初值为 00H 的情况下,DJNZ R7,rel 指令将循环执行 256 次
6.已知SP=25H,PC=2345H,(24H)=12H,(25H)=34H,(26H)=56H。问此时执行“RET”
指令后,SP=__________,PC=__________。
【答案】23H, 3412H
【解析】RET”指令是一个子函数执行结束后的返回指令,执行该指令时,会进行POP操作,即从栈中弹出之前保存的返回地址。由于在进入堆栈时,地址是先压入低8位,然后是高8位,因此在出栈时,地址的顺序相反。根据题目中给出的寄存器值,(25H)=34H 和 (24H)=12H,因此PC的值应为3412H。同时,由于RET指令会弹出地址,SP的值会减少1,因此SP的值变为23H。
4、 读程序题(本大题共2小题,每题 10 分,共 20 分)
1.①用一条指令____________________可以取代下列4条指令:
MOV DPTR,#1234H
PUSH DPL
PUSH DPH
RET
②执行下面程序后,(A)=_____________。
MOV A, #06H
MOVC A, @A+PC
DB 00H , 01H , 02H , 03H , 04H , 05H , 06H
【答案】① LJMP 1234H ;②06H
【解析】
①LJMP 1234H:这是一个长跳转指令,用于将程序计数器(PC)跳转到指定的地址。在这里,它将跳转到地址1234H,执行接下来的代码。
MOV DPTR,#1234H:这条指令将立即数1234H赋值给数据指针寄存器DPTR。DPTR是一个16位的寄存器,用于指向外部数据存储器的地址。
PUSH DPL:这条指令将DPL(数据指针的低8位)压入堆栈。
PUSH DPH:这条指令将DPH(数据指针的高8位)压入堆栈。
RET:这条指令从堆栈中弹出返回地址,并返回到之前保存的地址继续执行。
②首先执行 MOV A,#86H 指令,该指令将立即数 86H 传送到累加器 A 中,此时累加器 A的内容变为 86H。
接着执行 MOVC A,@A+PC 指令,这是一条基于程序计数器 PC 的查表指令,在执行这条指令时,PC的值是当前指令 MOVC A,@A+Pc 的下一条指令的地址。由于 MOVC A,@A+PC 是单字节指令,假设这条指令所在地址为 xxH,那么执行这条指令时PC=xxH+1。此时累加器 A的内容为 86H ,那么程序会从(PC+ 06H)这个地址单元中取出数据送到累加器 A 中。假设 MOVC A,@A+PC指令地址为 H,那么 PC=YH+1,实际取数的地址是(YH+1+ 86H)。在程序的末尾定义了数据表DB00H,01H,02H,03H,04H,05H,06H。从该数据表中,按照前面计算的取数地址偏移量,当PC=H+1时,要取数的地址为(YH+1+86H),也就是从数据表起始地址开始偏移 06H个单元。从数据表起始地址开始数,偏移 06H个单元后所存放的数据是 06H。所以执行 MOVCA,@A+PC 指令后,累加器 A的内容变为 06H。
2. 编程实现求片内RAM中30H和31H两个单元数据的和,将结果存放在32H单元(假设和不超过255)。
【答案】
ORG 0000H
MOV A, 30H
ADD A, 31H
MOV 32H, A
SJMP $
五、综合题(共计20 分)
编程实现将片内RAM中30H到39H单元的数据依次传送到40H到49H单元。
【答案】
ORG 0000H
MOV R0, #30H
MOV R1, #40H
MOV R2, #10
LOOP:
MOV A, @R0
MOV @R1, A
INC R0
INC R1
DJNZ R2, LOOP
SJMP $
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$
四川省单独招生考试《单片机原理及应用》45分钟专题训练专辑,共30份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固电子信息类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加电子信息类高考的学生。与本专辑配套的还有四川省单独招生考试《电子技术基础与技能》《电工技术基础与技能》45分钟专题训练专辑,欢迎同学和老师们下载使用。
《单片机原理及应用》
第二章 指令系统与程序设计
课题四 程序控制指令与伪指令
时间:45分钟 总分:100分
班级 姓名 学号 成绩
一、选择题(本大题共12小题,每小题 2 分,共 24分)
1.执行指令 LCALL 2000H 时,首先将( )压入堆栈。
A. 当前 PC 值的高字节和低字节(下一条指令地址)
B. 2000H 的高字节和低字节
C. 累加器 A 的值
D. 程序状态字 PSW
2.对于指令 SJMP rel,若当前 PC 值为 1000H,rel = 30H,那么转移目标地址是( )。
A. 1030H B. 1032H C. 0F70H D. 1028H
3.下列指令中比较转移指令是指( )。
A.DJNZ Rn,rel B.CJNE Rn,#data,rel C.DJNZ direct,rel D.JBC bit,rel
4.在MCS—51指令中,下列指令中( )是无条件转移指令。
A.LCALL addr16 B.DJNZ direct,rel C.SJMP rel D.ACALL addr11
5.下列指令中影响堆栈指针的指令是( )。
A.LJMP B.ADD C.MOVC A,@A+PC D.LCALL
6.MCS—51指令系统中,执行下列程序后,程序计数器PC的内容为( )。
ORG 000H
MOV DPDR,#1000
MOV A, #00H
MOV 20H,A
LJMP 1500
END
A.100H B.1000h C.1500H D.0H
7.MCS-51指令系统中,执行下列程序后,堆栈指针SP的内容为( )。
MOV SP,#30H
MOV A,20H
LCALL 1000
MOV 20H,A
SJMP $
A.00H B.30H C.32H D.07H
8. 执行下列程序后,内部RAM 30H单元的内容是( )。
MOV 30H,#00H
MOV R0,#30H
MOV A, 30H
ADD A, #05H
MOVC A, @A+PC
MOV @R0, A
SJMP $
TDB:DB 00H ,01H ,02H,03H,05H
A.00H B.02H C.05H D.30H
9.执行下列程序后,累加器A的内容为( )。
ORG 0000H
MOV A, #00H
ADD A, #02H
MOV DPTR, #0050H
MOVC A, @A+DPTR
MOV @R0, A
SJMP $
ORG 0050H
BAO: DB 00H,08H,0BH,6H,09H,0CH
END
A.00H B.0BH C.06H D.0CH
10. 比较转移指令是( )。
A.DJNZ R0 rel B.CJNE A,direct,rel
C.DJNZ direct rel D.JBC bit rel
11.LJMP跳转空间最大可达到( )。
A.2KB B.256B C.128B D.64KB
12.在编程中使用伪指令的目的是( )。
A.指示和引导如何进行手工汇编 B.指示和引导编译程序如何汇编
C.指示和引导汇编程序进行汇编 D.指示和引导程序员进行汇编
二、判断题(本大题共10小题,每题 2分,共 20 分)
1.无条件转移指令LJMP addr16称长转移指令,允许转移的目标地址在128KB空间范围内。( )
2.指令 AJMP addr11 的跳转目标地址计算与当前 PC 值的低 5 位无关。( )
3.SJMP 指令的跳转范围是相对于当前 PC 值 - 128到 +127 字节。( )
4. 无条件转移指令 AJMP 的跳转范围小于长转移指令 LJMP 的跳转范围。( )
5. MCS - 51 指令系统中,指令 DJNZ Rn, rel 在执行时,Rn 可以是 R0 - R7 中的任意一个寄存器。( )
6.对于指令 DJNZ R0, rel,当 R0 的初始值为 0 时,程序一定跳转。( )
7.在 MCS - 51 指令系统中,指令 AJMP addr11 的跳转目标地址必须在与当前 PC 值同一 2KB 区内。( )
8.指令 DJNZ direct, rel 在执行时,是先判断直接寻址单元内容是否为 0,再减 1。( )
9. MCS - 51 指令系统中,CJNE A, #00H, rel 指令执行后,如果 A = 00H,CY = 1。( )
10. 指令 LCALL addr16 在执行时,会先将当前 PC 值压入堆栈,然后跳转到 addr16 地址处。( )
3、 填空题(本题共6小题,每空2分,合计16分)
1.指令LCALL 37B0H,首地址在2000H,所完成的操作是_______入栈,_______→PC。
2.SJMP rel的指令操作码地址为0050H,rel=65H,那么它的转移目标地址为__________。
2. ORG 2000H
LCALL 4000H
ORG 4000H
ADD A,R2
执行完LCALL指令后,PC=__________。
4.假定addr11=00100000000B,标号qaz的地址为1030H。执行指令:
qaz:AJMP addr11
后,程序转移到地址__________去执行。
5.在R7初值为00H的情况下,DJNZ R7,rel指令将循环执行__________次。
6.已知SP=25H,PC=2345H,(24H)=12H,(25H)=34H,(26H)=56H。问此时执行“RET”
指令后,SP=__________,PC=__________。
4、 读程序题(本大题共2小题,每题 10 分,共 20 分)
1.①用一条指令____________________可以取代下列4条指令:
MOV DPTR,#1234H
PUSH DPL
PUSH DPH
RET
②执行下面程序后,(A)=_____________。
MOV A, #06H
MOVC A, @A+PC
DB 00H , 01H , 02H , 03H , 04H , 05H , 06H
2. 编程实现求片内RAM中30H和31H两个单元数据的和,将结果存放在32H单元(假设和不超过255)。
五、综合题(共计20 分)
编程实现将片内RAM中30H到39H单元的数据依次传送到40H到49H单元。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$