MCS-51单片机的寻址方式和指令系统

MCS-51单片机的寻址方式和指令系统
MCS-51单片机的寻址方式和指令系统

MCS-51单片机指令系统与汇编语言程序设计

伪指令............................................. (2)

MCS-51单片机的寻址方式 (4)

MCS-51单片机的指令系统 (7)

数据传送指令 (8)

算数运算指令 (10)

逻辑运算及移位指令 (12)

控制转移指令 (13)

位操作指令 (18)

指令格式:指令的表示方式称为指令格式,它规定了指令的长度和内部信息的安排。完整的指令格式如下:

[标号:] 操作码 [操作数] [,操作数] [;注释]

标号: 代表指令的具体地址

操作码: 又称助记符,英文缩写

操作数: 操作数中常数可以用二、八、十、十六进制表示,如果用十六进制表示,最高位用A以上的数开头时,前面须加0,否则机器不识别

注释:增加程序的可读性

伪指令

(1)定位伪指令ORG

格式:ORG n

其中:n通常为绝对地址,可以是十六进制数、标号或表达式。

功能:规定编译后的机器代码存放的起始位置。在一个汇编语言源程序中允许存在多条定位伪指令,但每一个n值都应和前面生成的机器指令存放地址不重叠。

例如程序:ORG 1000H

START:MOV A,#20H

MOV B,#30H

(2)结束汇编伪指令END

格式:[标号:] END [表达式]

功能:放在汇编语言源程序的末尾,表明源程序的汇编到此结束,其后的任何内容不予理睬。

(3)赋值伪指令EQU

格式:字符名称x EQU 赋值项n

功能:将赋值项n的值赋予字符名称x。程序中凡出现该字符名称x就等同于该赋值项n,其值在整个程序中有效。赋值项n可以是常数、地址、标号或表达式。在使用时,必须先赋值后使用。

“字符名称”与“标号”的区别是“字符名称”后无冒号,而“标号”后面有冒号。

(4)定义字节伪指令DB

格式:[标号:] DB x1, x2,…, xn

功能:将8位数据(或8位数据组)x1, x2,…, xn顺序存放在从当前程序存储器地址开始的存储单元中。xi可以是8位数据、ASCII码、表达式,也可以是括在单引号内的字符串。两个数据之间用逗号“,”分隔。

xi为数值常数时,取值范围为00H~FFH。xi为ASCII码时,要使用单引号‘’,以示区别。xi为字符串常数时,其长度不应超过80个字符。

(5)定义双字节伪指令DW

格式:[标号:] DW x1, x2,…, xn

功能:将双字节数据[或双字节数据组]顺序存放在从标号指定地址单元开始的存储单元中。其中,xi为16位数值常数,占两个存储单元,先存高8位(存入低位地址单元中),后存低8位(存入高位地址单元中)。

(6)预留存储空间伪指令DS

格式:[标号:] DS n

功能:从标号指定地址单元开始,预留n个存储单元,汇编时不对这些存储单元赋值。n可以是数据,也可以是表达式。

(7)定义位地址符号伪指令BIT

格式:字符名称x BIT 位地址n

功能:将位地址n的值赋予字符名称x。程序中凡出现该字符名称x就代表该位地址。位地址n可以是绝对地址,也可以是符号地址。

(8)数据地址赋值伪指令DATA

格式:字符名称x DATA 表达式n

功能:把表达式n的值赋值给左边的字符名称x。n可以是数据或地址,也可以是包含所定义的“字符名称x”在内的表达式,但不能是汇编符号。

DATA与EQU的主要区别是:EQU定义的“字符名称”必须先定义后使用,而DATA定义的“字符名称”没有这种限制,DATA定义的字符名称作为标号登记在符号表中(以类似于R1,R0的符号存在,用到时才定义)。所以,DATA伪指令通常用在源程序的开头或末尾。

指令的分类

MCS-51指令系统有111条指令,可按下列几种方式分类:

1.按指令字节数分类

单字节指令(49条)、双字节指令(46条)和三字节指令(16条)。

2. 按指令执行时间分类

单机器周期指令(65条)、双机器周期指令(44条)和四机器周期指令(2条)。

3. 按功能分类

数据传送指令(29条)、算术操作指令(24 条)、逻辑操作指令(24条)、控制转移指令(17条)和位操作指令(17条)。

指令中的常用符号

addr11:表示11位目的地址,主要用于ACALL和AJMP指令中

addr16:表示16位目的地址,主要用于LCALL和LJMP指令中

rel:用补码形式表示的8位二进制地址偏移量,取值范围为 128~+127,主要用于相对转移指令,以形成转移的目的地址。

DPTR:数据指针,用于寄存器间接寻址方式和变址寻址方式

$:表示当前的指令地址。

/:在位操作指令中,表示对该位先求反后再参与操作。

(X):表示由X所指定的某寄存器或某单元中的内容。

((X)):表示由X间接寻址单元中的内容。

←:表示指令的操作结果是将箭头右边的内容传送到左边。

→:表示指令的操作结果是将箭头左边的内容传送到右边。

∨、∧、⊕:表示逻辑或、与、异或。

MCS-51单片机的寻址方式

寻址方式:

MCS-51单片机的指令系统提供了7种寻址方式,分别为立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。一条指令可能含多种寻址方式。

4.1 立即寻址

定义:将操作数的地址直接存放在指令中,这种寻址方式称为直接寻址。

特点:指令中含有操作数的地址。该地址指出了参与操作的数据所在的字节单元地址或位地址。计算机执行它们时便可根据直接地址找到所需要的操作数。

寻址范围:ROM、片内RAM区、SFR和位地址空间。

4.2 直接寻址

定义:将操作数的地址直接存放在指令中,这种寻址方式称为直接寻址。

特点:指令中含有操作数的地址。该地址指出了参与操作的数据所在的字节单元地址或位地址。计算机执行它们时便可根据直接地址找到所需要的操作数。

寻址范围:ROM、片内RAM区、SFR和位地址空间。

4.3 寄存器寻址

定义:操作数存放在MCS-51内部的某个工作寄存器Rn(R0~R7)或部分专用寄存器中,这种寻址方式称为寄存器寻址。

特点:由指令指出某一个寄存器的内容作为操作数。存放操作数的寄存器在指令代码中不占据单独的一个字节,而是嵌入(隐含)到操作码字节中。

寻址范围:四组通用寄存器Rn(R0~R7)、部分专用寄存器( A, B, DPTR, Cy )。

4.4 寄存器间接寻址

定义:指令给出的寄存器中存放的是操作数据的单元地址。这种寻址方式称为寄存器间接寻址,简称为寄存器间址。

特点:指令给出的寄存器中存放的是操作数地址。寄存器间接寻址是一种二次寻找操作数地址的寻址方式,寄存器前边必须加前缀符号“@”。不能用于寻址特殊功能寄存器SFR。

寻址范围:内部RAM低128B(只能使用R0或R1作间址寄存器)、外部RAM(只能使用DPTR作间址寄存器)。对于外部低256单元RAM的访问,除可以使用DPTR外,还可以使用R0或R1作间址寄存器。

4.5 变址寻址

定义:操作数存放在变址寄存器(累加器A)和基址寄存器(DPTR或PC)相加形成的16位地址单元中。这种寻址方式称为基址加变址寄存器间接寻址,简称为变址寻址。

特点:指令操作码中隐含作为基址寄存器用的DPTR(或PC )和作为变址用的累加器A。在执行变址寻址指令时,MCS-51单片机先把基地址( DPTR或PC 的内容)和地址偏移量(A的内容)相加,以形成操作数地址,再由操作数地址找到操作数,并完成相应的操作。变址寻址方式是单字节指令。

寻址范围:只能对程序存储器ROM进行寻址,主要用于查表性质的访问。

注意:累加器A中存放的操作数地址相对基地址的偏移量的范围为00H~FFH(无符号数)。MCS-51单片机共有以下三条变址寻址指令:

MOVC A, @A+PC ;(A)←(A)+(PC)+1

MOVC A, @A+DPTR ;(A)←(A)+(DPTR)

JMP @A+DPTR ;(PC)←(A)+(DPTR)

4.6 相对寻址

定义:将程序计数器PC的当前值(取出本条指令后的PC值)与指令第二个字节给出的偏移量(rel)相加,形成新的转移目标地址。称为相对寻址方式。

特点:相对寻址方式是为实现程序的相对转移而设计的,为相对转移指令所使用,其指令码中含有相对地址偏移量,能生成浮动代码。

如: SJMP rel ; (PC)←(PC) + 2 + rel

相对转移指令的目的地址=指令地址+指令字节数+偏移量

寻址范围:只能对程序存储器ROM进行寻址。相对地址偏移量(rel)是一个带符号的 8位二进制补码,其取值范围为 128~+127 (以PC为中间的256个字节范围)。

4.7 位寻址

定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址方式称为位寻址方式。

特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中的某一位的地址进行操作。

寻址范围:片内RAM低128B中位寻址区、部分SFR(其中有83位可以位寻址)。

