单片机的指令系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序段执行的结果:累加器A和寄存器B的内容通过堆栈进行了交换。
13、已知(A)=7AH,(R0)=30H,(30H)=A5H,(PSW)=80H。请 填写各条指令单独执行后的结果。
(1)XCH A,R0 (2)XCH A,30H (3)XCH A,@R0 (4)XCHD A,@R0 (5)SWAP A (6)ADD A,R0 (7)ADD A,30H (8)ADD A,#30H (9)ADDC A,30H (10)SUBB A,30H (11)SUBB A,#30H
2、80C51单片机的指令系统具有哪些特点?
答: 80C51单片机的指令系统容易理解和阅读。只要熟记代表33种功能的42种助记符即可。 有的功能如数据传送,可以有几种助记符,如MOV、MOVC、MOVX。而指令功能助记符与操作数各 种寻址方式的结合,共构造出111种指令,而同一种指令所对应的操作码可以多至8种(如指令 中Rn对应寄存器R0~R7)。
例如:
INC R7
;R7的内容为操作数,加1后再送回R7
(4)寄存器间接寻址。在指令中给出的寄存器内容是操作数的地址,从该地址中取出的才
是操作数。可以看出,在寄存器寻址方式中,寄存器中存放的是操作数;而在寄存器间接寻址
方式中,寄存器中存放的则是操作数的地址。
寄存器间接寻址须以寄存器符号名称的形式表示,为了区别寄存器寻址和寄存器间接寻
答:结果如下:
MOV SP,#60H
;(SP)=60H
MOV A,#88H
;(A)=88H
MOV B,#0FFH
;(B)=FFH
PUSH Acc
;(SP)=61H,;(61H)=88H
PUSH B
;(SP)=62H,;(62H)=FFH
POP Acc
;(A)=FFH,;(SP)=61H
POP B
;(B)=88H,;(SP)=60H
14、已知(30H)=40H,(40H)=10H,(10H)=00H,(P1) =CAH,写出执行以下程序段后有关单元的内容。
MOV R0,#30H MOV A,@R0 MOV R1,A MOV B,@R1 MOV @R1,P1 MOV A,@R0 MOV 10H,#20H MOV 30H,10H
答:有关单元的内容如下:
MOV A,#55H
;(A)=55H
ANL A,#0FFH
;(A)=55H
ORL 20H,A
;(20H)=FFH
6、若访问外部RAM单元,可使用哪些寻址方式?
答:访问外部RAM单元的惟一寻址方式是寄存器间接寻址方式。片外RAM的64KB单元,使用 DPTR作为间址寄存器,其形式为@DPTR,例如“MOVX A,@DPTR”的功能是把DPTR指定的片外RAM 单元的内容送累加器A。
片外RAM低256个单元,除了可使用DPTR作为间址寄存器外,也可使用R0或R1作为间址寄存 器。例如“MOVX A,@R0”即把R0指定的片外RAM单元的内容送累加器A。
另外,对于52系列单片机,片内RAM有256个单元,低128个单元寻址 方式与51系列相同,而高128个单元(即地址为80H~FFH)只能采用R0或 R1的寄存器间接寻址方式。
8、若访问程序存储器,可使用哪些寻址方式?
答:访问程序存储器可使用的寻址方式有立即寻址方式、变址寻址 方式和相对寻址方式三种。立即寻址是指在指令中直接给出操作数。变 址寻址方式只能对程序存储器进行寻址,或者说这是专门针对程序存储 器的寻址方式。相对寻址方式是为实现程序的相对转移而设立的。这三 种寻址方式所得到的操作数或操作数地址都在程序存储器中。
BCD码采用4位二进制数编码,并且只采用了其中10个编码,即 0000~1001,分别代表BCD码0~9,而1010~1111为无效码。当两个BCD码 相加结果大于9时,说明已进入无效编码区;当两个BCD码相加结果有进 位时,说明已跳过无效编码区。若结果进入或跳过无效编码区,则结果 是错误的,相加结果均比正确结果小6(差6个无效编码)。
目的地址=(转移指令所在地址+转移指令字节数)+rel
例如:
பைடு நூலகம்
SJMP 80H
;80H为程序转移的偏移量,即-128。当前PC值减去128后即为转移
;地址
(6)变址寻址。以DPTR或PC作基址寄存器,累加器A作变址寄存器,以两者内容相加形成
的16位程序存储器地址作为操作数地址。又称“基址寄存器+变址寄存器间接寻址”。变址寻址
方式只能对程序存储器进行寻址。
例如:
MOVC A,@A+DPTR
;功能是把DPTR和A的内容相加,所得到的程序存储器地址单
;元的内容送A
(7)位寻址。80C51系列单片机有位处理功能,可以对数据位进行操作,因此,就有相应
的位寻址方式。位寻址的寻址范围:
片内RAM中的位寻址区。
可位寻址的特殊功能寄存器位。
4、简述80C51的指令寻址方式,并举例说明。
答:执行任何一条指令都需要使用操作数,寻址方式就是在指令中给出的寻找操作数或操
作数所在地址的方法。
(1)立即寻址。在指令中直接给出操作数。出现在指令中的操作数称为“立即数”,为了
与直接寻址指令中的直接地址相区别,在立即数前面必须加上前缀“#”。
例如:
MOV DPTR,#1234H
9、MOV、MOVC、MOVX指令有什么区别?分别用于哪些场合?为什 么?
答:MOV指令用于对内部RAM和寄存器的访问。 MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如 表格、常数等)。执行MOVC指令时,在/PSEN引脚上输出有效信号,可 用做外扩程序存储器的读选通信号。 MOVX指令采用间接寻址方式访问外部数据存储器,有Ri和DPTR两种 间接寻址方式。执行MOVX指令时,在P3.7引脚上输出/RD有效信号,或
对位地址空间具有丰富的位操作指令,包括布尔传送指令、布尔状 态控制指令、位逻辑操作指令及位条件转移指令,为单片机的控制带来 很大方便。
12、试分析以下程序段的执行结果。 MOV SP,#60H MOV A,#88H MOV B,#0FFH PUSH Acc PUSH B POP Acc POP B
指令的表示方法称之为“指令格式”,其内容包括指令的长度和指令内部信息的安排等。 在80C51系列的指令系统中,有单字节、双字节和三字节等不同长度的指令。
单字节指令:指令只有一个字节,操作码和操作数同在一个字节中。 双字节指令:包括两个字节,其中一个字节为操作码,另一个字节是操作数。 三字节指令:操作码占一个字节,操作数占两个字节。其中操作数既可能是数据,也可能 是地址。
80C51单片机的指令系统具有较强的控制操作类指令,容易实现“面向控制”的功能;具有 位操作类指令,有较强的布尔变量处理能力。
3、简述80C51指令的分类和格式。
答:80C51单片机的指令系统共有111条指令,按其功能可分为5大类:数据传送类指令(28 条)、算术运算类指令(24条)、逻辑运算类指令(25条)、控制转移类指令(17条)和布尔 操作(位)类指令(17条)。
思考与练习题解析
1、什么是指令及指令系统?
答:控制单片机进行某种操作的命令称为“指令”。单片机就是根据指令来指挥和控制单 片机各部分协调工作。指令由二进制代码表示,指令通常包括操作码和操作数两部分:操作码 规定操作的类型,操作数给出参加操作的数或存放数的地址。
所有指令的集合称为“指令系统”。80C51单片机的指令系统专用于80C51系列单片机,是 一个具有255种操作码(00H~FFH,除A5H外)的集合。
执行以上程序段后,有关单元的内容分别为:(30H)=20H,(40H)=CAH,(10H)
=20H,(P1)=CAH。
15、已知(R1)=20H,(20H)=AAH,写出执行完下列程序段后A 的内容。
MOV A,#55H ANL A,#0FFH ORL 20H,A XRL A,@R1 CPL A
答:各条指令的执行结果如下:
的相对转移而设立的,为相对转移指令所采用。
在相对转移指令中,给出地址偏移量(在80C51系列单片机的指令系统中,以“rel”表
示,为8位带符号数),把PC的当前值加上偏移量就构成了程序转移的目的地址。而PC得当前值
是指执行完转移指令后的PC值,即转移指令的PC值加上转移指令的字节数。
转移的目的地址可用如下公式表示:
MOV R0,#30H
;(R0)=30H
MOV A,@R0
;(A)=40H
MOV R1,A
;(R1)=40H
MOV B,@R1
;(B)=10H
MOV @R1,P1
;(40H)=CAH
MOV A,@R0
;(A)=40H
MOV 10H,#20H
;(10H)=20H
MOV 30H,10H
;(30H)=20H
址,在寄存器间接寻址中,应在寄存器的名称前面加前缀“@”。
例如:
ORL A,@R0
;当R0寄存器的内容是60H时,该指令功能是以R0寄存器的内容60H
;为地址,将60H地址单元的内容与累加器A中的数相“或”,其结果
;仍存放在A中。
(5)相对寻址。在指令中给出的操作数为程序转移的偏移量。相对寻址方式是为实现程序
;1234H为立即数,直接送DPTR
(2)直接寻址。在指令中直接给出操作数单元的地址。
例如:
MOV A,55H
;55H是操作数单元的地址,55H单元内的数据才是操作数,取出后送
;累加器A
(3)寄存器寻址。在指令中将指定寄存器的内容作为操作数。因此,指定了寄存器就能得
到操作数。寄存器寻址方式中,用符号名称来表示寄存器。
十进制调整的修正方法为:当累加器低4位大于9或半进位标志AC=1 时,进行低4位加6修正;当累加器高4位大于9或进位标志CY=1时,进行 高4位加6修正。
11、说明80C51单片机的布尔处理机的构造及功能。
答:80C51单片机内部有一个布尔(位)处理机,具有较强的布尔变 量处理能力。
布尔处理机实际上是一位微处理机,它包括硬件和软件。布尔处理 机以进位标志CY作为位累加器,以80C51单片机内部RAM的20H~2FH单元 及部分特殊功能寄存器为位存储器,以80C51单片机的P0、P1、P2和P3 为位I/O口。
在P3.6引脚上输出/WR有效信号,可以用做外部数据存储器或I/O的读/ 写选通信号,与单片机扩展电路有关。
10、说明“DA A”指令功能,并说明二-十进制调整的原理和方 法。
答:“DA A”指令的功能是对两个BCD码的加法结果进行调整。两 个压缩BCD码按二进制数相加之后,必须经过该指令的调整才能得到压 缩型BCD码的和数。“DA A”指令对两个BCD码的减法结果不能进行调 整。
例如:
MOV C,80H
;功能是把位寻址区的80H位(即P0.0)状态送累加器C
5、访问特殊功能寄存器SFR,可使用哪些寻址方式?
答:访问特殊功能寄存器SFR的惟一寻址方式是直接寻址方式。这时除了可以单元地址形式 (如90H)给出外,还可以寄存器符号形式(如P1)给出。虽然特殊功能寄存器可以使用寄存器 符号标志,但在指令代码中还是按地址进行编码的。
答:结果如下: (1)XCH A,R0 (2)XCH A,30H (3)XCH A,@R0 (4)XCHD A,@R0 (5)SWAP A (6)ADD A,R0 (7)ADD A,30H (8)ADD A,#30H (9)ADDC A,30H (10)SUBB A,30H (11)SUBB A,#30H
;(A)=30H,(R0)=7AH ;(A)=A5H,(30H)=7AH,(PSW)=81H ;(A)=A5H,(30H)=7AH,(PSW)=81H ;(A)=75H,(30H)=AAH,(PSW)=81H ;(A)=A7H ;(A)=AAH,(PSW)=04H ;(A)=1FH,(PSW)=81H ;(A)=AAH,(PSW)=04H ;(A)=20H,(PSW)=C1H ;(A)=D4H,(PSW)=84H ;(A)=49H,(PSW)=01H
7、若访问内部RAM单元,可使用哪些寻址方式?
答:片内RAM的低128个单元可以使用直接寻址方式,在指令中直接
以单元地址形式给出。也可以使用寄存器间接寻址方式,但只能采用R0 或R1为间址寄存器,其形式为@Ri(i=0,1)。
片内RAM的低128个单元中的20H~2FH有128个可寻址位,还可使用位 寻址方式,对这128个位的寻找使用直接位地址表示。