第3章 MCS一51系列单片机的指令系统
和汇编语言程序
3·1汇编指令
3·1·1请阐明机器语言、汇编语言、高级语言三者的主要区别,进一步说明为什么这三种语言缺一不可。
3·1·2请总结:
(1)汇编语言程序的优缺点和适用场合。
(2)学习微机原理课程时,为什么一定要学汇编语言程序?
3·1·3MCS一51系列单片机的寻址方式有哪儿种?请列表分析各种寻址方式的访问对象和
寻址范围。
3·1·4要访问片内RAM,可有哪几种寻址方式?
3·1·5要访问片外RAM,有哪几种寻址方式?
3·1·6要访问ROM,又有哪几种寻址方式?
3·1·7试按寻址方式对MCS一51系列单片机的各指令重新进行归类(一般根据源操作数寻址方式归类,程序转移类指令例外)。
3·1·8试分别针对51子系列和52子系列,说明MOV A,direct指令和MOV A,@Rj
指令的访问范围。
3·1·9传送类指令中哪几个小类是访问RAM的?哪几个小类是访问ROM的?为什么访问
ROM的指令那么少?CPU访问ROM多不多?什么时候需要访问ROM?
3·1·10试绘图示明MCS一51系列单片机数据传送类指令可满足的各种传送关系。
3·1·11请选用指令,分别达到下列操作:
(1)将累加器内容送工作寄存器R6.
(2)将累加器内容送片内RAM的7BH单元。
(3)将累加器内容送片外RAM的7BH单元。
(4)将累加器内容送片外RAM的007BH单元。
(5)将ROM007BH单元内容送累加器。
3·1·12 区分下列指令的不同功能:
(l)MOV A,#24H 和MOV A.24H
(2)MOV A,R0和MOV A,@R0
(3)MOV A,@R0和MOVX A,@R0
3·1·13设片内RAM 30H单元的内容为40H;
片内RAM 40H单元的内容为l0H;
片内RAM l0H单元的内容为00H;
(Pl)=0CAH。
请写出下列各指令的机器码和执行下列指令后的结果(指各有关寄存器、RAM单元和端口的
内容)。
MOV R0,#30H
MOV A,@R0
MOV RI,A
MOV B,@Rl
MOV @R0,Pl
MOV P3,Pl
MOV l0H,#20H
MOV 30H,l0H 3·1.14 已知:(A)=35H,(R0)=6FH,(Pl)=FCH,(SP)=C0H,试分别写出下列指令的机器码及执行各条指令的结果:
(l)MOV R6,A
(2)MOV @R0,A
(3)MOV A,廿90H
(4)MOV A,90H
(5)MOV 80H,廿81H
(6)MOVX @R0,A
(7)PUSH A
(8)SWAP A
(g)XCH A,R0
3·1.15 已知:(A)=02H,(Rl)=7FH,(DPTR)=2FFCH, 片内RAM(7FH)=70H,片外RAM
(FFEH)=llH,ROM (FFEH)=64H,试分别写出下列指令的机器码及执行各条指令的结果。
(l)MOV A,@Rl
(2)MOVX @DPTR,A
(3)MOVC A,@A+DPTR
(4)XCHD A,@Rl
3·1.16 已知:(A)=78H,(Rl)=78H,(B)=04H,C=l,片内RAM (78H)=DDH,片内RAM
(80H)=6CH,试分别写出下列指令的机器码及执行各条指令的结果(如涉及标志位,也要写出)。
(l)ADD A,@Rl
(2)ADDC A,78H
(3)SUBB A,#77H
(4)INC Rl
(5)DEC 78H
(6)MUL AB
(7)DIV AB
(8)ANL 78H,#78H
(9)ORL A,#0FH
(10)XRL 80H,A
3·1·17 已知:C=0,累加器和Rl内容分别为无符号数甲和乙,间:执行指令ADDC A,
Rl后,进位位、符号位和溢出位将各为何值?累加器的内容为何,该如何读取?
(1)甲为02H,乙为FFH
(2)甲为02H,乙为F0H
3·1·18 已知:C=0,累加器和Rl内容分别为补码表示的带符号数甲和乙,间:执行指令
ADDC A,Rl后,进位位、符号位和溢出位将各为何值?累加器的内容为何,该如何读取?
(1)甲为78H,乙为05H
(2)甲为88H,乙为FBH
(3)甲为78H,乙为69H
(4)甲为88H,乙为97H
(5)甲为7FH,乙为FEH
(6)甲为7FH,乙为80H
3·1·19 已知:C=0,累加器和Rl内容分别为无符号数甲和乙,间:执行指令STTBB A,Rl
后,进位位、符号位和溢出位将各为何值?累加器的内容为何,该如何读取? (1)甲为02H,乙为FFH
(2)甲为FFH,乙为02H
3·1·20 已知:C=0,累加器和Rl内容分别为补码表示的带符号数甲和乙,问:执行指令
SUBB A,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
3·1·21请对下列各组数分别计算"和"、"或"、"异或"的结果:
(1)10011010和00001111
(2)11010011和01011010
(3)11001100和00110011
(4)10101010和11111111
3·1·22 为达到下列要求,请说明应采用何种逻辑操作、采用什么操作数。要求不得改变各未涉及位的内容。
(1)使累加器的最低位置"1"
(2)清除累加器的高4位
(3)使A.2和A.3置"1"
(4)清除A·.3、A.4、A.5、A.6
3·1·93请总结运用"和"、"或"、"异或"指令对字节内容进行修改的各种办法。
3·1·94 写出下列各条指令的机器码,并逐条写出依次执行每一条后的结果和PSw的内容:
(l)CLR A
(2)MOV A,#9BH
(3)MOv B,#0AFH
(4)ADD A,B
3,1·95请详细说明RET和RETI这两条指令的区别。
3·1·96 已知:(A)=0,(Rl)=40H.片内RAM(30H)=0lH,FIRST=2000H,SECOND
=2050H,试分别写出下列指令的机器码及执行各条指令的结果:
(l))FIRST:AIMP SECOND
(2)FIRST:LIMP SECOND
(3)FIRST.SIMP SECOND
(4)FIRST.JZ SECOND
C5)FIRST:CINE A,30H,SECOND
(6)FIRST:LCALL SECOND
(7)SECOND:DJNZ Rl,FIRST
3·1·97 已知:P1.7=1,A.0=0,C=l,FIRST=l000H,SECOND=l020H,试分别写出
下列指令的机器码及执行各条指令的结果:
(l)MOV 26H,C
(2)CPL A.0 (3)CLR Pl.7
(4)ORL C,/P1.7
(5)FIRST:lC SECOND
(6)FIRST:JNB A.0,SECOND
(7)SECOND:JBC Pl.7,FIRST
3·1·28要选用工作寄存器3组,请采用三种不同的指令实现之。
3·1·29列举三种能使累加器A内容清零的指令,并比较其优、缺点。
3·1·30 16位地址共涉及两个字节,请统计在哪些场合按照"先低后高"规则处理,哪些场合却按照"先高后低"规则。
3·1·31分组讨论:
(1)算术操作类指令对标志位的影响。
(2)逻辑操作类指令对字节内容的修改。
(3)程序转移类指令长转移、绝对转移、短转移、绝对转移和相对转移、无条件转移和
条件转移的区分;绝对转移指令机器码和转移范围的确定;相对转移指令相对偏移量的计算;
散转指令的查表转移;调用和返主指令的堆栈操作;比较转移指令的格式和功用。
(4)位操作类指令中直接寻址位的表示方式。
3·1·39请统计MCS一51系列单片机有哪些指令可用于数据输入和输出?
3·1·33 请统计MCS一51系列单步机有哪些指令可用于修改并行I/O口端口寄存器的内
容?
3·1·34综述MCS一51系列单片机指令系统的特点、所长和所短。已学Z80的学生,试比较两种指令系统的优、缺点。
3·1·35请按MCS一51系列单片机指令的大类,分别统计其单字节、双字节、三字节指令数和单周期、双周期、四周期指令数。
3·1·36试按图3-1所示的格式,整理出MCS一51系列单片机各种指令的速查表(由机器码的第一字节查指令,或倒查)。
3·1.37请解释下列名词:
机器码 助记符 操作码 操作数 源程序 目标程序 汇编指令 汇编程序 汇编语言
汇编语言程序 汇编 机器汇编 人工汇编
3·1.38经过汇编后,下列各条语句的标号将是什
么数值?
ORG 2000H
TABLE: DS l0
WORD: DS l5,20,25,30
FANG: EQU l000H
BEGIN:MOV A,R0
3·1·39下列程序段经汇编后,从2000H开始的各
有关存储单元的内容将是什么? ORG 2000H
TAB: DS 5
DB 10H, 10
DW 2100H
ORG 2050H
DW TAB
DB "WORK"