可位寻址的位地址的表示形式如下:

(1)直接使用位地址形式。如:

MOV 00H, C ;(00H)←(Cy)

其中:00H是片内RAM中20H地址单元的第0位。

(2)字节地址加位序号的形式。如:

MOV 20H.0, C ; (20H.0)←(Cy)

其中:20H.0是片内RAM中20H地址单元的第0位。

(3)位的符号地址(位名称)的形式。对于部分特殊功能寄存器,其各位均有一个特定的名字,所以可以用它们的位名称来访问该位。如:

ANL C, P ; (C)←(C)∧(P)

其中:P是PSW的第0位,C是PSW的第7位。

(4)字节符号地址(字节名称)加位序号的形式。对于部分特殊功能寄存器(如状态标志寄存器PSW),还可以用其字节名称加位序号形式来访问某一位。如:

CPL PSW.6 ; (AC)←(/AC)

其中: PSW.6表示该位是PSW的第6位。

MCS-51单片机的指令系统

MCS-51指令系统使用44种助记符,它们代表着33种功能,可以实现51种操作。指令助记符与操作数的各种可能的寻址方式的结合一共可构造出111条指令。

MCS-51单片机指令系统按其功能可分为数据传送类指令、算术运算类指令、逻辑运算和移位类指令、控制转移类指令和位操作类指令五大类。

学习指令系统时,应注意:

(1)指令的格式、功能。

(2)操作码的含义,操作数的表示方法。

(3)寻址方式,源、目的操作数的范围。

(4)对标志位的影响。

(5)指令的适用范围。

(6)正确估算指令的字节数。

一般地,操作码占1字节;操作数中,直接地址derict占1字节,#data占1字节,#data16占两字节;操作数中的A、B、R0~R7、 @Ri、DPTR、@ A+ DPTR、 @ A+ PC等均隐含在操作码中。

CPU在进行算术和逻辑操作时,绝大多数指令都有操作数,所以数据传送是一种最基本、最主要的操作。

数据传送指令

数据传送指令共29条,可分为内部RAM数据传送、外部RAM数据传送、程序存储器数据传送、数据交换和堆栈操作等五类。

寻址范围:累加器A、片内RAM、SFR、片外RAM。

功能:(目的地址)←(源地址)。

可表示为:

源地址单元的内容不变。

对标志位的影响:除以累加器A为目的操作数的数据传送指令对P标志位有影响外,其余均不影响标志位。

格式: MOV ,

其中: 表示目的操作数, 表示源操作数。

范围:源、目的操作数均在片内RAM、SFR中

指令形式:按目的操作数可将内部数据传送指令分为以下几类:

(1)以累加器A为目的操作数(4条)

MOV A ,

其中: 包括Rn、@Ri、direct、#data。(各个符号的意义见 2.1.3节指令中的常用符号,以下同)只影响PSW中的P标志位,不影响其他标志位。

(2)以工作寄存器Rn为目的操作数(3条)

MOV Rn ,

其中: 包括A、direct、#data 。

格式: MOV ,

其中: 表示目的操作数, 表示源操作数。

范围:源、目的操作数均在片内RAM、SFR中。

(3)以直接地址单元为目的操作数(5条)

MOV direct ,

其中: 包括A、Rn、@Ri、direct 、#data 。

(4)以间址寄存器@Ri为目的操作数(3条)

MOV @Ri ,

其中: 包括A、direct 、#data 。

(5)16位数据传送指令(1条)

MOV DPTR , #data16

注:(2)、(3)、(4)、(5)均不影响标志位。

内部数据传送指令的传送关系如下图所示。

CPU与外部数据存储器之间进行数据传送时,必须使用外部传送指令,只能通过累加器A,采用寄存器间接寻址(用R0, R1和DPTR三个间接寻址的寄存器)方式完成。

指令格式: MOVX A ,

MOVX , A

其中: 包括@DPTR、@Ri。Ri(R0, R1)只能访问片外RAM的低256个单元;DPTR可以访问片外RAM的全部64KB的空间。

对标志位的影响: MOVX A , 指令只影响PSW中的P标志位,不影响其他标志位; MOVX , A指令不影响标志位。

程序存储器的数据传送是单向的,并且只能读到累加器A中。这类指令专门用于查表,又称为查表指令。

指令格式:MOVC A , @A+DPTP ;(A)←((A)+(DPTR))

MOVC A , @A+PC ;(PC)←(PC)+1

(A)←((A)+(PC))

两条指令的异同:其功能完全相同,但使用中存在着差异。

(1)查表的位置要求不同

采用DPTR作为基地址寄存器,表可以放在64KB程序存储器空间的任何地址,使用方便,故称为远程查表。

采用PC作为基地址寄存器,具体的表在程序存储器中只能在查表指令后的256B的地址空间中,使用有限制,故称为近程查表。

(2)偏移量的计算方法不同

采用DPTR作为基地址寄存器,查表地址为(A)+(DPTR)。采用PC作为基地址寄存器,查表地址为(A)+(PC)+1。因此偏移量的计算方法不同。

采用DPTR作为基地址寄存器,A为欲查数值距离表首地址的值;采用PC作为基地址寄存器, A的值必须预先设置为:

A的值=表首地址-当前指令的PC值-1

数据交换指令(5条)

数据传输时,若需要保存目的操作数,则经常采用数据交换指令。

(1)半字节数据交换指令(2条)

指令格式: SWAP A ;(A)3~0←→(A)7~4

XCHD A , @Ri ;(A)3~0←→((Ri))3~0 A的值=表首地址-当前指令的PC值-1

(2)字节交换指令(3条)

指令格式:XCH A ,

其中: 包括Rn、@Ri、direct 。

堆栈操作指令(2条)

指令格式: PUSH direct ; SP←(SP)+1 , ((SP))←(direct)

POP direct ;(direct)←((SP)) , SP←(SP) 1

特点:堆栈操作指令是一种特殊的数据传送指令,是根据栈指针SP中的栈顶地址进行数据操作。堆栈区应避开使用的工作寄存器区和其他需要使用的数据区,系统复位后,SP的初始值为07H。为了避免重叠,一般初始化时要重新设置SP。

功能:实现RAM单元数据送入栈顶或由栈顶取出数据送至RAM单元。

适用场合:用于执行中断、子程序调用、参数传递等程序的断点保护和现场保护。

书写方式:堆栈操作指令是直接寻址指令,直接地址不能是寄存器名,因此应注意指令的书写格式。例如:

PUSH ACC(不能写成PUSH A)

POP 00H (不能写成POP R0)

算术运算指令

算术运算指令的两个参与运算的操作数,一个存放在累加器A中(此操作数也为目的操作数);一个存放在R0~R7或@Ri(片内RAM)中,或是#data(立即数)。

算术运算指令可以分为加法指令、带进位的加法指令、带借位的减法指令、十进制调整指令、加1指令、减1指令、乘除指令。

1. 加法指令(4条)

指令格式: ADD A , ; (A)←(A)+

其中: 包括Rn、@Ri、direct、#data。

对标志位的影响:ADD对PSW中的所有标志位均产生影响。

2. 带进位的加法指令(4条)

指令格式: ADDC A , ; (A)←(A)+ + (Cy)

其中: 包括Rn、@Ri、direct、#data。

对标志位的影响:ADDC对PSW中的所有标志位均产生影响。

3. 带借位的减法指令(4条)

指令格式: SUBB A , ; (A)←(A)- - (Cy)

其中: 包括Rn、@Ri、direct、#data。

对标志位的影响:SUBB对PSW中的所有标志位均产生影响。

注意:MCS-51指令系统中没有不带借位的减法指令,欲实现不带借位的减法计算,应预先置Cy=0(利用CLR C指令),然后利用带借位的减法指令SUBB实现计算。

4. 十进制调整指令(1条)

功能:跟在加法指令ADD或ADDC后面,对运算结果的十进制数进行BCD码修正,使它调整为压缩的BCD码数,以完成十进制加法运算功能。

特点:十进制调整指令也称为BCD码修正指令,这是一条专用指令。两个压缩的BCD 码按二进制数相加后必须经本指令调整才能得到压缩的BCD码的和。源操作数只能在累加器A 中,结果存入A中。

指令格式:DA A

注意:十进制调整指令不能对减法指令进行修正。BCD码减法必须采用BCD补码运算法则,变减法为补码加法(被减数+减数的补码,减数的补码=9AH-减数)。然后对其进行十进制调整来实现。

5. 加1指令(5条)

功能:加1指令又称为增量指令,其功能是使操作数所指定的单元的内容加1 。

指令格式:INC + 1

其中: 即是源操作数又是目的操作数(即只有一个操作数),包括 A、Rn、direct、@Ri、 DPTR 。

对标志位的影响:除对累加器A操作影响P标志位外,其他操作均不影响PSW的各标志位。

6. 减1指令(4条)

功能:减1指令又称为减量指令,其功能是使操作数所指定的单元的内容减1 。

