请单击你所选择的项
试题A 试题B 试题C 试题D 试题E
A试题
填空题(共20分,每题4分)
单片机试验系统与微机是通过 串行通讯电缆 相连。
若想进入全屏幕编辑界面,按下F1功能键,按ALT+F建立新文件,即可开始输入源文件。
当程序输入错误或需要调整时,使用A命令完成。
将立即数#33H送20H单元使用MOV 20H,#33H指令。
入栈指令使用PUSH ACC指令。
程序分析题(共20分,每题10分)
1、位地址为M、N、Y,程序如下:
MOV C,M ;(M) ?C
ANL C, ;(M)
MOV Y,C ;(Y)=(M)
MOV C,M ;(M) ?C
ANL C,N ;(M)
ORL CY ;
MOV Y,C
程序功能表达式:
(Y)=(M)*(/N)+(M)*(N)
2、阅读下列程序并回答问题
CLR C
MOV A,#9AH
SUBB A,60H
ADD A,61H,
DA A
MOV 62H,A
请问该程序执行何种操作?
已知初值:(60H)=23H,(61H)=61H,请问运行程序后:(62H)=( )?
解
操作是单字节BCD码运算,是将
(61H)-(60H)?62H
(2)(62H)=38H
编程题(共60分,每题30分)
1、将31H、32H单元与41 H、40H单元的双字节十进制无符号数相加,结果存入32H,31H,30H单元。即(31H)(30H)+(41H)(40H) 32H、31H、30H。
输入程序
参考程序
MOV R0,#30H
MOV R1,#40H
MOV R2,#02H
CLR C
L1: MOV A,@R0
ADDC A,@R1
DA A
MOV @R0,A
INC R0
INC R1
DJNZ R2,L1
CLR A
MOV ACC.0,C
MOV @R0,A
在31H、30H单元存入加数如3018,在41H,40H单元存入被加数如8975。
(3)输入程序首地址,(从处为2000H),然后开始单步或断点运行该段程序。
(4)运行过程中检查数据的变化,并在最后检查(32H)= ,(31H)= , (30H)= 。
2、 编程实现逻辑运算:Q=(U *(V+W))+X.Y)+Z。设U~Z的位地址为00H~05H.Q的位地址为07H。《实际中U~Z可以是外部输入端口信号或软件设定的一些控制位》。
实习步骤:
(1)输入所编程序。
MOV C,01H
O RL C,02H
ANL C,00H
MOV F0,C ;暂存U*(V+W)的值
MOV C,03H
ANL C,/04H
ORL C,F0
ORL C,/05H
MOV 07H,C ; 保存结果
(2)部RAM20H单元(位地址00H~07H的位在20H单元)输入某个数据(注意此时各位的状态并做好记录)。
(3)单步或断点运行所编程序,逐步检查Cy及个数据的变化情况(注意检查时也按字节读出,再观察其相应位)。
(4)验证运行结果
(5)改变20H单元的置数,重做。
B试题
填空题(共20分,每题4分)
1、我们使用的单片机试验箱型号是 TDN-MI 。
2、输入文件后,按F2保存程序,此时文件扩展名是 .ASM。
3、提示装载完毕后,使用U000命令进行反汇编 ,检查程序是否正确装入。
4、将30H单元的内容#67H送R1,用最少的指令实现,指令为:MOV 30H,#67H; MOV R1,30H。
5、弹出操作,使用POP ACC指令。
二、程序分析题(共20分,每题10分)
1、程序如下
2506H M5: MOV SP,#58H;
2509H MOV 10H,0FH;
250CH MOV 11H,#0BH;
250FH ACALL XHD;
2511H MOV 20H,11H
2514H M5A: SJMP M5A
XHD: PUSH 10H
PUSH 11H
POP 10H
POP 11H
RET
问:(1)执行POP10H后堆栈内容?
(2)执行M5A:SJMP M5A后,(SP)=? (20H)=?
解
执行ACALL指令时:PC+2?PC:
(SP)+1?SP PC0~PC7?(SP)
(SP)+1?SP PC8~PC15?(SP)
2) 子程序返回时,点地址弹出,SP=58H
所以 (1)执行POP 10H后,堆栈内容如左图所示.
5C 0B
5B 0F
5A 25
59 11
58
(2)执行M5A:SJMP M5A后,(SP)=58H,
(20H)=0FH
2、解读下列程序,然后填写有关寄存器内容
(1) MOV R1,#48H
MOV 48H,#51H
CJNE @R1,#51H,00H
JNC NEXT1
MOV A,#0FFH
SJMP NEXT2
NEXT: MOV A,#0AAH
NEXT2: SJMP NEXT2
累加器 A=( )
(2) MOV A,#0FBH
MOV PSW,#10H
ADD A,#7FH
解
(1) MOV R1,#48H ;48H 送 R1
MOV 48H,#51H ;51H送?(48H)
CJNE @R1,#51H,00H ;(R1)GN #51相比,相等,顺序执行
JNC NEXT1 ;没借位转,NEXT1
MOV A,#0FFH ;有借位,FFH送A
SJMP NEXT2
NEXT1 MOV A,#0AAH ;0AAH送A
NEXT2 SJMP NEXT2
累加器 A=(0AAH)
(2) MOV A,#0FBH
MOV PSW,#10H 00010000送PSW
ADD A,#7FH
由 11111011
+ 01111111
____________
1 01111010
所以,有进位CY=1,C6 ? C7=1?1=0,OV=0; A中有奇数个1,P=1;
有辅助进位位AC=1
若PSW=00,当执行完上述程序段后,将PSW各位状态填入下表:
PSW
CY
AC
F0
RS1
RS0
OV
F1
P
1
1
0
1
0
0
0
1
三、编程题(共60分,每题30分)
将片内RAM-2单元(如20H)的内容分成两段,并将它们分别存入2单元和3单元。(高位清零)。
输入程序。
参考程序:
MOV R0,#21H
MOV A,20H
ANL A,#0FH
MOV @R0,A
INC R0
MOV A,20H
SWAP A
ANL A,#0FH
MOV @R0
在某单元(如20H)存入待分字的某数(如5BH)。
单步或带断点运行该段程序。
运行过程中注意检查程序的变化,并在最后检查(21H)= ,
(22H)= 。
2、编程实现字符串长度统计:设在单片机内RAM中从STR单元开始有一字符串《以ASC II码存放》,该字符串以$<其值为24H>结束,试统计该字符串的长度,其结果存于LON单元。
(1)输入所编程序
START: CLR A ;计数单元清零
MOV R0,#STR
LOOP: CJNE R0,#24H,NEXT ;判断字符串是否结束
SJMP COMP
NEXT: INT A
INC R0
SJMP LOOP
COMP: MOV LON,A ;将长度存入LON单元
SJMP $
(2)在以STR为首的地址内部RAM单元开始存放待统计长度的数据块(自设),并以#24作为数据块的结束标志。
(3)单步或断点运行所编程序,注意观察每次转移后PC及统计长度单元LON的变化,并做好记录。
(4)验证运行结果。
(5)改变数据块长度,重做。
C试题
填空题(共20分,每题4分)
1、开启微机电源,在软件所在目录键入 MD51 命令,选择对应串口号,进入集成操作软件环境。
2、对源文件进行汇编,生成浮动目标文件,文件扩展名是 .R03。
3、用B命令设置断点。
4、将立即数3052H送数据指针DPTR,使用MOV DPTR,#3052H指令。
5、两寄存器交换数据,使用XCH A,R4指令。
二、程序分析题(共20分,每题10分)
1、程序存储器空间表格如下:
地址 2000H 2001H 2002H 2003H ...
内容 3FH 06H 5BH 4FH ...
已知:片内RAM的20H中为01H,执行下列程序后(30H)=?
MOV A,20H ;01H?A
INC A ;01H+1=02H?A
MOV DPTR,#2000H ;2000H?DPTR
MOVC A,@A+DPTR ;(2000H+2)=5BH?A
CPL A ;5BH求反等于A4H
MOV 30H,A ;A4H?(30H)
END: SJMP END
答 执行程序后,(30H)=A4
2、分析程序段:
CLR C
MOV A,#91H
SUBB A,61H ;求60H内的BCD数的补数,9AH-24H=76H
ADD A,61H ;76H+72H=E8H
DA A ;CY=1、A=48H
MOV 62H,A
解 根据9AH=99=1的特殊性,该程序功能为单字节BCD数减法运算,即完成的是(61H)-(60H)?(62H)。所以运行后,(62H)=48H,意即72-24=48
编程题(共60分,每题30分)
编程实现下列逻辑运算Z=(M+N)*(O+P)。设M,N,O,P为片内RAM30H—33H单元,输出结果单元Z地址为34H。
将下列程序输入到实习装置
参考程序
START:MOV A,M
XRL A,N
MOV B,A
MOV A,O
ORL A,P
ANL A,B
MOV Z,A
在M—P(30H—33H单元)装入待进行逻辑运算的数据(自设)。
单步或带断点运行该段程序。
运行过程中注意检查程序的变化,并在最后验证(Z)是否与理论值相符。
2、 设从内存BLOCK单元开始存放一 无符号数的数据块,其长度为LEN。试找出其最小数,并存入MIN单元。
(1)输入所编程序。
COMP: MOV A,#0FFH ;置比较的初始值
MOV R2,#LEN ;置数据块长度
MOV R1,#BLOCK ;置地址指针
LOOP: CLR C
SUBB A,@R1 ;比较
JC NEXT ;若小,则恢复原值
MOV A,@R1
SJMP NEXT1
NEXT: ADD A,@R1
NEXT1: INC R1 ;若大,则取下个数比较
DJNZ : DJNZ R2,LOOP
MOV MN ,A ;存最小数
SJMP $
(2)确定好数据块的起始地址和长度,并在相应的内部RAM单元存入数据,同时作好记录。
(3)单步或断点运行程序,注意循环次数是否等于数据块长度。
(4)观察PC,A和计数单元的变化并作好记录。
(5)验证运行结果。
D试题
填空题(共20分,每题4分)
1、开启微机电源,在软件所在目录键入MD51命令,选择对应串口号,进入集成操作软件环境,如果光标不响应回车命令,按 复位键即可。
2、对源文件汇编无误后,自动生成相应的 .LST文件。
3、用GB命令来连续运行程序。
4、外部RAM与 累加器A间数据传送,使用MOVX @DPTR,A指令。
5、两寄存器交换数据,使用 命令。
二、 程序分析题(共20分,每题10分)
1、(R0)=4BH,(A)=84H,片内RAM(4BH)=7FH,(4BH)=20H
MOV A,@R0 ;7FH?A
MOV @R0,40,40H ;20H?4BH
MOV 40H,A ;7FH?40H
MOV R0,#35H
问执行和程序后,R0、A和4BH、40H单元内容的变化如何?
答 程序执行后(R0)=35H,(A)7FH,(4BH)=20H,(40H)=7FH.
2、设(R0)=7EH,DPTR=10FEH,片内RAM 7FH和7FH两单元的内容分别是FFH和38H,请写出下列程序段的每条指令的执行结果。
INC @R0
INC R0
INC @R0
INC DPTR
INC DPTR
INC DPTR
解 (1)(7EH)=00H
(2)R0=7FH
(3)7FH=39H
(4)DPTR=10FFH
(5)DPTR=1100H
(6)DPTR=1101H
三、编程题(共60分,每题30分)
比较存放在ONE,TWO,TRE三个单元的无符号数,并将小数存放在20H单元中。
输入程序
参考程序
MOV A,ONE
CJNE A,TWO,RR
RR: JC SS
MOV A,TWO
CJNE A,TRE,TT
TT: JC WW
SJMP UU
SS: CJNE A,TRE,VV
VV: JC WW
UU: MOV A,TRE
WW: MOV 20H,A
在ONE,TWO,和TRE三个内部RAM
单步运行,注意PC变化情况,同时检查Cy
检查20H单元的内容,验 是否最小值
修改ONE
设在单片机内部RAM中从STR单元开始存放有一数据块,该数据块以#00H结束,试统计其中为#0FFH的单元个数并存入NUM单元。
(1)输入所编程序。
COUNT: CLR A ;清计数单元
MOV R0,#STR ;置地址指针
LOOP: CJNE #0FFH,LOOP1;数据为#0FFH则计数单元加1
INC A
LOOP1: INC R0
CJNE @R0,#000H,LOOP;数据块取完?
MOV NUM A ;存统计结果
SJMP $
(2)确定好数据块的起始地址,同时在相应的内部RAM单元建立好数据块(此数据块以#00H结束,并使其中若干个单元的内容为#0FFH),同时作好记录。
(3)单步或断点运行程序,注意循环跳出循环时刻。
(4)观察并记录PC,A和计数单元的变化情况。
(5)验证运行结果。
E试题
填空题(共20分,每题4分)
1、开启微机电源,在软件所在目录键入MD51命令,选择对应串口号,进入集成操作软件环境,如果光标不响应回车命令,按 复位键即可。若想进入全屏幕编辑界面,按下F1功能键。
2、汇编完成后,按F3输入文件名回车,对汇编生成的.r03文件进行连接,生成相应的 .HEX 文件。
3、按RESET复位键可清除断点。
4、程序存储器中数据送累加器A,使用指令为MOVC A,@A+DPTR指令。
5、寄存器高4位和低4位交换数据,使用SWAP A指令。
二、程序分析题(共20分,每题10分)
1、设R0=20H,R1=25H,(20H)=80H,(21H)=90H,(22H)=A0H,(25H)=A0H,
(26H)=6 FH,(27H)=76H,下列程序执行程序后,结果如何?
CLR C
MOV R2,#3
LOOP: MOV A,@R0
ADDC A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R2,LOOP
JNC NEXT1
MOV @R0,#01H
SJMP $
NEXT: DEC R0
SJMP $
答 (20H)=(20H)、(21H)=00H、(22H)=17H、(23H)=01H、 CY=1、A=17H、R0=23H、R1=28H
2、设片内RAM中(59H)=50H,执行下列程序段
MOV A,59H
MOV R0,A
MOV @R0,A
MOV A,#25H
MOV 51H,A
MOV 52H,#70H
解 A=25H,(50H)=0,(51H)=25H,(52H)=70H.
三、编程题(共60分,每题30分)
1、根据Rn单元内容(00H—7FH),分别转向程序ROUT00—ROUT7FH
参考程序
输入程序
MOV A,Rn
RL A
MOV DPTR,#JMPTAB
JMP @A+DPTR
JMPTAB:AJMP PROG00
AJMP PROG01
…
AJMP PROGnn
PROG00:MOV 20H,#
SJMP $
…
PROGnn:MOV 20H,#nH
SJMP $
为便于实习,可缩小散转范围,运行前在Rn 中装入的数限定为00H—03H中的某一个。
确定JMPBAB及PROG00—PROG03的地址,并在PROGn处写人处理程序。
单步或断点运行,观察并记录A,DPTR以及PC变化情况。
修改Rn中数据,重做。
2、求平方子程序计算X=a^2+b^2
先建立0~9的平方表(十进制),TAB为表首地址指针。子程序所完成
的功能是用查表的方式求出平方值。计算X=a^2+b^2时只要两次调用子程序分别求出a^2和b^2,然后相加即可。(设X,a,b分别存于内部RAM的ONE,TWO和TRE三个单元中)。
子程序入口:(A)=待查表的数
子程序入口:(A)=平方值
实习步骤
(1)在选定的存区中建立好平方表。
MAIN: MOV A;ONE ;调求平方子程序
ACALL SQR
MOV R1,A
MOV A,TWO
ACALL SQR
ADD A,R1 ;求平方和
MOV TRE,A
SJMP $
SQR: INC A ;修正查表偏移量(入口A)
MOVC A, @A+PC ;查表求平方值(出口A )
RET ;返回
TAB: DB: 0,1,4,9,16 ;平方表
DB: 25,36,49,64,81
(2)输入并调试已编好的子程序,按要求准备如口即在A中装如待查平方的数,独立运行子程序后,检查A中的内容是否为平方值.
(3)输入并调试已遍好的主程序,注意观察子程序的调用和返回情况.
(4)观察并记录运行过程中的子程序的入口,出口及PC和各积存器的变化情况.