第三章 指令系统 程序举例
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MOV C,bit MOV bit,C
二、位变量修改指令
CLR C CLR bit CPL C CPL bit SETB C SETB bit
三、位变量逻辑操作指令 1.位变量逻辑与指令
ANL C,bit ANL C,/bit 功能:如果源位的布尔值是逻辑0,则进位标志清“0”,否 则进位标志保持不变。操作数前斜线“/”表示用寻址位 的逻辑非作源值,但不影响源位本身值,不影响别的标志。
3.逻辑异或指令 XRL A,Rn ;n=0~7 XRL A,direct XRL A,@Ri ;i=0、1 XRL A,#data XRL direct,A XRL direct,#data 功能:操作数之间执行按位的逻辑异或操作, 结果存放到目的操作数中去。
第六节 位操作指令
进位位CY(程序状态字PSW.7)作为累加器C,以 RAM和SFR内的位寻址区的位单元作为操作数, 进行位变量的传送、修改和逻辑等操作。 一、位变量传送指令
2.减1指令 DEC A DEC Rn ;n=0~7 DEC direct DEC @Ri ;i=0、1 功能: • 将指定的操作数减1。 • 除对A作影响P外不影响任何PSW标志。
三、乘法指令
MUL AB 功能:把累加器A和寄存器B中的8位无符号整数相乘,其16 位积的低位字节在累加器A中,高位字节在B中。 如果积大于255(0FFH),则置位溢出标志OV;否则清 “0”OV。进位标志CY总是清“0” 。
六、相对寻址
相对寻址方式是为实现程序的相对转移而设计的, 为相对转移指令所采用。将程序计数器PC的当前 值(取出本条指令后的PC值)与指令第二个字节 给出的偏移量(rel)相加,形成新的转移目标地 址。即目的地址=PC值+转移指令字节数+rel 如:SJMP rel ;(PC)←(PC) + 2 + rel 寻址范围:只能对程序存储器ROM进行寻址。 其中rel为带符号的8位二进制补码数,取值范围 -128~+127 。 rel可以是标号。
7.字节交换指令
XCH A,Rn ;n=0~7 XCH A,direct XCH A,@Ri ;i=0、1 功能:将累加器A的内容和源操作数内容相互交换。
8.半字节交换指令
XCHD A,@Ri ;i=0、1
功能:将A的低4位和R0或R1指出的RAM单元低4位相互交 换,各自的高4位保持不变。
二、累加器A与外部数据存储器传送指令
五、基寄存器加变址寄存器间接寻址
以16位的程序计数器PC或数据指针DPTR作 为基寄存器,以8位的累加器A作为变址寄存 器,基寄存器和变址寄存器的内容相加形成 16位的地址,该地址即为操作数的地址。
如:MOVC A, @A+DPTR 寻址范围:只能对程序存储器ROM进行寻 址,主要用于查表性质的访问。
2.带进位加法指令
ADDC A,Rn ;n=0~7 ADDC A,direct ADDC A,@Ri ;i=0、1 ADDC A,#data 功能: • 同时把所指出的第二操作数、进位标志与累加器 A内容相加,结果放在累加器中。 • 指令执行后,影响PSW标志位。
3.增量指令
INC A INC Rn ;n=0~7 INC direct INC @Ri ;i=0、1 INC DPTR 功能: • 把指令所指出的操作数加1。 • 除对A作影响P外不影响任何PSW标志。
第四节 算术运算指令
算术运算指令有加、减、乘、除法指令,增量和减量指令。 一、加法指令 1.不带进位的加法指令 ADD A,Rn ; n=0~7 ADD A,direct ADD A,@Ri ; i=0、1 ADD A,#data 功能: • 把所指出的第二操作数和累加器A的内容相加,其结果放 在累加器中。 • 指令执行后,影响PSW标志位。
2.位变量逻辑或指令
ORL C,bit ORL C,/bit 功能:如果源位的布尔值为1,则置位进位标志,否则进位 标志CY保持原来状态。同样,斜线“/”表示逻辑非。
第七节 控制转移指令
一、无条件转移指令 1.短跳转指令 AJMP addr11 指令编码: a10a9a800001 a7a6a5a4a3a2a1a0
四、常用的缩写符号
A 累加器ACC。 AB 累加器ACC和寄存器B组成的寄存器对。 C 进位标志位CY,也是位操作指令中的位累加器。 Rn 表示当前选中的通用寄存器R0~R7(n=0~7)。 Ri 表示通用寄存器中可用作8位地址指针的R0和R1 (i=0,1)。 direct 直接地址,取值为0~0FFH。 #data 立即数,表示一个常数。 @ 间接寻址。 addr 表示外部数据存储器的地址。 bit 表示内部RAM或特殊功能寄存器中的直接位地址。 × 寄存器。 (×) 寄存器内容。 ((×)) 由X寄存器寻址的存储器单元内容。 (×) 寄存器的内容取反。 rel 相对偏移量,其值为-128~+127。
第三章 MCS-51指令系统
第一节 指令系统概述
一、指令类型
MCS-51指令系统: • 数据传送指令 • 算术运算指令 • 逻辑运算指令 • 位操作指令 • 控制转移指令
二、指令格式
操作码 [操作数1],[操作数2],[操作数3] • 操作码:表示指令进行何种操作。 • 操作数:指出了参加操作的数据或数据存放的地 址。 操作数和操作码之间用一个或几个空格隔开,操 作数之间以逗号“,”分开。
第三节 数据传送指令
MOV <目的操作数>, <源操作数>
• 数据传送指令是指把源操作数传送到目的操作数。指令执 行后,源操作数的值不改变,目的操作数的值改为源操作 数赋给的相应值。 • 除以累加器A为目的操作数寄存器指令会对奇偶标志位P 有影响外,其余指令执行时均不会影响任何PSW的标志
位。
一、内部数据传送指令 1.以累加器A为目的操作数的指令
二、两个操作数的逻辑操作指令 1.逻辑与指令 ANL A,Rn ;n=0~7 ANL A,direct ANL A,@Ri ;i=0、1 ANL A,#data ANL direct,A ANL direct,#data 功能:操作数之间执行按位的逻辑与操作, 结果存放在目的操作数中。
2.逻辑或指令 ORL A,Rn ;n=0~7 ORL A,direct ORL A,@Ri ;i=0、1 ORL A,#data ORL direct,A ORL direct,# data 功能:操作数之间执行按位的逻辑或操作, 结果存到目的操作数中去。
MOV A,Rn ;n=0~7 MOV A,direct MOV A,@Ri ;i=0,1 MOV A,#data 功能:把源操作数的内容送入累加器A。
2.以Rn为目的操作数的指令
MOV Rn,A ;n=0~7 MOV Rn,direct MOV Rn,#data 功能:把源操作数的内容送入当前工作寄存器区的R0~R7 中的某一个寄存器。
三、伪指令
不产生机器语言指令,仅提供汇编控制信息。
1.定位伪指令
ORG m m:代表16位地址。 功能:指出汇编语言程序通过编译,得到的机器语言程序 的起始地址。
2.定义字节伪指令
DB X1,X2,·· ·,Xn Xi:单字节数据。它为十进制或十六进制数,也可以为一个 表达式。Xi也可以为由两个单引号“ˊ”所括起来的一个 字符串 ,每一个字符为一个ASCII码。 功能:X1,X2,…,Xn 送目标程序存储器,通常用于定义 一个常数表。
1.CLR A 功能:将累加器A清“0”,不影响CY、AC、OV等标志。 2.CPL A 功能:将累加器ACC的每一位逻辑取反。不影响标志。 3.左环移指令 RL A 4.带进位左环移指令 RLC A
5.右环移指令
RR A
6.带进位右环移指令
RRC A
7.累加器ACC半字节交换指令
SWAP A 功能:将累加器ACC的高半字节(ACC.7~ACC.4) 和低半字节(ACC.3~ACC.0)互换。
三、寄存器间接寻址
指令指出某一个寄存器的内容作为操作数的地址。 如:MOV A,@ R0 寻址空间:内部RAM(@R0、@R1、SP) 外部数据存储器(@R0、@R1、 @DPTR)
四、立即寻址
立即寻址方式中操作数包含在指令字节中, 即操作数以指令字节的形式存放于程序存储 器中。 如:MOV A , #3AH
MOVX A,@DPTR MOVX A,@Ri ; i=0,1 MOVX @DPTR,A MOVX @Ri,A 功能:将累加器A和外部扩展的 RAM/ IO口的数据传送。
三、查表指令
1.MOVC A,@A+PC 功能:以PC作为基址寄存器,A的内容作为无符 号数和PC内容(下一条指令的始地址)相加后得到 一个16位的地址,由该地址指出的程序存储器单 元内容送到累加器A。 2.MOVC A,@A十DPTR 功能:以DPTR作为基址寄存器,A的内容作为无 符号数和DPTR的内容相加得到一个16位的地址, 由该地址指出的程序存储器单元的内容送到累加 器A。
3.字定义伪指令 DW Y1,Y2,·· ·,Yn Yi:双字节数据。它可以为十进制或十六进制的数,也可 以为一个表达式。 功能:Y1,Y2,…,Yn送目标程序存储器,经常用于定 义一个地址表。 4.汇编结束伪指令 END 功能:汇编结束标志。 5.标号和注释 标号:操作码 [操作数1],[操作数2],[操作数3];注释 标号:加在指令之前,必须以字母开始,后跟1~8个字母 或数字,并以冒号“:”结尾。标号的值是它后面的指令 存储地址。 注释:对某一条指令或某一段程序的功能说明,它必须以 分号“;”开始 。
4.十进制调整指令
DA A 功能:对累加器A中由上一条加法指令(加数和被加数均为压 缩的BCD码)所获得8位结果进行调整,使它调整为压缩 BCD码的数。
二、减法指令 1.带进位减法指令
SUBB A,Rn ;n=0~7 SUBB A,direct SUBB A,@Ri ;i=0、1 SUBB A,#data 功能: • 从累加器中减去第二操作数和进位标志,结果在 累加器中。 • 指令执行后,影响PSW标志位。
MOV @Ri,A ;i=0、1 MOV @Ri,direct MOV @Ri,#data 功能:把源操作数内容送入R0或R1指出的内部RAM存贮单 元中。
5.16位数据传送指令
MOV DPTR,#datal6 功能:把16位常数送入DPTR。
6.堆栈操作指令
内部RAM中可以设定一个后进先出(LIFO)的堆栈 。 (1)进栈指令 PUSH direct 功能:首先将堆栈指针SP加1,然后把直接地址指出的内容 传送到堆栈指针SP寻址的内部RAM单元中。 (2)退栈指令 POP direct 功能:堆栈指针SP寻址的内部RAM单元内容送入直接地址 指出的字节单元中,堆栈指针SP减1。
3.以直接寻址的单元为目的操作数指令
MOV direct,A MOV direct,Rn ;n=0~7 MOV direct,direct MOV direct,@Ri ;i=0、1 MOV direct,#data 功能:把源操作数送入由直接地址指出的存储单元。
4.以寄存器间接寻址的单元为目的操作数指令
四、除法指令
DIV AB 功能:把累加器A中的8位无符号整数除以寄存器B中的8位 无符号整数,所得商的整数部分存放在累加器A中,余数 在寄存器B中。 如果原来B中的内容为0,即除数为0,则结果A和B中内容 不定,并置位溢出标志OV。在任何情况下,都清“0”CY。
第五节 逻辑运算指令
一、累加器A的逻辑操作指令
Biblioteka Baidu
第二节 寻址方式
寻址方式:指令给出参与运算的数据的方式。 一、寄存器寻址 指令指出某一个寄存器的内容作为操作数。 如:MOV A,R0 寻址空间:R0~R7 A、B、C、AB、DPTR 二、直接寻址 在指令中含有操作数的直接地址,该地址指出了参与运算或 传送的数据所在的字节单元或位的地址。 如:MOV A , 3AH 直接寻址方式访问以下三种存储空间: • 特殊功能寄存器(特殊功能寄存器只能采用直接寻址方式)。 • 内部数据存储器的低128字节。 • 位地址空间。
二、位变量修改指令
CLR C CLR bit CPL C CPL bit SETB C SETB bit
三、位变量逻辑操作指令 1.位变量逻辑与指令
ANL C,bit ANL C,/bit 功能:如果源位的布尔值是逻辑0,则进位标志清“0”,否 则进位标志保持不变。操作数前斜线“/”表示用寻址位 的逻辑非作源值,但不影响源位本身值,不影响别的标志。
3.逻辑异或指令 XRL A,Rn ;n=0~7 XRL A,direct XRL A,@Ri ;i=0、1 XRL A,#data XRL direct,A XRL direct,#data 功能:操作数之间执行按位的逻辑异或操作, 结果存放到目的操作数中去。
第六节 位操作指令
进位位CY(程序状态字PSW.7)作为累加器C,以 RAM和SFR内的位寻址区的位单元作为操作数, 进行位变量的传送、修改和逻辑等操作。 一、位变量传送指令
2.减1指令 DEC A DEC Rn ;n=0~7 DEC direct DEC @Ri ;i=0、1 功能: • 将指定的操作数减1。 • 除对A作影响P外不影响任何PSW标志。
三、乘法指令
MUL AB 功能:把累加器A和寄存器B中的8位无符号整数相乘,其16 位积的低位字节在累加器A中,高位字节在B中。 如果积大于255(0FFH),则置位溢出标志OV;否则清 “0”OV。进位标志CY总是清“0” 。
六、相对寻址
相对寻址方式是为实现程序的相对转移而设计的, 为相对转移指令所采用。将程序计数器PC的当前 值(取出本条指令后的PC值)与指令第二个字节 给出的偏移量(rel)相加,形成新的转移目标地 址。即目的地址=PC值+转移指令字节数+rel 如:SJMP rel ;(PC)←(PC) + 2 + rel 寻址范围:只能对程序存储器ROM进行寻址。 其中rel为带符号的8位二进制补码数,取值范围 -128~+127 。 rel可以是标号。
7.字节交换指令
XCH A,Rn ;n=0~7 XCH A,direct XCH A,@Ri ;i=0、1 功能:将累加器A的内容和源操作数内容相互交换。
8.半字节交换指令
XCHD A,@Ri ;i=0、1
功能:将A的低4位和R0或R1指出的RAM单元低4位相互交 换,各自的高4位保持不变。
二、累加器A与外部数据存储器传送指令
五、基寄存器加变址寄存器间接寻址
以16位的程序计数器PC或数据指针DPTR作 为基寄存器,以8位的累加器A作为变址寄存 器,基寄存器和变址寄存器的内容相加形成 16位的地址,该地址即为操作数的地址。
如:MOVC A, @A+DPTR 寻址范围:只能对程序存储器ROM进行寻 址,主要用于查表性质的访问。
2.带进位加法指令
ADDC A,Rn ;n=0~7 ADDC A,direct ADDC A,@Ri ;i=0、1 ADDC A,#data 功能: • 同时把所指出的第二操作数、进位标志与累加器 A内容相加,结果放在累加器中。 • 指令执行后,影响PSW标志位。
3.增量指令
INC A INC Rn ;n=0~7 INC direct INC @Ri ;i=0、1 INC DPTR 功能: • 把指令所指出的操作数加1。 • 除对A作影响P外不影响任何PSW标志。
第四节 算术运算指令
算术运算指令有加、减、乘、除法指令,增量和减量指令。 一、加法指令 1.不带进位的加法指令 ADD A,Rn ; n=0~7 ADD A,direct ADD A,@Ri ; i=0、1 ADD A,#data 功能: • 把所指出的第二操作数和累加器A的内容相加,其结果放 在累加器中。 • 指令执行后,影响PSW标志位。
2.位变量逻辑或指令
ORL C,bit ORL C,/bit 功能:如果源位的布尔值为1,则置位进位标志,否则进位 标志CY保持原来状态。同样,斜线“/”表示逻辑非。
第七节 控制转移指令
一、无条件转移指令 1.短跳转指令 AJMP addr11 指令编码: a10a9a800001 a7a6a5a4a3a2a1a0
四、常用的缩写符号
A 累加器ACC。 AB 累加器ACC和寄存器B组成的寄存器对。 C 进位标志位CY,也是位操作指令中的位累加器。 Rn 表示当前选中的通用寄存器R0~R7(n=0~7)。 Ri 表示通用寄存器中可用作8位地址指针的R0和R1 (i=0,1)。 direct 直接地址,取值为0~0FFH。 #data 立即数,表示一个常数。 @ 间接寻址。 addr 表示外部数据存储器的地址。 bit 表示内部RAM或特殊功能寄存器中的直接位地址。 × 寄存器。 (×) 寄存器内容。 ((×)) 由X寄存器寻址的存储器单元内容。 (×) 寄存器的内容取反。 rel 相对偏移量,其值为-128~+127。
第三章 MCS-51指令系统
第一节 指令系统概述
一、指令类型
MCS-51指令系统: • 数据传送指令 • 算术运算指令 • 逻辑运算指令 • 位操作指令 • 控制转移指令
二、指令格式
操作码 [操作数1],[操作数2],[操作数3] • 操作码:表示指令进行何种操作。 • 操作数:指出了参加操作的数据或数据存放的地 址。 操作数和操作码之间用一个或几个空格隔开,操 作数之间以逗号“,”分开。
第三节 数据传送指令
MOV <目的操作数>, <源操作数>
• 数据传送指令是指把源操作数传送到目的操作数。指令执 行后,源操作数的值不改变,目的操作数的值改为源操作 数赋给的相应值。 • 除以累加器A为目的操作数寄存器指令会对奇偶标志位P 有影响外,其余指令执行时均不会影响任何PSW的标志
位。
一、内部数据传送指令 1.以累加器A为目的操作数的指令
二、两个操作数的逻辑操作指令 1.逻辑与指令 ANL A,Rn ;n=0~7 ANL A,direct ANL A,@Ri ;i=0、1 ANL A,#data ANL direct,A ANL direct,#data 功能:操作数之间执行按位的逻辑与操作, 结果存放在目的操作数中。
2.逻辑或指令 ORL A,Rn ;n=0~7 ORL A,direct ORL A,@Ri ;i=0、1 ORL A,#data ORL direct,A ORL direct,# data 功能:操作数之间执行按位的逻辑或操作, 结果存到目的操作数中去。
MOV A,Rn ;n=0~7 MOV A,direct MOV A,@Ri ;i=0,1 MOV A,#data 功能:把源操作数的内容送入累加器A。
2.以Rn为目的操作数的指令
MOV Rn,A ;n=0~7 MOV Rn,direct MOV Rn,#data 功能:把源操作数的内容送入当前工作寄存器区的R0~R7 中的某一个寄存器。
三、伪指令
不产生机器语言指令,仅提供汇编控制信息。
1.定位伪指令
ORG m m:代表16位地址。 功能:指出汇编语言程序通过编译,得到的机器语言程序 的起始地址。
2.定义字节伪指令
DB X1,X2,·· ·,Xn Xi:单字节数据。它为十进制或十六进制数,也可以为一个 表达式。Xi也可以为由两个单引号“ˊ”所括起来的一个 字符串 ,每一个字符为一个ASCII码。 功能:X1,X2,…,Xn 送目标程序存储器,通常用于定义 一个常数表。
1.CLR A 功能:将累加器A清“0”,不影响CY、AC、OV等标志。 2.CPL A 功能:将累加器ACC的每一位逻辑取反。不影响标志。 3.左环移指令 RL A 4.带进位左环移指令 RLC A
5.右环移指令
RR A
6.带进位右环移指令
RRC A
7.累加器ACC半字节交换指令
SWAP A 功能:将累加器ACC的高半字节(ACC.7~ACC.4) 和低半字节(ACC.3~ACC.0)互换。
三、寄存器间接寻址
指令指出某一个寄存器的内容作为操作数的地址。 如:MOV A,@ R0 寻址空间:内部RAM(@R0、@R1、SP) 外部数据存储器(@R0、@R1、 @DPTR)
四、立即寻址
立即寻址方式中操作数包含在指令字节中, 即操作数以指令字节的形式存放于程序存储 器中。 如:MOV A , #3AH
MOVX A,@DPTR MOVX A,@Ri ; i=0,1 MOVX @DPTR,A MOVX @Ri,A 功能:将累加器A和外部扩展的 RAM/ IO口的数据传送。
三、查表指令
1.MOVC A,@A+PC 功能:以PC作为基址寄存器,A的内容作为无符 号数和PC内容(下一条指令的始地址)相加后得到 一个16位的地址,由该地址指出的程序存储器单 元内容送到累加器A。 2.MOVC A,@A十DPTR 功能:以DPTR作为基址寄存器,A的内容作为无 符号数和DPTR的内容相加得到一个16位的地址, 由该地址指出的程序存储器单元的内容送到累加 器A。
3.字定义伪指令 DW Y1,Y2,·· ·,Yn Yi:双字节数据。它可以为十进制或十六进制的数,也可 以为一个表达式。 功能:Y1,Y2,…,Yn送目标程序存储器,经常用于定 义一个地址表。 4.汇编结束伪指令 END 功能:汇编结束标志。 5.标号和注释 标号:操作码 [操作数1],[操作数2],[操作数3];注释 标号:加在指令之前,必须以字母开始,后跟1~8个字母 或数字,并以冒号“:”结尾。标号的值是它后面的指令 存储地址。 注释:对某一条指令或某一段程序的功能说明,它必须以 分号“;”开始 。
4.十进制调整指令
DA A 功能:对累加器A中由上一条加法指令(加数和被加数均为压 缩的BCD码)所获得8位结果进行调整,使它调整为压缩 BCD码的数。
二、减法指令 1.带进位减法指令
SUBB A,Rn ;n=0~7 SUBB A,direct SUBB A,@Ri ;i=0、1 SUBB A,#data 功能: • 从累加器中减去第二操作数和进位标志,结果在 累加器中。 • 指令执行后,影响PSW标志位。
MOV @Ri,A ;i=0、1 MOV @Ri,direct MOV @Ri,#data 功能:把源操作数内容送入R0或R1指出的内部RAM存贮单 元中。
5.16位数据传送指令
MOV DPTR,#datal6 功能:把16位常数送入DPTR。
6.堆栈操作指令
内部RAM中可以设定一个后进先出(LIFO)的堆栈 。 (1)进栈指令 PUSH direct 功能:首先将堆栈指针SP加1,然后把直接地址指出的内容 传送到堆栈指针SP寻址的内部RAM单元中。 (2)退栈指令 POP direct 功能:堆栈指针SP寻址的内部RAM单元内容送入直接地址 指出的字节单元中,堆栈指针SP减1。
3.以直接寻址的单元为目的操作数指令
MOV direct,A MOV direct,Rn ;n=0~7 MOV direct,direct MOV direct,@Ri ;i=0、1 MOV direct,#data 功能:把源操作数送入由直接地址指出的存储单元。
4.以寄存器间接寻址的单元为目的操作数指令
四、除法指令
DIV AB 功能:把累加器A中的8位无符号整数除以寄存器B中的8位 无符号整数,所得商的整数部分存放在累加器A中,余数 在寄存器B中。 如果原来B中的内容为0,即除数为0,则结果A和B中内容 不定,并置位溢出标志OV。在任何情况下,都清“0”CY。
第五节 逻辑运算指令
一、累加器A的逻辑操作指令
Biblioteka Baidu
第二节 寻址方式
寻址方式:指令给出参与运算的数据的方式。 一、寄存器寻址 指令指出某一个寄存器的内容作为操作数。 如:MOV A,R0 寻址空间:R0~R7 A、B、C、AB、DPTR 二、直接寻址 在指令中含有操作数的直接地址,该地址指出了参与运算或 传送的数据所在的字节单元或位的地址。 如:MOV A , 3AH 直接寻址方式访问以下三种存储空间: • 特殊功能寄存器(特殊功能寄存器只能采用直接寻址方式)。 • 内部数据存储器的低128字节。 • 位地址空间。