指令格式:DEC - 1

其中: 即是源操作数又是目的操作数(即只有一个操作数),包括 A、Rn、direct、@Ri。

对标志位的影响:同加1指令。

7. 乘除指令(2条)

功能:实现乘法或除法操作。

特点:乘除指令在MCS-51指令系统中执行时间最长,均为四周期指令。

指令格式: MUL AB ;(B)(A)←(A)×(B)

DIV AB ;(A)←(A)/(B)…(B)对标志位的影响:乘除指令影响PSW中的Cy, OV, P标志位。其中,Cy位总是被清0的,P是由累加器A中1的个数的奇偶性决定的。乘法运算中,若乘积大于FFH,则OV标志位置1,

否则清0。除法运算中,若除数为0,则OV标志位置1,否则清0。

逻辑运算和移位指令

对标志位的影响:逻辑运算和移位指令中除了两条带进位的循环移位指令外,其余均不影响PSW中的各标志位。但当目的操作数是累加器A时,影响PSW中的奇偶校验位P。

常用的逻辑运算和移位类指令有:逻辑与、逻辑或、逻辑异或、循环移位、清0、求反(非)等24条指令,它们的操作数都是8位的。逻辑运算都是按位进行的,除用于逻辑运算外,还可用于模拟各种数字逻辑电路的功能,进行逻辑电路的设计。

1.逻辑与运算指令(6条)

功能:实现两个操作数的逻辑与。

指令格式:ANL A ,

其中: 包括Rn、@Ri、direct、#data。

ANL direst ,

其中: 包括A、#data。

适用场合:实现逻辑与,主要用于操作数的某些位不变(这些位与“1”),某些位置0(这些位与“0”)。

2.逻辑或运算指令(6条)

功能:实现两个操作数的逻辑或。

指令格式:ORL A ,

其中: 包括Rn、@Ri、direct、#data。

ORL direst ,

其中: 包括A、#data。

3.逻辑异或运算指令(6条)

功能:实现两个操作数的逻辑异或。

指令格式:XRL A ,

其中: 包括Rn、@Ri、direct、#data。

XRL direst ,

其中: 包括A、#data。

适用场合:实现逻辑异或,主要用于操作数的某些位不变(这些位异或“0”),某些位取反(这些位异或“1”)。

4.循环移位指令(4条)

MCS-51单片机的循环移位指令共有不带进位的循环左、右移位(操作码为RL, RR)和带进位的循环左、右移位(操作码为RLC, RRC)指令4条。

特点:只能对累加器A进行循环移位。

指令格式:操作码 A

功能:累加器A中的数据逐位左移一位相当于原内容乘2,而逐位右移一位相当于原内容除以2。循环移位指令示意图如下图所示。

5.累加器清0与取反指令(2条)

指令格式:CLR A ;(A)←00H

CPL A ;(A)←()

特点:可以节省存储空间,提高程序执行效率。

对标志位的影响:CLR A指令只影响PSW的P标志位,CPL A指令不影响PSW各标志位。

控制转移指令

功能:改变程序计数器PC中的内容,控制程序执行的流向,实现程序分支转向。

为了控制程序的执行方向,MCS-51单片机提供了17条控制转移指令。

对标志位的影响:除了CJNE影响PSW的进位标志位Cy外,其余均不影响PSW的各标志位。

1.无条件转移指令(4条)

定义:不规定条件的程序转移称为无条件转移指令。

指令格式:

长转移指令: LJMP addr16 ;(PC)←addr15~0

绝对转移指令:AJMP addr11 ;(PC)←(PC)+2, PC 10~0←addr11

相对(短)转移指令:SJMP rel ;(PC)←(PC)+2+rel

间接(散)转移指令:JMP @A+DPTR ;(PC)←(DPTR)+(A)注意:

(1)使用转移指令时,指令中的地址或偏移量均可采用标号,只有在执行前才被汇编成实际的二进制地址。

(2)指令的转移范围:

在执行当前转移指令后的PC值的基础上:

长转移指令LJMP: 64KB

绝对转移指令AJMP :2KB

相对(短)转移指令SJMP :-128~+127(用补码表示)

间接(散)转移指令JMP: 64KB

(4)原地踏步(暂停当前的程序,并不是真的停机)的实现

SJMP $

或 HERE: SJMP HERE

(5)间接(散)转移指令:JMP @A+DPTR 常用于实现程序的分支转移(散转)。 DPTR 为转移目的的起始地址,A为转移目的的偏移量。

(6)在编程中,经常使用短转移指令SJMP和相对转移指令AJMP,以便生成浮动代码,并不经常使用长转移指令LJMP。

2.条件转移指令(2条)

功能:在规定的条件满足时进行程序转移,否则程序往下顺序执行。MCS-51单片机中,条件转移指令实质上是累加器A判零指令。

指令格式:

JZ rel ; 若(A)=0,则转移 (PC) ←(PC)+2+rel

若(A)≠0,则顺序执行(PC) ← (PC) +2

JNZ rel ; 若(A)≠0 ,则转移 (PC) ←(PC)+2+rel

若(A) =0 ,则顺序执行(PC) ← (PC) +2 指令的转移范围: rel的取值范围是在执行当前转移指令后的PC值基础上的-128~+127(用补码表示)。可以采用符号地址表示。

偏移量rel的计算方法:

rel = 转移目标地址-转移指令地址(当前PC值) - 2

3.比较转移指令(4条)

指令格式: CJNE 目的操作数,源操作数,rel

当目的操作数为A时,源操作数为#data、direct。

当目的操作数为Rn、@Ri时,源操作数为#data;

即:CJNE A, direct, rel

CJNE A, #data, rel

CJNE Rn, #data, rel

CJNE @Ri, #data, rel

功能:把两个操作数进行比较,以比较的结果作为条件来控制程序的转移。

若(目的操作数)=(源操作数),则程序继续执行,(PC)←(PC) +3

若(目的操作数)>(源操作数),则程序转移,(PC)←(PC) + rel +3,Cy←0

若(目的操作数)<(源操作数),则程序转移,(PC)←(PC) + rel +3,Cy←1

功能:比较两个操作数的大小。

对标志位影响:影响Cy标志位,不影响其他标志位。

指令的转移范围:rel的取值范围是在执行当前转移指令后的PC值基础上的-128~+127(用补码表示)。可以采用符号地址表示。

注意:比较转移指令的比较是通过两操作数的减法实现的,影响Cy标志位,不保存最后的差值,两个操作数的内容不变。

4.循环(减1条件)转移指令(2条)

功能:具有减1判非0则转移的功能。主要用于控制程序循环,实现按循环次数控制循环的目的。

特点:循环转移指令是一组把减1与条件转移两种功能结合在一起的指令。

指令格式: DJNZ , rel ; -1

≠0,则转移 (PC) ←(PC)+2+rel

=0,则不转移 (PC) ←(PC) +2

注意:条件转移指令均为相对转移指令,因此指令的转移范围十分有限。若要实现64KB范

围内的转移,则可以借助于一条长转移指令的过渡来实现。

5.子程序调用与返回指令(4条)

定义:具有完整功能的程序段定义为子程序,供主程序调用。

功能:供主程序在需要时调用。子程序可以在程序中反复多次使用,以简化源程序的书写。

特点:子程序可以嵌套,有利于模块化程序设计。

5.子程序调用与返回指令(4条)

定义:具有完整功能的程序段定义为子程序,供主程序调用。

功能:供主程序在需要时调用。子程序可以在程序中反复多次使用,以简化源程序的书写。

特点:子程序可以嵌套,有利于模块化程序设计。

主程序与子程序之间的调用关系如下左图所示,两级子程序嵌套的示意图如下右图所示。

为了实现主程序对子程序的一次完整调用,必须有子程序调用指令和子程序返回指令。子程序调用指令在主程序中使用,而子程序返回指令则是子程序的最后一条指令。调用与返回指令是成对使用的。

子程序调用指令的功能:必须具有自动把程序计数器PC中的断点地址保护到堆栈中,且将子程序入口地址自动送入程序计数器PC中的功能。

子程序返回指令的功能:必须具有自动把堆栈中的断点地址恢复到程序计数器PC中的功能。

注意:子程序调用时应注意入口参数设置,子程序返回时应注意出口参数的传递。

指令格式:

(1)绝对短调用指令

ACALL addr11 ; (PC)← (PC) +2,

(SP)← (SP) +1,(SP)←(PC)7~0

(SP) ← (SP) +1, (SP) ← (PC) 15~8, (PC) 10~0←addr11 其中: addr11为11位地址,实际编程时可以用符号地址。并且只能在2KB范围以内调用子程序。

(2)绝对长调用指令

LCALL addr16 ; (PC)← (PC) +3,

(SP)← (SP) +1,(SP)←(PC)7~0

(SP) ← (SP) +1, (SP) ← (PC) 15~8, (PC) 15~0←addr16 其中: addr16为16位地址,实际编程时可以用符号地址。可以在64KB范围以内调用子程序。

