答案Word文档格式.docx
《答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《答案Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
(1)输入程序
参考程序
MOVR0,#30H
MOVR1,#40H
MOVR2,#02H
L1:
MOVA,@R0
ADDCA,@R1
DAA
MOV@R0,A
INCR0
INCR1
DJNZR2,L1
CLRA
MOVACC.0,C
(2)在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)输入所编程序。
MOVC,01H
ORLC,02H
ANLC,00H
MOVF0,C;
暂存U*(V+W)的值
MOVC,03H
ANLC,/04H
ORLC,F0
ORLC,/05H
MOV07H,C;
保存结果
(2)部RAM20H单元(位地址00H~07H的位在20H单元)输入某个数据(注意此时各位的状态并做好记录)。
(3)单步或断点运行所编程序,逐步检查Cy及个数据的变化情况(注意检查时也按字节读出,再观察其相应位)。
(4)验证运行结果
(5)改变20H单元的置数,重做。
B试题
1、我们使用的单片机试验箱型号是TDN-MI。
2、输入文件后,按F2保存程序,此时文件扩展名是.ASM。
3、提示装载完毕后,使用U000命令进行反汇编,检查程序是否正确装入。
4、将30H单元的内容#67H送R1,用最少的指令实现,指令为:
MOV30H,#67H;
MOVR1,30H。
5、弹出操作,使用POPACC指令。
二、程序分析题(共20分,每题10分)
1、程序如下
2506HM5:
MOVSP,#58H;
2509H MOV10H,0FH;
250CHMOV11H,#0BH;
250FHACALLXHD;
2511HMOV20H,11H
2514HM5A:
SJMPM5A
XHD:
PUSH10H
PUSH11H
POP10H
POP11H
RET
问:
(1)执行POP10H后堆栈内容?
(2)执行M5A:
SJMP M5A后,(SP)=?
(20H)=?
解
1)执行ACALL指令时:
PC+2➞PC:
(SP)+1➞SP PC0~PC7➞(SP)
(SP)+1➞SP PC8~PC15➞(SP)
2) 子程序返回时,点地址弹出,SP=58H
所以 (1)执行POP 10H后,堆栈内容如左图所示.
5C0B
5B0F
5A25
5911
58
(2)执行M5A:
SJMP M5A后,(SP)=58H,
(20H)=0FH
2、解读下列程序,然后填写有关寄存器内容
(1) MOVR1,#48H
MOV48H,#51H
CJNE@R1,#51H,00H
JNCNEXT1
MOVA,#0FFH
SJMPNEXT2
NEXT:
MOVA,#0AAH
NEXT2:
累加器A=()
(2)MOVA,#0FBH
MOVPSW,#10H
ADDA,#7FH
(1) MOVR1,#48H;
48H送R1
MOV48H,#51H;
51H送➞(48H)
CJNE@R1,#51H,00H;
(R1)GN#51相比,相等,顺序执行
JNCNEXT1;
没借位转,NEXT1
MOVA,#0FFH;
有借位,FFH送A
NEXT1MOVA,#0AAH;
0AAH送A
NEXT2SJMPNEXT2
累加器A=(0AAH)
(2)MOVA,#0FBH
MOVPSW,#10H00010000送PSW
ADDA,#7FH
由11111011
+01111111
____________
101111010
所以,有进位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
0
三、编程题(共60分,每题30分)
1、将片内RAM-2单元(如20H)的内容分成两段,并将它们分别存入2单元和3单元。
(高位清零)。
(1)输入程序。
参考程序:
MOVR0,#21H
MOVA,20H
ANLA,#0FH
SWAPA
MOV@R0
(2)在某单元(如20H)存入待分字的某数(如5BH)。
(3)单步或带断点运行该段程序。
(4)运行过程中注意检查程序的变化,并在最后检查(21H)=,
(5)(22H)=。
2、编程实现字符串长度统计:
设在单片机内RAM中从STR单元开始有一字符串《以ASCII码存放》,该字符串以$<
其值为24H>
结束,试统计该字符串的长度,其结果存于LON单元。
(1)输入所编程序
START:
CLRA;
计数单元清零
MOVR0,#STR
LOOP:
CJNER0,#24H,NEXT;
判断字符串是否结束
SJMPCOMP
NEXT:
INTA
INCR0
SJMPLOOP
COMP:
MOVLON,A;
将长度存入LON单元
SJMP$
(2)在以STR为首的地址内部RAM单元开始存放待统计长度的数据块(自设),并以#24作为数据块的结束标志。
(3)单步或断点运行所编程序,注意观察每次转移后PC及统计长度单元LON的变化,并做好记录。
(4)验证运行结果。
(5)改变数据块长度,重做。
C试题
二、填空题(共20分,每题4分)
1、开启微机电源,在软件所在目录键入MD51命令,选择对应串口号,进入集成操作软件环境。
2、对源文件进行汇编,生成浮动目标文件,文件扩展名是.R03。
3、用B命令设置断点。
4、将立即数3052H送数据指针DPTR,使用MOVDPTR,#3052H指令。
5、两寄存器交换数据,使用XCHA,R4指令。
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
MOV30H,A;
A4H➞(30H)
END:
SJMPEND
答执行程序后,(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
a)编程实现下列逻辑运算Z=(M+N)*(O+P)。
设M,N,O,P为片内RAM30H—33H单元,输出结果单元Z地址为34H。
(1)将下列程序输入到实习装置
START:
MOVA,M
XRLA,N
MOVB,A
MOVA,O
ORLA,P
ANLA,B
MOVZ,A
(2)在M—P(30H—33H单元)装入待进行逻辑运算的数据(自设)。
(4)运行过程中注意检查程序的变化,并在最后验证(Z)是否与理论值相符。
2、设从内存BLOCK单元开始存放一无符号数的数据块,其长度为LEN。
试找出其最小数,并存入MIN单元。
置比较的初始值
MOVR2,#LEN;
置数据块长度
MOVR1,#BLOCK;
置地址指针
CLRC
SUBBA,@R1;
比较
JCNEXT;
若小,则恢复原值
MOVA,@R1
SJMPNEXT1
ADDA,@R1
NEXT1:
INCR1;
若大,则取下个数比较
DJNZ:
DJNZR2,LOOP
MOVMN,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、两寄存器交换数据,使用命令。
1、(R0)=4BH,(A)=84H,片内RAM(4BH)=7FH,(4BH)=20H
MOVA,@R0;
7FH➞A
MOV@R0,40,40H;
20H➞4BH
MOV40H,A;
7FH➞40H
MOVR0,#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 DPTR
解 (1)(7EH)=00H
(2)R0=7FH
(3)7FH=39H
(4)DPTR=10FFH
(5)DPTR=1100H
(6)DPTR=1101H
1、比较存放在ONE,TWO,TRE三个单元的无符号数,并将小数存放在20H单元中。
MOVA,ONE
CJNEA,TWO,RR
RR:
JCSS
MOVA,TWO
CJNEA,TRE,TT
TT:
JCWW
SJMPUU
SS:
CJNEA,TRE,VV
VV:
UU:
MOVA,TRE
WW:
MOV20H,A
(2)在ONE,TWO,和TRE三个内部RAM
(3)单步运行,注意PC变化情况,同时检查Cy
(4)检查20H单元的内容,验是否最小值
(5)修改ONE
2、设在单片机内部RAM中从STR单元开始存放有一数据块,该数据块以#00H结束,试统计其中为#0FFH的单元个数并存入NUM单元。
COUNT:
清计数单元
MOVR0,#STR;
LOOP:
CJNE#0FFH,LOOP1;
数据为#0FFH则计数单元加1
INCA
LOOP1:
INCR0
CJNE@R0,#000H,LOOP;
数据块取完?
MOVNUMA;
存统计结果
SJMP$
(2)确定好数据块的起始地址,同时在相应的内部RAM单元建立好数据块(此数据块以#00H结束,并使其中若干个单元的内容为#0FFH),同时作好记录。
(3)单步或断点运行程序,注意循环跳出循环时刻。
(4)观察并记录PC,A和计数单元的变化情况。
E试题
四、填空题(共20分,每题4分)
若想进入全屏幕编辑界面,按下F1功能键。
2、汇编完成后,按F3输入文件名回车,对汇编生成的.r03文件进行连接,生成相应的.HEX文件。
3、按RESET复位键可清除断点。
4、程序存储器中数据送累加器A,使用指令为MOVCA,@A+DPTR指令。
5、寄存器高4位和低4位交换数据,使用SWAPA指令。
1、设R0=20H,R1=25H,(20H)=80H,(21H)=90H,(22H)=A0H,(25H)=A0H,
(26H)=6FH,(27H)=76H,下列程序执行程序后,结果如何?
MOVR2,#3
LOOP:
ADDCA,@R1
MOV@R0,A
INCR1
DJNZR2,LOOP
MOV@R0,#01H
NEXT:
DECR0
答(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.
1、根据Rn单元内容(00H—7FH),分别转向程序ROUT00—ROUT7FH
MOVA,Rn
RLA
MOVDPTR,#JMPTAB
JMP@A+DPTR
JMPTAB:
AJMPPROG00
AJMPPROG01
…
AJMPPROGnn
PROG00:
MOV20H,#
PROGnn:
MOV20H,#nH
(2)为便于实习,可缩小散转范围,运行前在Rn中装入的数限定为00H—03H中的某一个。
(3)确定JMPBAB及PROG00—PROG03的地址,并在PROGn处写人处理程序。
(4)单步或断点运行,观察并记录A,DPTR以及PC变化情况。
(5)修改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:
MOVA;
ONE;
调求平方子程序
ACALLSQR
MOVR1,A
MOVA,TWO
ADDA,R1;
求平方和
MOVTRE,A
SQR:
INCA;
修正查表偏移量(入口A)
MOVCA,@A+PC;
查表求平方值(出口A)
RET;
返回
TAB:
DB:
0,1,4,9,16;
平方表
25,36,49,64,81
(2)输入并调试已编好的子程序,按要求准备如口即在A中装如待查平方的数,独立运行子程序后,检查A中的内容是否为平方值.
(3)输入并调试已遍好的主程序,注意观察子程序的调用和返回情况.
(4)观察并记录运行过程中的子程序的入口,出口及PC和各积存器的变化情况.