内容正文:
四川省单独招生考试《单片机原理及应用》45分钟专题训练专辑,共30份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固电子信息类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加电子信息类高考的学生。与本专辑配套的还有四川省单独招生考试《电子技术基础与技能》《电工技术基础与技能》45分钟专题训练专辑,欢迎同学和老师们下载使用。
《单片机原理及应用》
第二章 指令系统与程序设计
课题六 汇编程序设计
时间:45分钟 总分:100分
班级 姓名 学号 成绩
一、选择题(本大题共12小题,每小题 2 分,共 24分)
1.在一个简单的延时子程序中,若晶振频率为 12MHz,执行一条指令需要 1μs,若有一个循环包含 10 条指令且循环 100 次,该部分延时时间是( )。
A. 1000μs B. 100μs C. 10μs D. 1μs
2. 已知某延时子程序中,外循环次数为 M,中循环次数为 N,内循环次数为 K,假设每个循环内指令执行时间为 t,该延时子程序总延时时间为( )。
A. M×N×K×t B. (M + N + K)×t
C. M×t + N×t + K×t D. M×(N + K)×t
3.在一个三重循环的单片机程序中,最外层循环次数为 5,中间层循环次数为 3,最内层循环次数为 2,循环体中每一条指令执行时间为 2μs,总延时时间为( )
A. 60μs B. 30μs C. 15μs D. 20μs
4.在一个延时子程序中,晶振频率为 6MHz,单条指令执行周期为 2μs,若要实现 10ms 的延时,循环次数约为( )
A. 5000 B. 2500 C. 1000 D. 500
5. 在一个延时子程序中,若晶振频率降低为原来的一半,要保持延时时间不变,以下哪种指令修改方式合适( )
DELAY:
MOV R4, #150
L1:
MOV R3, #200
L2:
DJNZ R3, L2
DJNZ R4, L1
RET
A. 将MOV R4, #150改为MOV R4, #300
B. 将MOV R3, #200改为MOV R3, #100
C. 将DJNZ R3, L2改为DJNZ R3, L1
D. 将DJNZ R4, L1改为DJNZ R4, L2
6. 以下汇编代码实现两重循环,内层循环计算1到n(n= 6)的累加和,外层循环执行3次,假设累加结果存放在 A 寄存器中,结束后 A的值是多少( )
MOV R2, #3
OUT_LOOP:
MOV R3, #1
MOV A, #0
IN_LOOP:
ADD A, R3
INC R3
CJNE R3, #7, IN_LOOP
DJNZ R2, OUT_LOOP
A. 63 B. 21 C. 18 D. 42
7. 已知晶振频率为 12MHz,在以下延时子程序中,计算该子程序的延时时间。( )
DEL: MOV R7,#10
DEL1:MOV R6,#200
DEL2:MOV R5,#248
DJNZ R5,$
DJNZ R6, DEL2
DJNZ R7, DEL1
RET
A. 1s B. 400ms C. 500ms D. 2s
8. 以下是一个三重循环的汇编代码片段,计算循环体执行的总次数。( )
MOV R7, #3
OUTER:
MOV R6, #4
MIDDLE:
MOV R5, #5
INNER:
DJNZ R5, INNER
DJNZ R6, MIDDLE
DJNZ R7, OUTER
A. 60 B. 20 C. 12 D. 30
9.以下汇编代码实现了一个简单的延时功能,假设晶振频率为 12MHz,请问执行完以下代码延时多久( )
DEL: MOV R7,#200
DEL1: MOV R6,#125
DEL2: DJNZ R6, DEL2
DJNZ R7,DEL1
RET
A. 50ms B. 10ms C. 15ms D. 20ms
10. 在延时子程序中,如果要延长延时时间,以下哪种方法可行( )
A. 减少循环次数 B. 增加循环次数
C. 降低晶振频率 D. 提高晶振频率
11. 以下是一个简单的延时子程序:
DELAY:
MOV R6, #150
L1:
DJNZ R6, L1
RET
若晶振频率为 6MHz,机器周期为 2μs,该子程序延时时间约为( )
A. 600μs B. 300μs C. 750μs D. 150μs
12.对于以下延时子程序:
DELAY:
MOV R5, #200
D1:
MOV R4, #250
D2:
DJNZ R4, D2
DJNZ R5, D1
RET
若要延长其延时时间,可( )
A. 减小R5的初始值 B. 减小R4的初始值
C. 增加R5的初始值 D. 增加R4的初始值和减小R5的初始值
二、判断题(本大题共10小题,每题 2分,共 20 分)
1.在延时子程序编写中,所有的指令对延时时间的贡献是相同的。( )
2.在单片机两重循环程序中,外层循环的循环变量变化范围决定了内层循环的执行总次数。( )
3.在延时子程序中,若晶振频率降低,相同的程序延时时间会变长。( )
4. 在单片机三重循环程序中,最内层循环一定是对整个程序影响最大的部分。( )
5.在延时子程序中,增加循环嵌套层数一定会延长延时时间。( )
6.对于一个简单的延时子程序,其延时时间只与晶振频率有关。( )
7.延时子程序通过大量复杂运算来实现延时。( )
8.单片机的一个机器周期是指完成某一个规定操作所需的时间,一般情况下,一个机器周期等于一个时钟周期。( )
9. 单片机的指令周期是执行一条指令所需要的时间。一般由若干个机器周期组成。( )
10. CPU的时钟周期为振荡器频率的倒数。( )
3、 填空题(本题共8小题,每空2分,合计16分)
1. 在编写延时子程序时,延时时间与晶振频率成______比。
2.对于汇编语言中的显示子程序,如果要显示动态效果,需要结合______子程序来控制显示的时间间隔。
2. 一个机器周期=______个振荡周期=______个时钟周期。
4.在MCS-51单片机中,如果采用6MHz晶振,1个机器周期为______。
5.假定(SP)=60H,(ACC)=30H,(B)=70H,执行下列指令:
PUSH ACC
PUSH B
后,SP的内容为 ,61H单元的内容为 ,62H单元的内容为 。
4、 读程序题(本大题共2小题,每题 10 分,共 20 分)
1.已知(A)=83H,(R0)=17H,(17H)=34H,执行下列程序段后:
ANL A , #17H
ORL 17H , A
XRL A , @R0
CPL A
(A)= ,(R0)= ,(17H)= 。
2 .已知(10H)=5AH ,(2EH)=1FH,(40H)=2EH,(60H)=3DH , 执行下列程序段后:
MOV 20H , 60H
MOV R1 , 20H
MOV A , 40H
XCH A , R1
XCH A , 60H
XCH A , @R1
MOV R0 , #10H
XCHD A , @R0
( A ) = ( 10H ) = ( 2EH ) =
( 40H ) = ( 60H ) =
五、综合题(共计20 分)
1.下列程序中注释的数字为执行该指令所需的机器周期数,若单片机的晶振频率为6MHz,问执行下列程序需要多少时间________
MOV R3,#100 ;1
LOOP:NOP ;1
NOP
NOP
DJNZ R3,LOOP ;2
RET ;1
2.存放于ADDR1和ADDR2中的两个无符号二进制数,求其中的大数并存于ADDR3中,请完成以下程序实现上述功能。
MOV A, ADDR1
CJNE A, ADDR2,LP1
LP1:________ LP2
MOV ADDR3, A
________________
LP2: MOV ADDR3,ADDR2
LP3: RET
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$
四川省单独招生考试《单片机原理及应用》45分钟专题训练专辑,共30份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固电子信息类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加电子信息类高考的学生。与本专辑配套的还有四川省单独招生考试《电子技术基础与技能》《电工技术基础与技能》45分钟专题训练专辑,欢迎同学和老师们下载使用。
《单片机原理及应用》
第二章 指令系统与程序设计
课题六 汇编程序设计
时间:45分钟 总分:100分
班级 姓名 学号 成绩
一、选择题(本大题共12小题,每小题 2 分,共 24分)
1.在一个简单的延时子程序中,若晶振频率为 12MHz,执行一条指令需要 1μs,若有一个循环包含 10 条指令且循环 100 次,该部分延时时间是( )。
A. 1000μs B. 100μs C. 10μs D. 1μs
【答案】A
【解析】每条指令 1μs,循环内 10 条指令,执行一次循环就是 10μs,循环 100 次,总延时时间为 10×100 = 1000μs。故选 A。
2. 已知某延时子程序中,外循环次数为 M,中循环次数为 N,内循环次数为 K,假设每个循环内指令执行时间为 t,该延时子程序总延时时间为( )。
A. M×N×K×t B. (M + N + K)×t
C. M×t + N×t + K×t D. M×(N + K)×t
【答案】A
【解析】因为是三重循环,总延时时间为各层循环次数相乘再乘以每条指令执行时间,即 M×N×K×t。故选A。
3.在一个三重循环的单片机程序中,最外层循环次数为 5,中间层循环次数为 3,最内层循环次数为 2,循环体中每一条指令执行时间为 2μs,总延时时间为( )
A. 60μs B. 30μs C. 15μs D. 20μs
【答案】A
【解析】总循环次数为 5×3×2 = 30 次,每次循环中指令执行时间为 2μs,所以总延时时间为 30×2 = 60μs。故选A。
4.在一个延时子程序中,晶振频率为 6MHz,单条指令执行周期为 2μs,若要实现 10ms 的延时,循环次数约为( )
A. 5000 B. 2500 C. 1000 D. 500
【答案】A
【解析】已知单条指令执行周期为 2μs,总延时时间 T=10ms=10000μs,根据 N=T×f/n,这里 n = 1(假设一个循环内一条关键指令用于延时),f = 6MHz,计算可得 N=10000÷2=5000。故选A。
5. 在一个延时子程序中,若晶振频率降低为原来的一半,要保持延时时间不变,以下哪种指令修改方式合适( )
DELAY:
MOV R4, #150
L1:
MOV R3, #200
L2:
DJNZ R3, L2
DJNZ R4, L1
RET
A. 将MOV R4, #150改为MOV R4, #300
B. 将MOV R3, #200改为MOV R3, #100
C. 将DJNZ R3, L2改为DJNZ R3, L1
D. 将DJNZ R4, L1改为DJNZ R4, L2
【答案】A
【解析】晶振频率降低为原来的一半,则指令执行周期变为原来的2倍。原程序中,外循环次数由 R4的值决定,要保持延时时间不变,外循环次数应增加一倍,即把 MOV R4,#150改为 MOV R4,#300。故选A。
6. 以下汇编代码实现两重循环,内层循环计算1到n(n= 6)的累加和,外层循环执行3次,假设累加结果存放在 A 寄存器中,结束后 A的值是多少( )
MOV R2, #3
OUT_LOOP:
MOV R3, #1
MOV A, #0
IN_LOOP:
ADD A, R3
INC R3
CJNE R3, #7, IN_LOOP
DJNZ R2, OUT_LOOP
A. 63 B. 21 C. 18 D. 42
【答案】A
【解析】内层循环:计算1到6的累加和,根据等差数列求和公式S=(首项十尾项)x项数:2=(1+6)x6÷2=21.
外层循环:执行3次,所以累加和为21x3=63。故选A。
7. 已知晶振频率为 12MHz,在以下延时子程序中,计算该子程序的延时时间。( )
DEL: MOV R7,#10
DEL1:MOV R6,#200
DEL2:MOV R5,#248
DJNZ R5,$
DJNZ R6, DEL2
DJNZ R7, DEL1
RET
A. 1s B. 400ms C. 500ms D. 2s
【答案】A
【解析】对每条指令进行计算得出精确延时时间为:
1+(1*10)+(1*200*10)+(2*248*200*10)+(2*200*10)+(2*10)+2=[(2*248+3)*200+3]*10+3 =998033us≈1s。整理得:延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+3
此式适用三层循环以内的程序,注意,要实现较长时间的延时一般采用多重循环,有时会在程式序里加入NOP指令,故选择A。
8. 以下是一个三重循环的汇编代码片段,计算循环体执行的总次数。( )
MOV R7, #3
OUTER:
MOV R6, #4
MIDDLE:
MOV R5, #5
INNER:
DJNZ R5, INNER
DJNZ R6, MIDDLE
DJNZ R7, OUTER
A. 60 B. 20 C. 12 D. 30
【答案】A
【解析】最内层循环:R5 从5开始,每次减1,直到0,执行5次。中间层循环:每次中间层循环时,R6 从4开始,每次减1,直到0,执行4次,而中间层循环每次执行时内层循环都完整执行5次,所以中间层和内层循环一起执行4x5=20次。最外层循环: R7 从3开始,每次减1,直到0,执行3次,而每次最外层循环时中间层和内层循环都完整执行20次,所以总循环次数为3x20=60次。故选A。
9.以下汇编代码实现了一个简单的延时功能,假设晶振频率为 12MHz,请问执行完以下代码延时多久( )
DEL: MOV R7,#200
DEL1: MOV R6,#125
DEL2: DJNZ R6, DEL2
DJNZ R7,DEL1
RET
A. 50ms B. 10ms C. 15ms D. 20ms
【答案】B
【解析】DEL这个子程序共有五条指令,现在分别就 每一条指令 被执行的次数和所耗时间进行分析。
第一句:MOV R7,#200 在整个子程序中只被执行一次,且为单周期指令,所以耗时1us
第二句:MOV R6,#125 从②看到④只要R7-1不为0,就会返回到这句,共执行了R7次,共耗时200us
第三句:DJNZ R6,DEL2 只要R6-1不为0,就反复执行此句(内循环R6次),又受外循环R7控制,所以共执行R6*R7次,因是双周期指令,所以耗时2*R6*R7uS。精确延时时间为:1+(1*200)+(2*125*200)+(2*200)+2
=(2*125+3)*200+3 =50603μs≈50ms。故选B。
10. 在延时子程序中,如果要延长延时时间,以下哪种方法可行( )
A. 减少循环次数 B. 增加循环次数
C. 降低晶振频率 D. 提高晶振频率
【答案】B
【解析】在延时子程序中,增加空循环次数可以延长延时时间。A 选项减少循环次数会缩短延时;C、D 选项晶振频率一般是硬件决定的,且在延时子程序编写中通常不改变晶振频率来调整延时。故选B。
11. 以下是一个简单的延时子程序:
DELAY:
MOV R6, #150
L1:
DJNZ R6, L1
RET
若晶振频率为 6MHz,机器周期为 2μs,该子程序延时时间约为( )
A. 600μs B. 300μs C. 750μs D. 150μs
【答案】B
【解析】MOV R6, #150执行 1 次,DJNZ R6, L1执行 150 次,加上RET指令约 1 次,总共执行时间约 150×4 + 2 + 2 = 604 us。故选择A。
12.对于以下延时子程序:
DELAY:
MOV R5, #200
D1:
MOV R4, #250
D2:
DJNZ R4, D2
DJNZ R5, D1
RET
若要延长其延时时间,可( )
A. 减小R5的初始值 B. 减小R4的初始值
C. 增加R5的初始值 D. 增加R4的初始值和减小R5的初始值
【答案】C
【解析】此延时子程序是双重循环结构,外循环由R5控制,内循环由R4控制。延长延时时间可增加外循环次数,即增加R5的初始值。减小R5或R4初始值会缩短延时时间,增加R4初始值同时减小R5初始值不一定能延长延时时间。故选C。
二、判断题(本大题共10小题,每题 2分,共 20 分)
1.在延时子程序编写中,所有的指令对延时时间的贡献是相同的。( )
【答案】×
【解析】不同指令的执行周期不同,在延时子程序中,执行周期长的指令对延时时间的贡献更大,而且一些用于控制循环的指令(如 DJNZ)和普通指令(如 MOV)在延时程序结构中的作用和对延时的影响是不同的。故表述错误。
2.在单片机两重循环程序中,外层循环的循环变量变化范围决定了内层循环的执行总次数。( )
【答案】×
【解析】内层循环的执行总次数由内层循环自身的条件决定,外层循环变量的变化范围决定了内层循环被重复执行的次数,而不是内层循环的执行总次数。故表述错误。
3.在延时子程序中,若晶振频率降低,相同的程序延时时间会变长。( )
【答案】√
【解析】晶振频率降低,指令执行周期变长,在相同的循环结构和指令下,程序执行完所花费的时间就会变长,从而使延时时间变长。故表述正确。
4. 在单片机三重循环程序中,最内层循环一定是对整个程序影响最大的部分。( )
【答案】×
【解析】虽然最内层循环执行频率高,但从对整个程序功能和结果的影响角度看,三层循环都有各自的作用,最外层循环往往控制整体的执行规模,对程序的宏观逻辑影响重大,不能简单说最内层循环影响最大。故表述错误。
5.在延时子程序中,增加循环嵌套层数一定会延长延时时间。( )
【答案】×
【解析】增加循环嵌套层数不一定会延长延时时间,如果内层循环次数或指令执行情况不合理,可能不会延长延时时间,甚至可能由于程序结构变化导致其他问题而影响延时效果。而且如果新增加的循环次数很少,也不一定能有效延长延时。故表述错误。
6.对于一个简单的延时子程序,其延时时间只与晶振频率有关。( )
【答案】×
【解析】延时子程序的延时时间不仅与晶振频率有关,还与循环次数、指令执行周期等因素有关。晶振频率决定了指令执行的基本时间单位,但循环次数等也会极大地影响总延时时间。故表述错误。
7.延时子程序通过大量复杂运算来实现延时。( )
【答案】×
【解析】延时子程序通常通过空循环来实现延时,即让程序在一定时间内执行无实际功能的循环指令,消耗时间,而不是通过大量复杂运算。复杂运算可能会有其他结果,且可能会受运算数据和处理器性能影响,不利于精确延时。故表述错误。
8.单片机的一个机器周期是指完成某一个规定操作所需的时间,一般情况下,一个机器周期等于一个时钟周期。( )
【答案】×
【解析】由于一般情况下一个机器周期不等于一个时钟周期,而是包含多个时钟周期。故表述错误。
9. 单片机的指令周期是执行一条指令所需要的时间。一般由若干个机器周期组成。( )
【答案】√
【解析】表述正确。
10. CPU的时钟周期为振荡器频率的倒数。( )
【答案】√
【解析】表述正确。
3、 填空题(本题共8小题,每空2分,合计16分)
1. 在编写延时子程序时,延时时间与晶振频率成______比。
【答案】反
【解析】延时时间与晶振频率成反比。晶振频率越高,指令执行速度越快,在相同的指令和循环结构下,完成程序执行所需要的时间就越短,即延时时间越短;反之,晶振频率越低,延时时间越长。
2.对于汇编语言中的显示子程序,如果要显示动态效果,需要结合______子程序来控制显示的时间间隔。
【答案】延时
【解析】要实现动态显示效果,需要结合延时子程序。延时子程序可以控制显示内容更新的时间间隔,使得显示看起来是动态变化的。例如在动态数码管显示或动态液晶显示中,通过在两次显示数据更新之间插入合适的延时,来实现滚动、闪烁等动态效果。
2. 一个机器周期=______个振荡周期=______个时钟周期。
【答案】12,6
4.在MCS-51单片机中,如果采用6MHz晶振,1个机器周期为______。
【答案】2us
5.假定(SP)=60H,(ACC)=30H,(B)=70H,执行下列指令:
PUSH ACC
PUSH B
后,SP的内容为 ,61H单元的内容为 ,62H单元的内容为 。
【答案】62H,30H,70H
4、 读程序题(本大题共2小题,每题 10 分,共 20 分)
1.已知(A)=83H,(R0)=17H,(17H)=34H,执行下列程序段后:
ANL A , #17H
ORL 17H , A
XRL A , @R0
CPL A
(A)= ,(R0)= ,(17H)= 。
【答案】(A)= CBH ,(R0)= 17H ,(17H)= 37H
2 .已知(10H)=5AH ,(2EH)=1FH,(40H)=2EH,(60H)=3DH , 执行下列程序段后:
MOV 20H , 60H
MOV R1 , 20H
MOV A , 40H
XCH A , R1
XCH A , 60H
XCH A , @R1
MOV R0 , #10H
XCHD A , @R0
( A ) = ( 10H ) = ( 2EH ) =
( 40H ) = ( 60H ) =
【答案】
( A ) = 5AH( 10H ) =1FH ( 2EH ) = 3DH( 40H ) = 2EH ( 60H ) = 3DH
五、综合题(共计20 分)
1.下列程序中注释的数字为执行该指令所需的机器周期数,若单片机的晶振频率为6MHz,问执行下列程序需要多少时间________
MOV R3,#100 ;1
LOOP:NOP ;1
NOP
NOP
DJNZ R3,LOOP ;2
RET ;1
【答案】1ms
【解析】一个机器周期为2μs,执行程序所需时间T=2us*(5x100+2)=1004us≈1ms
2.存放于ADDR1和ADDR2中的两个无符号二进制数,求其中的大数并存于ADDR3中,请完成以下程序实现上述功能。
MOV A, ADDR1
CJNE A, ADDR2,LP1
LP1:________ LP2
MOV ADDR3, A
________________
LP2: MOV ADDR3,ADDR2
LP3: RET
【答案】
J C ;SJMP LP3
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$