(3)子程序返回指令

RET ; (PC) 15~8←((SP)), (SP)← (SP) -1,

(PC) 7~0← ((SP)) , (SP) ← (SP) -1

(4)中断返回指令

RETI ; (PC) 15~8←((SP)), (SP)← (SP) -1,

(PC) 7~0← ((SP)) , (SP) ← (SP) -1

注:中断服务程序是一种特殊的子程序,它是在计算机响应中断时,由硬件完成调用而进入相应的中断服务程序。RETI指令与RET指令相仿,区别在于RET是从子程序返回,RETI 是从中断服务程序返回。无论是RET还是RETI都是子程序执行的最后一条指令。

6.空操作指令NOP (1条)

指令格式:

NOP ; (PC) ← (PC) +1

功能:不执行任何操作,消耗了一个机器周期,常用于软件延时或在程序可靠性设计中用来稳定程序。

特点:NOP占据一个单元的存储空间,除了使PC的内容加1外,CPU不产生任何操作结果,只是消耗了一个机器周期。

6.空操作指令NOP (1条)

指令格式:

NOP ; (PC) ← (PC) +1

功能:不执行任何操作,消耗了一个机器周期,常用于软件延时或在程序可靠性设计中用来稳定程序。

特点:NOP占据一个单元的存储空间,除了使PC的内容加1外,CPU不产生任何操作结果,只是消耗了一个机器周期。

位操作指令

1. 位数据传送指令(2条)

特点:在可寻址位与位累加器Cy之间进行的。不能在两个可寻址位间直接进行传送。

指令格式:MOV C, bit ;(Cy)←(bit)

MOV bit, C ;(bit)←(Cy)

2. 位逻辑操作指令(6条)

指令格式:操作码 C ,

其中:操作码包括ANL(逻辑位“与”)、ORL (逻辑位“或”); 包括bit、/bit。

CPL ;

其中: CPL表示取反, 包括Cy、 bit。

功能:位逻辑操作指令用于位逻辑操作,还可用于对组合逻辑电路的模拟。采用位操作指令进行组合逻辑电路的设计比采用字节型逻辑指令节约存储空间,运算操作十分方便。

3. 位状态(置位、清0)控制指令(4条)

指令格式:CLR ; ←0

SETB ; ←1

其中:包括Cy、 bit。

4. 位条件(控制)转移指令(5条)

特点:以位的状态作为实现程序转移的判断条件。

指令格式:

(1)以进位标志位Cy内容为条件的转移指令

JC rel ; 若(Cy )=1,则转移(PC)←(PC)+2+rel , 否则顺序执行

JNC rel ; 若(Cy )=0,则转移(PC)←(PC)+2+rel , 否则顺序执行

(2)以位地址bit内容为条件的转移指令

指令格式:

JB bit, rel ; 若(bit)=1,则转移(PC)← (PC)+3+rel,否则顺序执行

JNB bit, rel ; 若(bit)=0,则转移(PC)← (PC)+3+rel,否则顺序执行

JBC bit, rel ; 若(bit)=1,则转移(PC)← (PC)+3+rel,且(bit )←0,

否则顺序执行

51单片机寻址方式资料讲解

51单片机寻址方式

51单片机的寻址方式 寻址方式:指定操作数所在单元的方法。 在我们学习的8051单片机中,有7种寻址方法,下面我们将逐一进行分析。 一、立即寻址 用“#”作前缀 MOV A,#20H 在这种寻址方式中,指令多是双字节的。立即数就是存放在程序存储器中的常数,换句话说就是操作数(立即数)是包含在指令字节中的。 例如: MOV A,#3AH 这条指令的指令代码为74H、3AH,是双字节指令,这条指令的功能是把立即数3AH送入累加器A中。 MOV DPTR,#8200H在前面学单片机的专用寄存器时,我们已学过,DPTR是一个16位的寄存器,它由DPH及DPL两个8位的寄存 仅供学习与交流,如有侵权请联系网站删除谢谢2

器组成。这条指令的意思就是把立即数的高8位(即82H)送入DPH寄存器,把立即数的低8位(即00H)送入DPL寄存器。 二、直接寻址 指令中直接给出操作数的地址。 MOV A,30H;这条指令中操作数就在30H单元中,也就是30H 是操作数的地址,并非操作数。 MOV 30H,DPH 在80C51单片机中,直接地址只能用来表示内部数据存储器、位地址空间以及特殊功能寄存器,具体的说就是: 1、内部数据存储器RAM低128单元。在指令中是以直接单元地址形式给出。 我们知道低128单元的地址是00H-7FH。在指令中直接以单元地址形式给出这句话的意思就是这0-127共128位的任何一位,例如0位是以00H这个单元地址形式给出、1位就是以01H单元地址给出、12 7位就是以7FH形式给出。 2、位寻址区。20H-2FH地址单元。 仅供学习与交流,如有侵权请联系网站删除谢谢3

51单片机的寻址方式

51单片机的寻址方式 学习汇编程序设计,要先了解CPU的各种寻址法,才能有效的掌握各个命令的用途,寻址法是命令运算码找操作数的方法。 指令的寻址方式 MOV P1,#0FFH这条指令,第一个词MOV是命令动词,也就是决定做什么事情的,MOV是MOVE少写了一个E,所以就是“传递”,这就是指令,规定做什么事情,数据传递必须要有一个“源”也就是你要送什么数,必须要有一个“目的”,也就是你这个数要送到什么地方去,显然在上面那条指令中,要送的数(源)就是0FFH,而要送达的地方(目的地)就是P1这个寄存器。 寻址方式:指定操作数所在单元的方法。 注意:源操作数、目的操作数都有各自的寻址方式。掌握指令的7种寻址方式的作用以及不同寻址方式所查询的存储空间及范围,对于常用的指令,能够给出指令的寻址方式。 在我们学习的8051单片机中,有7种寻址方法,下面我们将逐一进行分析。 立即寻址 所要找的操作数是一二进制数或十进制数,出现在指令中,用“#”作前缀 MOV A,#20H 在这种寻址方式中,指令多是双字节的,一般第一个字节是操作码,第二个字节是操作数。该操作数直接参与操作,所以又称立即数,有“#”号表示。立即数就是存放在程序存储器中的常数,换句话说就是操作数(立即数)是包含在指令字节中的。 例如: MOV A,#3AH 这条指令的指令代码为74H、3AH,是双字节指令,这条指令的功能是把立即数3AH送入累加器A中。MOV DPTR,#8200H 在前面学单片机的专用寄存器时,我们已学过,DPTR是一个16位的寄存器,它由DPH及DPL两个8位的寄存器组成。这条指令的意思就是把立即数的高8位(即82H)送入DPH寄存器,把立即数的低8位(即00H)送入DPL寄存器。 这里也特别说明一下:在80C51单片机的指令系统中,仅有一条指令的操作数是16位的立即数,其功能是向地址指针DPTR传送16位的地址,即把立即数的高8位送入DPH,低8位送入DPL。 直接寻址 指令中直接给出操作数的地址。 MOV A,30H MOV 30H,DPH 直接寻址方式是指在指令中操作数直接以单元地址的形式给出,也就是在这种寻址方式中,操作数项给出的是参加运算的操作数的地址,而不是操作数。

单片机的寻址方式

单片机的寻址方式 指令给出参与运算的数据方式称为寻址方式。换句话说,寻址方式就是寻找确定参与操作的数的真正地址。 在MCS-51 系列单片机的指令系统中寻址方式共有7 种, 立即寻址方式,mcs-51 单片机的一种寻址方式,操作数就写在指令中,和操作码一起放在程序存贮器中。把“#”号放在立即数前面,以表示该寻址方式为 立即寻址,如#20H,立即寻址方式通常用于对通用寄存器或内存单元赋初值。直接寻址方式,指令操作数域给出的是参加运算的操作数地址。在MCS-51 单片机中,直接地址只能用来表示特殊功能寄存器、内部数据寄存器和位地址空间。其中,特殊功能寄存器和位地址空间只能用直接寻址方式访问。 寄存器寻址方式,操作数在寄存器中,由指令操作码中的rrr 三位的值和PSW 中RS1 及RS0 的状态,选中某个工作寄存器区的某个寄存器,然后进行相应的指令操作。指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式 称为寄存器寻址方式。 间接寻址方式,指令操作数给出的是存放操作数地址的寄存器。在MCS-51 指令系统中,可作为寄存器间接寻址的寄存器有工作寄存器R0~R1、堆栈批示器SP 和地址寄存器DPTR。在指令助记符中,间接寻址用符号@来表示。 相对寻址方式,以当前程序计数器pc 的内容为基址,加上指令给出的一字 节补码数(偏移量)形成新的pc 值的寻址方式称为相对寻址。 变址寻址方式,在通用寄存器中,有些寄存器可作为变址寄存器。把变址寄存器的内容(通常是首地址)与指令地址码部分给出的地址(通常是位移量)之和作为操作数的地址来获得所需要的操作数就称为变址寻址。

