第3章MCS51系列单片机的指令系统和汇编语言程序Word文档下载推荐.docx
《第3章MCS51系列单片机的指令系统和汇编语言程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第3章MCS51系列单片机的指令系统和汇编语言程序Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
(2)MOV@R0,A
(3)MOVA,廿90H
(4)MOVA,90H
(5)MOV80H,廿81H
(6)MOVX@R0,A
(7)PUSHA
(8)SWAPA
(g)XCHA,R0
1.15已知:
(A)=02H,(Rl)=7FH,(DPTR)=2FFCH,片内RAM(7FH)=70H,片外RAM(FFEH)=llH,ROM(FFEH)=64H,试分别写出下列指令的机器码及执行各条指令的结果。
(l)MOVA,@Rl
(2)MOVX@DPTR,A
(3)MOVCA,@A+DPTR
(4)XCHDA,@Rl
1.16已知:
(A)=78H,(Rl)=78H,(B)=04H,C=l,片内RAM(78H)=DDH,片内RAM(80H)=6CH,试分别写出下列指令的机器码及执行各条指令的结果(如涉及标志位,也要写出)。
(l)ADDA,@Rl
(2)ADDCA,78H
(3)SUBBA,#77H
(4)INCRl
(5)DEC78H
(6)MULAB
(7)DIVAB
(8)ANL78H,#78H
(9)ORLA,#0FH
(10)XRL80H,A
17已知:
C=0,累加器和Rl内容分别为无符号数甲和乙,间:
执行指令ADDCA,
Rl后,进位位、符号位和溢出位将各为何值?
累加器的内容为何,该如何读取?
(1)甲为02H,乙为FFH
(2)甲为02H,乙为F0H
18已知:
C=0,累加器和Rl内容分别为补码表示的带符号数甲和乙,间:
执行指令
ADDCA,Rl后,进位位、符号位和溢出位将各为何值?
(1)甲为78H,乙为05H
(2)甲为88H,乙为FBH
(3)甲为78H,乙为69H
(4)甲为88H,乙为97H
(5)甲为7FH,乙为FEH
(6)甲为7FH,乙为80H
19已知:
执行指令STTBBA,Rl
后,进位位、符号位和溢出位将各为何值?
(2)甲为FFH,乙为02H
20已知:
C=0,累加器和Rl内容分别为补码表示的带符号数甲和乙,问:
SUBBA,R1后,进位位、符号位和溢出位将各为何值?
(1)甲为02H,乙为0lH
(2)甲为0lH,乙为02H
(3)甲为FFH,乙为FFH
(4)甲为FEH,乙为FFH
(5)甲为04H,乙为FFH
(6)甲为FFH,乙为04H
(7)甲为7FH,乙为ClH
(8)甲为ClH,乙为7FH
21请对下列各组数分别计算"
与"
、"
或"
异或"
的结果:
(1)10011010和00001111
(2)11010011和01011010
(3)11001100和00110011
(4)10101010和11111111
22为达到下列要求,请说明应采用何种逻辑操作、采用什么操作数。
要求不得改变各未涉及位的内容。
(1)使累加器的最低位置"
1"
(2)清除累加器的高4位
(3)使A.2和A.3置"
(4)清除A·
.3、A.4、A.5、A.6
93请总结运用"
指令对字节内容进行修改的各种办法。
94写出下列各条指令的机器码,并逐条写出依次执行每一条后的结果和PSw的内容:
(l)CLRA
(2)MOVA,#9BH
(3)MOvB,#0AFH
(4)ADDA,B
3,1·
95请详细说明RET和RETI这两条指令的区别。
96已知:
(A)=0,(Rl)=40H.片内RAM(30H)=0lH,FIRST=2000H,SECOND
=2050H,试分别写出下列指令的机器码及执行各条指令的结果:
(l))FIRST:
AIMPSECOND
(2)FIRST:
LIMPSECOND
(3)FIRST.SIMPSECOND
(4)FIRST.JZSECOND
C5)FIRST:
CINEA,30H,SECOND
(6)FIRST:
LCALLSECOND
(7)SECOND:
DJNZRl,FIRST
97已知:
P1.7=1,A.0=0,C=l,FIRST=l000H,SECOND=l020H,试分别写出
下列指令的机器码及执行各条指令的结果:
(l)MOV26H,C
(2)CPLA.0
(3)CLRPl.7
(4)ORLC,/P1.7
(5)FIRST:
lCSECOND
JNBA.0,SECOND
JBCPl.7,FIRST
28要选用工作寄存器3组,请采用三种不同的指令实现之。
29列举三种能使累加器A内容清零的指令,并比较其优、缺点。
3016位地址共涉及两个字节,请统计在哪些场合按照"
先低后高"
规则处理,哪些场合却按照"
先高后低"
规则。
31分组讨论:
(1)算术操作类指令对标志位的影响。
(2)逻辑操作类指令对字节内容的修改。
(3)程序转移类指令长转移、绝对转移、短转移、绝对转移与相对转移、无条件转移与
条件转移的区分;
绝对转移指令机器码与转移范围的确定;
相对转移指令相对偏移量的计算;
散转指令的查表转移;
调用与返主指令的堆栈操作;
比较转移指令的格式与功用。
(4)位操作类指令中直接寻址位的表示方式。
39请统计MCS一51系列单片机有哪些指令可用于数据输入与输出?
33请统计MCS一51系列单步机有哪些指令可用于修改并行I/O口端口寄存器的内
容?
34综述MCS一51系列单片机指令系统的特点、所长和所短。
已学Z80的学生,试比较两种指令系统的优、缺点。
35请按MCS一51系列单片机指令的大类,分别统计其单字节、双字节、三字节指令数和单周期、双周期、四周期指令数。
36试按图3-1所示的格式,整理出MCS一51系列单片机各种指令的速查表(由机器码的第一字节查指令,或倒查)。
1.37请解释下列名词:
机器码助记符操作码操作数源程序
目标程序汇编指令汇编程序汇编语言
汇编语言程序汇编机器汇编人工汇编
1.38经过汇编后,下列各条语句的标号将是什
么数值?
ORG2000H
TABLE:
DSl0
WORD:
DSl5,20,25,30
FANG:
EQUl000H
BEGIN:
MOVA,R0
39下列程序段经汇编后,从2000H开始的各
有关存储单元的内容将是什么?
TAB:
DS5
DB10H,10
DW2100H
ORG2050H
DWTAB
DB"
WORK"
40下列程序段经汇编后,从1000H开始的各有关存储单元的内容将是什么?
ORGl000H
TABl:
EQU1234H
TAB2:
EQU3000H
START"
DWTABl,TAB2
2汇编语言程序
2·
1综述汇编语言程序的书写格式。
2要将片内RAM0FH单元的内容传送去专用寄存器B,对OFH单元的寻址可有三种
办法:
(l)R寻址
(2)R间址(3)direct寻址
请分别编出相应程序,比较其字节数、机器周期数和优缺点。
3设(R0)=7EH,(DPTR)=l0FEH
片内RAM7E单元的内容为0FFH
7F单元的内容为38H
试为下列程序的每条指令注释其执行结果。
INC@R0
INCR0
INCDPTR
TNCDPTR
4试编程:
引用"
运算,判断某8位二进制数是奇数还是偶数。
5试编程:
运算,使任意8位二进制数
的符号位必为"
。
6请思考:
运算,怎样可使一带符号
数的符号位改变、数据位不变;
怎样可使该数必然变
"
0"
7要选择工作寄存器组,可有几种编程办法?
8某压力测试的线性处理程序如下,如A/D转换器
的输出为02H,问执行程序后(A)=?
MOVP1,#0FFH
MOVA,P1
MOVCA,@A+PC
DB00H
DB01H
DB02H
;
DBFEH
END
9设ROM、片内RAM、RAM各有关单元的内容示如下图,问执行下列程序段后(A)=?
0000AJMP030H
ORG0030H
0030MOVR0,#32H
MOVA,@R0
MOVR1,A
MOVXA,@R1
MOVCA,@A+DPTR
10若在片内RAM30H单元中有2位压缩的BCD码95H,间执行下列程序后,片内
RAM30H单元的内容是什么?
31H、32H的内容又是什么?
并写出BCD码十进制调整的过程。
MOVR0,#30H
MOVA,@R0
ANLA,#0FH
MOVR3,A
SWAPA
ADDA,R3
DAA
MOV@R0,A
INCR0
MOVA,R3
ANLA,#0F0H
MOV@R0,A
RET
11有程序如下:
CLRC
CLRRS1
CLRRS0
MOVA,#38H
MOVR0,A
MOV29H,R0
SETBRS0
MOVRl,A
MOV26H,A
MOV28H,C
请:
(1)区分哪些是位操作指令?
哪些是字节操作指令?
(2)写出程序执行后,片内RAM有关单元的内容。
(3)译成机器码。
(4)按汇编语言程序的标准格式书写,要求有各条指令的存放地址和必要的注释。
(5)如fOSC=l2MHz,计算这段程序的执行时间。
12试编程:
将两个4位二进制数并存于一个字节。
13试编程:
将存于片内RAM40H、41H单元中的16位数求补,结果放回原单元(低
字节放40H单元)。
14试编程:
有两双字节压缩的BCD码数相加,设该两待加数分别按先低后高原则存放在30H、31H和40H、41H单元,和要求放回30H、31H单元。
15试编程:
将累加器A内容低4位送片外RAM7AH单元,高4位送片外RAM7BH
单元,7AH、7BH单元的高4位均清零。
16试编程:
将片内RAM50H、51H单元两个无符号数中较小的数存于60H单元。
17试编程:
将片内RAM60H~69H单元中的l0个数相加,和的低8位存入7EH,高8位存入7FH。
18试编程:
统计从片内RAM60H单元起所存60个数中"
的个数,并存入工作寄
存器R7。
19试编程:
将ROM中自2000H单元起的100个数,按序移至片外RAM自2080H单
元起的内存区间去。
20试编程:
将ROM中以TAB为初址的32个单元的内容依次传送到片外RAM以
00H为初址的区域去(规定用查表指令)。
21试编写一段子程序,将片外RAM20H单元中压缩的BCD码转换成共阴的七段笔划信息码,存于片内RAM20H、21H单元,以待显示(七段笔划信息码的最高位为0)。
22请编一将A中内容乘10的程序,要求:
(1)不可用MUL指令
1)乘积≤2552)乘积﹥255
(2)可用MUL指令
1)乘积≤2552)乘积>255
规定乘积放在片内RAM的30H单元或30H、0lH单元。
23教材例3·
4是按总和仍为两位BCD码、无溢出进行编程的;
如有溢出,请重编程序。
24设教材例3·
6程序中的多字节数为010000H,试剖析程序执行的经过与结果。
25教材例3·
7如不是两个数、而是n个数,请重编程序。
(如有二数相等,不必建起标志位)。
26CJNE指令执行何种操作?
上述例3·
7示出的程序为什么不用这一指令?
如改用这一指令,程序将作何种改动?
并请将重编后的汇编语言源程序译成机器码。
27设晶振为12MHz,请详细剖析(包括计算)下列程序段的性质和用途:
0B07963DELAY:
MOVRl,#63H
0B200DLl:
NOP
0B300NOP
0B4D9FCDJNZRl,DLl
0B622RET
28请编写一个能延时1.5ms的子程序,要列出计算。
Tcy=1us。
29请编写两段子程序,分别用指令延时法和定时器定时l0ms,设晶振为12MHz。
30设晶振为12MHz,请编写二段子程序,分别用指令延时法和定时器实现30ms延时。
31某单片机系统:
fOSC=l2MHz,定/计0用于20ms定时,定/计
1用于100次计数,定/计0和定/计1均要求重复工作。
问:
(1)外部计数脉冲应从何引脚输入?
(2)试编能达到上述要求的程序。
32请回答:
教材例3·
19为什么按"
TH0、TL0、TH0"
的次序读,
却不按"
TL0、TH0、TL0"
的次序读。
33阅读下列程序,
(1)说明该程序的功能。
(2)填出所缺的机器码。
(3)试修改程序,使片内RAM的内容达到右下图所示的结果。
7A__MOVR2,#0AH
____MOVR0,#50H
E4CLRA
E6LOOP:
MOV@R0,A
08INCR0
DA__DJNZR2,LOOP
DONE:
34阅读下列程序,并要求:
(1)说明程序的功能。
(2)写出涉及的寄存器及片内RAM单元的最后结果。
MOVR0,#40H
ADDA,@R0
MOV@R0,A
CLRA
ADDCA,#0
3·
35同上题要求,程序如下
MOVA,61H
MOVB,#02H
MULAB
ADDA,62H
MOV63H,A
ADDCA,B
MOV64H,A
36同上题要求,程序如下
CLRC
MOVA,R3
RRCA
MOVR3,A
MOVA,R4
MOVR4,A
37同上题要求,程序如下:
MOVR0,#31H
SWAPA
DECR0
XCHDA,@R0
MOV40H.A
38同上题要求,程序如下:
MOVR0,#60H
MOVA,#40H
MOVX@R0,A
39同上题要求,程序如下:
MOVRl,#30H
MOVXA,@Rl
MOV@Rl,A
TNCRl
MOV@Rl,A
2.40
同上题要求,程序如下:
ABS:
MOVR0,#38H
MOVRl,#48H
MOVR2,#06H
LOOP:
JNBA,7,NEXT
CPLA
SETBA.7
INCA
NEXT:
INCRl
DJNZR2,LOOP
DONE:
41阅读下列程序,写出程序执行后片外RAM8008H和800AH单元以及DPTR、Rl、A的内容。
ORG0100H
START:
MOVDPTR,#BLK1
MOVR2,#4
MOVR1,#30H
MOVR0,#30H
LOP1:
MOVXA,@DPTR
MOV@R1,A
INCR1
DJNZR2,LOP1
LOP2:
ADDCA,@R0
DAA
DJNZR2,LOP2
MOVR2,#4
LOPS:
MOVA,@R0
MOVX@DPTR.A
DJNZR2,LOP3
HERE:
SJMPHERE
ORG8000H
BLKl:
DB96H,74H,32H,l6H
BLK2:
DB65H,94H,87H,29H
BLK3:
DS4
42阅读下列程序,写出程序执行后片外RAM7008H、700AH和700FH单元以及DPTR、Rl的内容。
ORG0200H
MOVDPTR,#BLOCK
MOVRl,#40H
MOVR2,#08H
MOVR3,#00H
MOVR4,#00H
CHODEV:
MOVXA,@DPTR
MOVR5,A
ANLA,#0lA
JNZDD
MOVA,R5
INCR3
SJMPNEXT
DD:
MOVA,R5
MOV@Rl,A
INCR1
INCR4
DJNZR2,CHODEV
MOVR0,#30H
EVMOV:
MOVX@DPTR,A
DJNZR3,EVMOV
ODMOV:
MOVA,@Rl
MOVX@DPTR,A
DJNZR4,ODMOV
ORG7000H
BLOCKDB69H,47H,32H,61H
DB56H,49H,27H,78H
BUFFERlDS3
BUFFER2DS5
43阅读下列程序,写出程序执行后片外RAM8003H和8005H单元以及DPTR、R2,R0的内容。
ORG0200H
MOVRl,#30H
MOVR2,#2
MOVDTPR,#BUFFER
HETOAS:
ADDA,#90H
ADDCA,#40H
MOV@Rl,A
INCDPTR
DJNZR2,HETOAS
MOVR2,#4
LOOP:
MOVX@DPTR,A
SJUMPHERE
BUFFERDB2AH,49H
BLOCKDS4
44阅读下列程序,写出程序执行后片外RAM2002H和200l3H单元以及DPTR、SP、R3的内容。
注意:
本程序在RESET后执行
MOVDPTR,#DAT
MOVR0,A
ANLA,#0FH
ACALLBTOA
MOVR4,A
MOVA,R0
MOVR5,A
MOVRl,A
MOVR6,A
MOVA,R