单片机寻址方式

51单片机的寻址方式 寻址方式:指定操作数所在单元的方法。 在我们学习的8051单片机中,有7种寻址方法,下面我们将逐一进行分析。 一、立即寻址 用“#”作前缀 MOV A,#20H 在这种寻址方式中,指令多是双字节的。立即数就是存放在程序存储器中的常数,换句话说就是操作数(立即数)是包含在指令字节中的。 例如: MOV A,#3AH 这条指令的指令代码为74H、3AH,是双字节指令,这条指令的功能是把立即数3AH送入累加器A中。 MOV DPTR,#8200H在前面学单片机的专用寄存器时,我们已学过,DPTR 是一个16位的寄存器,它由DPH及DPL两个8位的寄存器组成。这条指令的意思就是把立即数的高8位(即82H)送入DPH寄存器,把立即数的低8位(即00H)送入DPL寄存器。 二、直接寻址

指令中直接给出操作数的地址。 MOV A,30H;这条指令中操作数就在30H单元中,也就是30H是操作数的地址,并非操作数。 MOV 30H,DPH 在80C51单片机中,直接地址只能用来表示内部数据存储器、位地址空间以及特殊功能寄存器,具体的说就是: 1、内部数据存储器RAM低128单元。在指令中是以直接单元地址形式给出。 我们知道低128单元的地址是00H-7FH。在指令中直接以单元地址形式给出这句话的意思就是这0-127共128位的任何一位,例如0位是以00H这个单元地址形式给出、1位就是以01H单元地址给出、127位就是以7FH 形式给出。 2、位寻址区。20H-2FH地址单元。 3、特殊功能寄存器。专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出。例如下面我们分析的一条指令 MOV IE,#85H 前面的学习我们已知道,中断允许寄存器IE的地址是80H,那么也就是此指令也可以以 MOV 80H,#85H的形式表述。

第六章_寻址方式和指令系统

1

第 6章 寻址方式和汇编指令 第6章
6.1、寻址方式 6.2、汇编语言指令集 6.3、汇编源程序

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
▲ 汇编指令是可执行指令,每条指令对应一条机器 码,用以控制处理器中的执行部件进行各种操 作。 ▲ TMS320F281X系列的汇编指令有150多条。 ▲ 它们支持各种信号处理运算,同时也提供了应用 中所需要的多级处理和过程控制功能。 ▲ 寻址方式是指寻找指令中操作数地址的方式。

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
TMS320C28x指令集采用7种存储器寻址方式: ▲ 直接寻址方式 ▲ 堆栈寻址方式 ▲ 间接寻址方式 ▲ 寄存器寻址方式 ▲ 数据/程序/IO空间立即寻址方式 ▲ 程序空间间接寻址 ▲ 字节寻址方式

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
F2812 的大多数指令利用操作码中的8位字段来选择寻 址方式和对寻址方式进行修改.在 F2812 指令系统中,这个8 位字段用于以下寻址方式: (1)loc16 。 为16位数据访问选择直接/堆栈/间接/寄存器寻址方
式。
(2)loc32 。 为32位数据访问选择直接/堆栈/间接/寄存器寻址方
式。
以上7种寻址方式都与“loc16/loc32”组合起来使用。

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
寻址方式选择位
由 于 F2812 提 供 了 多 种 寻 址 方 式 , 因 此 用 寻 址 方 式 选 择 位 ( AMODE )来选择8位字段( loc16/loc32 )的解码。该 位属于状态寄存器ST1。寻址方式可以大致归类如下: ▲ AMODE=0——该方式是复位后的默认方式,也是F2812的C/C++编译
器使用的方式。这种方式与C2xLP CPU的寻址方式不完全兼容。数据页指针 偏移量是6位(在C2xLP CPU中是7位),并且不支持所有的间接寻址方式。
▲ AMODE=1——该方式包括的寻址方式完全与C2xLP 器件的寻址方式
兼容。数据页指针的偏移量是7位并支持所有C2xLP 支持的间接寻址方式。
对与loc16或者loc32字段,其可用的寻址方式总结如P375所示

51单片机基础知识及期末复习

51单片机简答题部分(经典) 1、什么叫堆栈? 答:堆栈是在片内RAM中专门开辟出来的一个区域,数据的存取是以"后进先出"的结构方式处理的。实质上,堆栈就是一个按照"后进先出"原则组织的一段内存区域。 2、进位和溢出? 答:两数运算的结果若没有超出字长的表示范围,则由此产生的进位是自然进位;若两数的运算结果超出了字长的表示范围(即结果不合理),则称为溢出。 3、在单片机中,片内ROM的配置有几种形式?各有什么特点? 答:单片机片内程序存储器的配置形式主要有以下几种形式:(1)掩膜(Msak)ROM型单片机:内部具有工厂掩膜编程的ROM,ROM中的程序只能由单片机制造厂家用掩膜工艺固 化,用户不能修改ROM中的程序。掩膜ROM单片机适合于 大批量生产的产品。用户可委托芯片生产厂家采用掩膜方法 将程序制作在芯片的ROM。 (2)EPROM型单片机:内部具有紫外线可擦除电可编程的只读存储器,用户可以自行将程序写入到芯片内部的EPROM 中,也可以将EPROM中的信息全部擦除。擦去信息的芯片 还可以再次写入新的程序,允许反复改写。 (3)无ROM型单片机:内部没有程序存储器,它必须连接程序存储器才能组成完整的应用系统。 无ROM型单片机价格低廉,用户可根据程序的大小来选择外接 程序存储器的容量。这种单片机扩展灵活,但系统结构较复 杂。 (4)E2ROM型单片机:内部具有电可擦除叫可编程的程序存储器,使用更为方便。该类型目前比较常用 (5)OTP(One Time Programmable)ROM单片机:内部具有一次可编程的程序存储器,用户可以在编程器上将程序写入片内程 序存储器中,程序写入后不能再改写。这种芯片的价格也较 低。 4、什么是单片机的机器周期、状态周期、振荡周期和指令周期?它们之间是什么关系? 答:某条指令的执行周期由若干个机器周期(简称M周期)构成,一个机器周期包含6个状态周期(又称时钟周期,简称S周期),而一个状态周期又包含两个振荡周期(P1和P2,简称P周期)。也就是说,指令执行周期有长有短,但一个机器周期恒等于6个状态周期或12个振荡周

MCS-51单片机指令系统

一、填空题 1、寻址是指( )。80C51单片机指令系统有7种寻址方式,分别是:( )。 2、访问内部RAM可以采用的两种寻址方式为:( )和( )。 3、MCS-51单片机指令的基本格式为:( )。 4、Rn代表( ),其中n的取值范围是( );Ri代表( ),其中i的取值范围是( )。@Ri的含义是( )。 5、在单片机指令中,30H和#30H的区别是( );R0和@ R0的区别是( );A←R1 和A←(R1) 的区别是( );DPTR和@DPTR的区别是( )。 6、汇编是指由( )“翻译”为( )的过程。 7、常用的伪指令有8条,试写出其中的5条( )、( )、( )、( )、( )。 8、LJMP指令的转移范围是(); AJMP指令的转移范围是(); SJMP指令的转移范围是()。 二、简答题 1、指出下列指令中的操作数的寻址方式。 (1)MOV R0,#30H (2)MOV A,30H (3)MOV A,@R0 (4)MOV @R0,A (5)MOVC A,@A+DPTR (6)CJNE A,#00H,30H (7)MOV C,30H (8)MUL AB (9)MOV DPTR,#1234H (10)POP ACC 2、80C51指令中,常用字符代表立即数或存储单元,试判断下列字符ABC的含义。(1)MOV A,#ABC (2)MOV A,ABC (3)MOV C,ABC (4)MOV DPTR,#ABC 3、若R0=11H,(11H)=22H,(33H)=44H,写出执行下列指令后的结果。 (1)MOV A,R0 (2)MOV A,@R0 (3)MOV A,33H (4)MOV A,#33H 4、若A=11H,(11H)=22H,B=44H,写出执行下列指令后的结果。 (1)MOV R1,A (2)MOV R3,11H (3)MOV R3,#11H (4)MOV R3,B 5、若A=11H,R0=33H,(22H)=66H,(33H)=44H,写出执行下列指令后的结果。 (1)MOV 40H,A (2)MOV 40H,R0 (3)MOV 40H,@R0 (4)MOV 40H,22H (5)MOV 40H,#22H 6、若A=11H,R0=33H,(22H)=66H,(33H)=44H,写出执行下列指令后的结果。 (1)MOV @R0,A (2)MOV @R0,22H (3)MOV @R0,#22H 7、若 A=11H,R0=33H,B=44H,(11H)=22H,(22H)=66H,(33H)=44H,分别写出执行下列指令后的结果。 (1)MOV A,R0 (2)MOV B,#55H (3)MOV 40H,@R0 (4)MOV 11H,22H (5)MOV @R0,22H 8、试将30H、R7、B、A、PSW、DPTR中的数据依次压入堆栈。并指出每次堆栈操作后,SP=?、(SP)=?设原SP=60H,当前工作寄存器区为0区,(30H)=11H,R7=22H,B=33H,A=44H,PSW=55H,DPTR=6677H。 9、若A=78H,R0=34H,(34H)=DCH,(56H)=ABH,求分别执行下列指令后A和Cy中的数据。 (1)ADD A,R0 (2)ADDC A,@R0 (3)ADD A,56H (4)ADD A,#56H

寻址方式和指令系统

《微机原理》复习思考题第3章 8086的寻址方式和指令系统 3.1 8086汇编语言指令的寻址方式有哪几类?用哪一种寻址方式的指令执行速度最快? 3.2 直接寻址方式中,一般只指出操作数的偏移地址,那么,段地址如何确定?如果要用某个段 寄存器指出段地址,指令中应如何表示? 3.3 在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,那么,段地址如何确定? 3.4 用寄存器间接寻址方式时,BX,BP,SI,DI分别针对什么情况来使用?这四个寄存器组合 间接寻址时,地址是怎样计算的?举例进行说明。 3.5 设DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下面两条指令所进行的具体操作: MOV BYTE PTR [BP], 2000 MOV WORD PTR [BX], 2000 3.6 使用堆栈操作指令时要注意什么问题?传送指令和交换指令在涉及内容操作数时分别要注 意什么问题? 3.7 下面这些指令中哪些是正确的?哪些是错误的?如果是错误的,请说明原因。 XCHG CS, AX MOV [BX], [1000] XCHG BX, IP PUSH CS POP CS IN BX, DX MOV BYTE[BX], 1000 MOV CS, [1000] 3.8 8086系统中,当对SS和SP寄存器的值进行修改时,有什么特殊规定?这样做的原因是什么?[解答] 凡是遇到给SS寄存器赋值的传送指令时,系统会自动禁止外部中断,等到本条指令和下条指令执行之后,又自动恢复对SS寄存器赋值前的中断开放情况。这样做是为了允许程序员连续用两条指令分别对SS和SP寄存器赋值,同时又防止堆栈空间变动过程中出现中断。 3.9 以下是格雷码的编码表 0——0000 1——0001 2——0011 3——0010 4——0110 5——0111 6——0101 7——0100 8——1100 9——1101 请用换码指令和其他指令设计一个程序段,实现格雷码往ASCII的转换。 3.10 用加法指令设计一个简单程序,实现两个16位十进制数的加法,结果放在被加数单元。 3.11 为什么用增量指令或减量指令设计程序时,在这类指令后面不用进位标志CF作为判断依 据?

MCS-51单片机的寻址方式和指令系统

MCS-51单片机指令系统与汇编语言程序设计 伪指令............................................. (2) MCS-51单片机的寻址方式 (4) MCS-51单片机的指令系统 (7) 数据传送指令 (8) 算数运算指令 (10) 逻辑运算及移位指令 (12) 控制转移指令 (13) 位操作指令 (18)

指令格式:指令的表示方式称为指令格式,它规定了指令的长度和内部信息的安排。完整的指令格式如下: [标号:] 操作码 [操作数] [,操作数] [;注释] 标号: 代表指令的具体地址 操作码: 又称助记符,英文缩写 操作数: 操作数中常数可以用二、八、十、十六进制表示,如果用十六进制表示,最高位用A以上的数开头时,前面须加0,否则机器不识别 注释:增加程序的可读性 伪指令 (1)定位伪指令ORG 格式:ORG n 其中:n通常为绝对地址,可以是十六进制数、标号或表达式。 功能:规定编译后的机器代码存放的起始位置。在一个汇编语言源程序中允许存在多条定位伪指令,但每一个n值都应和前面生成的机器指令存放地址不重叠。 例如程序:ORG 1000H START:MOV A,#20H MOV B,#30H ┇ (2)结束汇编伪指令END 格式:[标号:] END [表达式] 功能:放在汇编语言源程序的末尾,表明源程序的汇编到此结束,其后的任何内容不予理睬。 (3)赋值伪指令EQU 格式:字符名称x EQU 赋值项n 功能:将赋值项n的值赋予字符名称x。程序中凡出现该字符名称x就等同于该赋值项n,其值在整个程序中有效。赋值项n可以是常数、地址、标号或表达式。在使用时,必须先赋值后使用。 “字符名称”与“标号”的区别是“字符名称”后无冒号,而“标号”后面有冒号。 (4)定义字节伪指令DB

)1MCS51单片机的指令格式中操作码与操作数之间必须用.

第2章汇编语言----智能电子产品的指令系统 判断题 ()1.MCS—51单片机的指令格式中操作码与操作数之间必须用“,”分隔。 ()2.MCS—51指令:MOV A,#40H ;表示将立即数40H 传送至A 中。 ()3.MCS—51指令:MOV A,@R0 ;表示将R0指示的地址单元中的内容传送至A 中。()4.MCS—51 指令:MOVX A,@DPTR ;表示将DPTR 指示的地址单元中的内容传送至A 中。 ()5.MCS—51 的数据传送指令是把源操作数传送到目的操作数,指令执行后,源操作数改变,目的操作数修改为源操作数。 ()6.MCS—51指令中,MOVX 为片外RAM 传送指令。 ()7.MCS—51指令中,MOVC 为ROM 传送指令。 ()8.将37H 单元的内容传送至A的指令是:MOV A,#37H。 ()9.MCS—51指令中,16 位立即数传送指令是:MOV DPTR,#data16。 ()10.MCS—51 单片机,CPU 对片外RAM 的访问只能用寄存器间接寻址的方式,且仅有4 条指令。 ()11.如JC rel 发生跳转时,目标地址为当前指令地址加上偏移量。 ()12.对于8051 单片机,当CPU 对内部程序存储器寻址超过4K 时,系统会自动在外部程序存储器中寻址。 ()13.指令MUL AB 执行前(A)=F0H,(B)=05H,执行后(A)=FH5,(B)=00H。()14.已知:DPTR=11FFH 执行INC DPTR 后,结果:DPTR=1200H。 ()15.已知:A=11H B=04H,执行指令DIV AB后,其结果:A=04H,B=1 CY=OV=0。()16.已知:A=1FH,(30H)=83H,执行ANL A,30H 后,结果:A=03H (30H)=83H P=0。 ()17.无条件转移指令LJMP addr16 称长转移指令,允许转移的目标地址在128KB 空间范围内。 ()18.MCS—51 指令系统中,执行指令FGO bit F0 ,表示凡用到F0 位的指令中均可用FGO 来代替。 ()19.MCS—51指令系统中,执行指令ORG 2000H;BCD:DB “A,B,C,D”表示将A、B、C、D 的ASII 码值依次存入2000H 开始的连续单元中。

(完整版)单片机,第三章答案

思考题: 【3-1 】汇编语言与 C 语言哪种语言的可读性和可移植性强?在对速度和时序敏感的场合应该使用什么语言?对于复杂的单片机系统一般采用 C 与汇编混合编程的形式这句话对吗? 【3-2】二进制机器语言与C和汇编语言两者之间是什么关系?用C或汇编编制的程序在ROM中是 以编译后的二进制代码的形式存放这句话对吗? 【3-3】80C51系列单片机指令的格式包含哪几个部分?各部分之间的间隔符是什么?四个部分中哪 个部分是必须存在的,哪几个部分是可有可无的?标号的格式和代表的意义是? 【3-4 】80C51 系列单片机有哪几种寻址方式? 【3-5】80C51单片机中立即数是存放在ROM中还是RAM中? 【3-6 】判断下列说法是否正确。 (1)立即数寻址方式是被操作的数据本身就在指令中,而不是它的地址在指令中。()(2)指令周期是执行一条指令的时间。() (3)指令中直接给出的操作数称为直接寻址。() (4)内部寄存器Rn (n=0~7)可作为间接寻址寄存器。() 【3-7 】80C51 单片机可以进行直接寻址的区域是? 【3-8 】80C51 单片机可以进行寄存器寻址的范围是? 【3-9 】80C51 单片机可以进行寄存器间接寻址的寄存器是?寻址的范围是? 【3-10 】在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作 数的()。 【3-11 】80C51 单片机变址寻址方式中可以作基址的寄存器是?可以作变址的寄存器是?@A+P,C @A+DPT所找到的操作数是在ROM中对吗? 【3-12】80C51单片机相对寻址改变的是PC的当前值,即改变的CPU执行指令的顺序这句话对否? 【3-13 】若访问特殊功能寄存器,只可以采用那种寻址方式? 【3-14】若访问外部RAM单元,只可以使用哪种寻址方式? 【3-15】若访问内部RAM单元,可使用哪些寻址方式? 【3-16 】若访问内外程序存储器,可使用哪些寻址方式? 【3-17 】80C51 单片机可以进行位寻址的字节单元范围除11 个可位寻址的特殊功能寄存器外还包括 哪个区域?分别找出位地址是00H 08H 22H、7FH D0H E0H对应的字节地址? 【3-18】已知(30H)=40H,(40H)=10H,(10H)=32H,(P1)=0EFH试写出执行以下程序段后有关单元的内容。 MOV R0,#30H MOV A ,@R0 MOV R1,A MOV B ,@Ri MOV @R1,P1 MOV P2,P1 MOV 10H, #20H MOV 30H,10H 【3-19】为什么对基本型的51子系列单片机(片内RAM为128B),其寄存器间接寻址方式(例如MOV A,@R0中,规定R0或R1的内容不能超过7FH? 【3-20】外部RAM数据传送指令有几条?试比较下面每一组中两条指令的区别? ( 1 )MOVX A,@R1 MOVX A ,@DPTR (2)MOVX A,@DPTR MOVX @DPTR, A (3)MOV @R0, A MOVX @R0 , A

51单片机考试答案答案

3-4.开机复位后,CPU使用的是哪组工作寄存器?它们的地址是什么?CPU 如何确定和改变当前工作寄存器组? 答:开机复位后CPU使用的是第0组工作寄存器。地址:00H—07H。通过对状态字PSW的设置来确定。 3-6.89C51/S51/C52/S52的时钟周期、机器周期、指令周期是如何分配的?当振荡频率为8MHZ时,一个单片机周期额为多少微秒? 答:一个指令周期包含若干个机器周期,一个机器周期包含若干指令周期。125us 3-10.89C51/S51/C52/S52四个I/O端口的作用是什么?89C51/S51/C52/S52的片外三总线是如何分配的? 答:I/O端口有四个通常称作P0-P3,在无外扩展存储器的系统中,这四个端口的每一位都可以作为双向通用I/O端口使用,在其有外扩展存储器的系统中,P2口作为高8位地址线,P0口分时作低8位地址线和双向数据线。 3-12.复位的作用是什么?有几种复位方法?复位后单片机的状态如何? 答:复位作用:使CPU及其它部件都处在一个确定的初始状态,并从这个状态开始工作。方法:上电自动复位,按键手动复位。复位后,除SP为07H,P0-P3为FFH外,其余都为0. 4-2.80C51单片机有哪几种寻址方式?这几种寻址方式是如何寻址的? 答:7种,分别是:立即寻址,变址寻址,直接寻址,相对寻址,寄存器寻址,位寻址,寄存器间接寻址。 4-6.在80C51片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H,请分析下段程序中各指令的作用,并翻译成相应的机器码;说明源操作数的寻址方式,按程序执行每条指令后的结果: 机器码源程序作用寻址方式结果 E5 40 MOV A,40H 48H->A 直接寻址 A=48H F8 MOV R0,A A->R0 寄存器寻址, R0=48H 75 90 F0 MOV P1,#0F0H 0F0H->P1 立即寻址 P1=0F0H A6 30 MOV @R0,30H 30H->R0 直接寻址 R0=48H,(48H)=38H 90 12 46 MOV DPTR,#1246H 1246H->DPTR 立即寻址 DPTR=1246H 85 38 40 MOV 40H,38H 38H中内容->40H中直接寻址(40H)=40H A8 30 MOV R0,30H 30H…->R0中直接寻址 R0=38H 88 90 MOV 90H,R0 R0…->90H中寄存器寻址(90H)=38H 75 48 30 MOV 48H,#30H 30H->48H中立即寻址(48H)=30H E6 MOV A,@R0 R0内容->A 寄存器间接寻址 R0=38H,A=40H 85 90 A0 MOV P2,P1 P1内容->P2寄存器寻址P2=38H 4-12.试说明下段程序中每条指令的作用,并分析当指令执行完后,R0中的内容是什么? MOV R0,#0A7H XCH A,R0 SWAP A XCH A,R0 4-26.

8051寻址方式总结

8051寻址方式总结 8051 单片机共有7 种寻址方式。寻址方式是指令中确定操作数的形式,用 来确定操作数所处的存储空间。1.立即寻址:在指令中直接给出操作数MOV A, #80H 8 位操作数MOV A, #2000H 16 位操作数 2.直接寻址:指令中直接给出操作数地址(1)SFR,这一存储空间只能使用直 接寻址MOV PSW, #50H(2)内部数据RAM,这一存储空间可以使用直接寻址和 寄存器间接寻址MOV A, 30H 3.寄存器寻址:以通用寄存器的内容作为操作数(通用寄存器包括A, B, DPTR, R0~R7)INC DPTR 注意:A、B 既是通用寄存器,也是SFR(直接寻址) 4.寄存器间接寻址:以寄存器中的内容作为操作数的地址能够用于寄存器间 接寻址的寄存器有:R0,R1,DPTR,SP 区分内部数据RAM 寻址和外部数据RAM 寻址:外部数据RAM 寻址指令上采用MOVX 对内部数据RAM 寻址: 使用8 位的R0 或者R1 即可MOV @R0, A 对外部数据RAM 寻址:使用P2 端口提供高8 位地址,使用R0 或者R1 提供低8 位地址;或者使用16 位的 DPTR 提供地址MOVX A, @R1MOVX @DPTR, A 5.变址寻址:以基址寄存器PC 或者DPTR 与变址寄存器A 中的内容之和作 为操作数的地址变址寻址只能对程序存储器中的数据进行寻址,由于程序存储 器是只读的,因此变址寻址只有读操作,指令上采用MOVCMOVC A, @A+DPTRMOVC A, @A+PC 6.相对寻址:用于修改PC 的值,使得PC 加上指令中给出的一字节的偏移量 由于转移指令有两字节和三字节这两种形式,因此偏移量的范围分别为- 126~+129 和-125~+130SJMP 80H

51单片机练习题---附答案

第一、二章单片机概述与结构 一、填空题 1.单片机复位后,SP、PC和I/O口的内容分别为 07H\000H\FFH 。 2.单片机有四个工作寄存器区,由PSW状态字中的RS1和RS0两位的状态来决定。单片机复位后,若执行SETB RS0指令,此时只能使用 1 区的工作寄存器,地址范围是 08H---0FH 。 3.51单片机驱动能力最强的并行端口为 P0端口。 4.51单片机PC的长度为16位,SP的长度为___8____位,DPTR的长度为_16__位。 5.访问51单片机程序存储器地址空间、片内数据存储器地址、片外数据存储器地址的指令分别为__movc_____,MOV和_movx______。 6.若A中的内容为63H,那么P标志位的值为 1 。 " 7.当扩展外部存储器或I/O口时,P2口用作高八位地址总线。 8.51单片机内部RAM区有 4 个工作寄存器区。 9.51单片机内部RAM区有 128 个位地址。 10.外部中断1()的中断入口地址为 0013 ;定时器1的中断入口地址为 001B 。 11.51单片机有 4 个并行I/O口, P0~P3是准双向口,所以由输出转输入时必须先写入 1 。 12.51单片机的堆栈建立在内部RAM 内开辟的区域。 二、选择题 1.访问片外部数据存储器时,不起作用的信号是( C)。 ' A./RD B./WE C./PSEN D.ALE 2.51单片机P0口用作输出时,应外接( A )。 A.上拉电阻 B.二极管 C.三极管 D.下拉电阻 3.进位标志CY在( C )中。 A.累加器 B.算逻运算部件ALU C.程序状态字寄存器PSW D.DPTR 4.堆栈数据的进出原则是( D )。 A.先进先出 B.进入不出 C.后进后出 D.先进后出 5.51单片机系统中,若晶振频率为6MHz,一个机器周期等于(D )μs。 & A.B.3 C.1 D.2 6.在家用电器中使用单片机应属于微计算机的( B )。

第3章-MCS-51系列单片机的指令系统和汇编语言程序

第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

单片机简答题教学内容

单片机简答题

1.何谓单片机?单片机与一般微型计算机相比,具有哪些特点? 答:单片机是在一块集成电路上把CPU、存储器、定时器/计数器及多种形式的I/O接口集成在一起而构成的微型计算机。它与通用微型计算机相比,具有如下特点: (1)单片机的程序存储器和数据存储器是分工的,前者为ROM,后者为RAM; (2)采用面向控制的指令系统,控制功能强; (3)多样化的I/O接口,多功能的I/O引脚; (4)产品系列齐全,功能扩展性强; (5)功能是通用的,像一般微处理机那样可广泛地应用在各个方面。 2 单片机主要应用在哪些领域? 答:单片机的应用范围很广泛,诸如智能化家用电器、仪器仪表、工业控制、计算机外部设备、智能机器人、电信及导航等方面。 3 在各种系列的单片机中,片内ROM的配置有几种形式?用户应根据什么原则来选用? 答:各种类型的单片机片内程序存储器的配置形式主要有以下几种形式:(1)掩膜(Msak)ROM型单片机:内部具有工厂掩膜编程的ROM,ROM 中的程序只能由单片机制造厂家用掩膜工艺固化,用户不能修改ROM 中的程序。例如:MCS—51系列的8051。 掩膜ROM单片机适合于大批量生产的产品。用户可委托芯片生产厂家采用掩膜方法将程序制作在芯片的ROM。

(2)EPROM型单片机:内部具有紫外线可擦除电可编程的只读存储器,用户可以自行将程序写入到芯片内部的EPROM中,也可以将EPROM中 的信息全部擦除。擦去信息的芯片还可以再次写入新的程序,允许反复 改写。例如:MCS—51系列的8751。 EPROM型单片机使用比较方便,但价格较高,适合于研制产品或结构要求简单的小批量产品。 (3)无ROM型单片机:内部没有程序存储器,它必须连接程序存储器才能组成完整的应用系统。例如:MCS—51系列的8031。 无ROM型单片机价格低廉,用户可根据程序的大小来选择外接程序存储器的容量。这种单片机扩展灵活,但系统结构较复杂。 (4)E2ROM型单片机:内部具有电可擦除叫可编程的程序存储器,使用更为方便。例如:MCS—51的派生型89C51单片机。 (5)OTP(One Time Programmable)ROM单片机:内部具有一次可编程的程序存储器,用户可以在编程器上将程序写入片内程序存储器中,程序写入 后不能再改写。例如:NEC公司的μPD75P308GF—3B9。这种芯片的价格也较低。 4.控制器的组成和作用 答:控制器:由程序计数器、指令寄存器、指令译码器、时序发生器和操作控制器等组成。用来协调指挥计算机系统的操作。 5.微型计算机组成

MCS51单片机课后作业解答资料讲解

M C S51单片机课后作 业解答

MCS51单片机作业解答 第二章 MCS-51单片机的结构和原理 (1) MCS-51单片机芯片包含哪些主要功能部件? 答:CPU、4KBROM、128B RAM、4个8位I/O口、2个定时计数器、串行 I/O口、中断系统、时钟电路、位处理器、总线结构。 (2)MCS-51单片机的 /EA端有何用途? 答:当/EA =0 只访问片外程序区;当/EA=1时,先访问片内程序区,当PC 超过片内程序容量时,自动转向外部程序区。 (3)MCS-51单片机有哪些信号需要芯片引脚以第二功能的方式提供? 答:RXD、TXD、/INT0、/INT1、T0、T1、/WR、/RD (4)MCS-51单片机的4个I/O口在使用上各有什么功能和特点? 答:P1口通用输入输出;P0口数据总线、地址总线低8位、通用输入输出 P2口地址总线高8位、通用输入输出 P3第2功能信号、通用输入输出。 (5)单片机的存储器分哪几个空间? 试述各空间的作用。 答:程序存储器:内部ROM、外部ROM 数据存储器:内部基本RAM、专用寄存器区、外部RAM (6)简述片内RAM中包含哪些可位寻址单元? 答:20H~2FH共16个可寻址单元 (7)什么叫堆栈? 堆栈指针SP的作用是什么? 在程序设计中为何要对SP重新赋值? 答:只允许数据单端输入输出的一段存储空间。

SP的作用是用来存放堆栈栈顶的地址。 因为SP的初值是07H,后继的是寄存器区和位寻址区,为了便于编程 工作,要修改SP. (8)程序状态字寄存器PSW 的作用是什么?简述各位的作用。 答:PSW用来存放程序执行状态的信息, CY—加减运算的进位、借位 AC—辅助进位标志,加减运算的低4位进位、借位 (9)位地址65H 与字节地址65H 如何区别? 位地址65H具体在片内RAM中什么位置? 答:位地址65H中是一位0/1的数据,字节地址65H是8位0/1的数据。 位地址65H在片内RAM中2CH单元第5位。 (10)什么是振荡周期、时钟周期、机器周期和指令周期? 如何计算机器周期的 确切时间? 答:振荡周期——为单片机提供信号的振荡源的周期 时钟周期——振荡脉冲2分频的信号 机器周期——完成一个基本操作需要的时间,是振荡周期/12=1T 指令周期——执行1条指令需要的时间 1~4T (11)单片机工作时在运行出错或进入死循环时,如何处理? 答:复位处理,在单片机的RESET加持续1段时间的高电平 (12)使单片机复位的方法有几种?复位后单片机的初始状态如何? 分上电复位和手动复位。复位后PC=0000H ALE=0 /PSEN=1 (13)开机复位后,单片机使用的是哪组工作寄存器? 它们的地址是什么? 如何改变当前工作寄存器组?

第3章 寻址方式和指令系统作业

一、选择题 1.寄存器间接寻址方式中,要寻找的操作数位于( B )中。 A.通用寄存器 B.内存单元 C.段寄存器 D.堆栈 2.下列指令中正确的是( C )。 A.MOV AL,BX B.MOV CS,AX C.MOV AL,CL D.MOV [BX],[SI] 3.下列指令中错误的是( C )。 A.MOV AX,1234H B.INC BX C.SRL AX,2 D.PUSH DX 4.设(SP)=1010H,执行POP AX后,SP中的内容为( B )。 A.1011H B.1012H C.1OOEH D.100FH 5.给定(AL)=80H,(CL)=02H,指令SHR AL,CL执行后的结果是(B )。 A.(AL)=40H B.(AL)=20H C.(AL)=C0H D.(AL)=E0H 6.将AX清零并使CF位清零,下面指令错误的是( A )。 A.SUB AX,BX B.XOR AX,AX C.MOV AX,0 D.AND AX,0OOOH 二、填空题 2.寻址的含义是指_寻找操作数的过程_;8086指令系统的寻址方式按照大类可分为_与操作数有关的寻址方式、与I/O端口有关的寻址方式_;其中寻址速度最快的是_立即数寻址_。 4.堆栈是一个特殊的_存储器区域_,其操作是以_2字节单元_为单位按照__先进后出_原则来处理;采用_SP_指向栈顶地址,入栈时地址变化为_SP<=(SP)-2_。 5.I/O端口的寻址有_直接端口寻址和间接端口寻址_两种方式;采用8位数时,可访问的端口地址为_0~255_;采用16位数时,可访问的端口地址为_0~65535_。 三、分析计算题 1.指出如下指令中源操作数和目的操作数的寻址方式: (1)MOV AX,100H (2)MOV CX,AX (3)ADD [SI],1000 (4)SUB BX,[SI+100] (5)MOV [BX+300],AX (6)AND BP,[DI] 解: 源操作数的寻址方式目的操作数的寻址方式 (1)MOV AX,100H 立即数寄存器 (2)MOV CX,AX 寄存器寄存器 (3)ADD [SI],1000 立即数寄存器间接 (4)SUB BX,[SI+100] 变址寄存器 (5)MOV [BX+300],AX 寄存器变址 (6)AND BP,[DI] 寄存器间接寄存器 2.分析如下指令的正误,对错误指令说明出错误原因并加以收正: (1)MOV [1200],23H (2)MOV 1020H,CX (3)MOV [1000H],[2000H] (4)MOV IP,O00H

MCS51单片机指令系统练习

第二章MCS51单片机指令系统与汇编语言程序设计 1.8051单片机的指令系统有何特点? 解:8051的指令系统由111条指令组成。如果按字节数分类,有49条单字节指令46条双字节指令和16条三字节指令,以单字节指令为主;如果按照指令执行时间分类,有64条单周期指令、45条双周期指令和2条四周期指令,以单周期指令为主。 8051的指令系统具有以下特点: (1)存储效率高、执行速度快,可以进行直接地址到直接地址的数据传送,能把一个并行I/O口中的内容传送到内部RAM单元中而不必经过累加器A或工作寄存器Rn。这样可以大大提高传送速度和缓解累加器A的瓶颈效应。 (2)用变址寻址方式访问程序存储器中的表格,将程序存储器单元中的固定常数或表格字节内容传送到累加器A中。这为编成翻译算法提供了方便。 (3)在算术运算指令中设有乘法和除法指令 (4)指令系统中一些对I/O口进行操作的指令具有“读——修改——写”的功能。这一功能指:在执行读锁存器的指令时,CPU首先完成将锁存器的值通过缓冲器BUF2度入内部,进行修改、改变,然后重新写到锁存器中去。这种类型指令包含所有的逻辑操作和位操作指令。 (5)8051单片机内部有一个布尔处理器,对为地址空间具有丰富的位操作指令。布尔操作类指令有17条,包括布尔传送指令、布尔状态控制指令、布尔逻辑操作指令、布尔条件转移指令。 2.8051单片机指令系统按功能可分为几类?具有几种寻址方式?它们的寻址范围如何?解:MCS-51单片机指令系统按功能可分为5类: (1)数据传送指令 (2)算术运算指令 (3)逻辑运算和移位指令 (4)控制转移指令 (5)位操作指令 MCS-51单片机的指令系统提供了七种寻址方式,其对应的寻址范围如下表: 3.访问特殊功能寄存器和外部数据存储器应采用哪种寻址方式? 解:访问特殊功能寄存器,应采用直接寻址、位寻址方式。 访问外部数据存储器,应采用寄存器间接寻址方式。 1

相关文档
最新文档