MCS-51指令系统

3.1 指令系统概述

指令系统:指令的集合。

介绍MCS-51汇编语言的指令系统。

MCS-51的基本指令共111条,按指令所占的字节来分:

(1)单字节指令49条

(2)双字节指令45条

(3)三字节指令17条

按指令的执行时间来分:

(1)1个机器周期(12个时钟振荡周期)指令64条

(2)2个机器周期(24个时钟振荡周期)指令45条

(3)只有乘、除两条指令的执行时间为4个机器周期(48个时钟振荡周期)

12MHz晶振:机器周期为1us。

指令的长度是单字节并不一定执行起来就是一个机器周期,例如

单字节周期RET 单字节四周期 乘(MUL) 除(DIV)双字节单周期ANL A,#00H

51指令不区分大小写

3.2 指令格式

即指令的表示方法

两部分组成,即操作码和操作数。

操作码用来规定指令进行什么操作

操作数则是指令操作的对象

有单字节指令、双字节指令、三字节不同长度的指令,格式不同:

(1)单字节指令:指令只有一个字节,操作码和操作数在同一个字节中。

(2)双字节指令:一个字节为操作码,另一个字节是操作数

(3)三字节指令:操作码占一个字节,操作数占两个字节。其中操作数既可能是数据,也可能是地址。

3.3 指令系统的寻址方式

寻址方式就是在指令中说明操作数所在地址的方法。

共7种寻址方式

  1. 寄存器寻址方式

操作数在寄存器中

MOV A, Rn;(Rn)-》A,n=0~7

表示把寄存器Rn的内容传送给累加器A

寻址范围包括:

(1)4组通用工作寄存区共32个工作寄存器

(2)部分特殊功能寄存器,例如A、B以及数据指针寄存器DPTR等。

b. 直接寻址方式

操作数直接以单元地址的形式给出:

MOV A, 40H

寻址范围:

(1)内部RAM的128个单元

(2)特殊功能寄存器。除了以单元地址的形式外,还可用寄存器符号的形式给出。例如

MOV A, 80H 与 MOV A, P0是等价的。

c. 寄存器间接寻址方式

寄存器中存放的是操作数的地址

在寄存器的名称前面加前缀标志“@”,访问内部RAM或外部数据存储器的低256个字节时,只能采用R0或R1作为间址寄存器。例如:

MOV R1, #40H

MOV A, @R1

把内部RAM中地址为40H单元内容送A。

寻址范围:

(1)访问内部RAM区,51系列128个字节,52系列256个字节,其通用形式为@Ri

(2)对片外数据存储器的64K字节的间接寻址,例如

MOV A, @DPTR

(3)片外数据存储器的低256字节,不建议使用。

例如: MOVX A, @Ri

(4)堆栈区

堆栈操作指令PUSH(压栈)和POP(出栈)使用堆栈指针(SP)作间址寄存器

d.立即寻址方式

操作数在指令中直接给出,需要操作数前面加前缀‘#’,若立即数的首位为A~F,前面还要加0.

MOV A, #40H

MOV A, #0FFH

e. 基址寄存器加变址寄存器间址寻址方式

本寻址方式是以DPTR或PC作基址寄存器,以累加器A作为变址寄存器。

例如:指令MOVC A, @A+DPTR其中A的原有内容为05H, DPTR的内容为0400H,该指令执行结果是把程序存储器0405H单元的内容传送给A。

说明:

(1)本寻址方式是专门针对程序存储器的寻址方式。寻址范围可达到64kb。

(2)本寻址方式的指令只有3条:

MOV A, @A+DPTR

MOVC A, @A+PC

JMP @A+DPTR

f. 位寻址方式

MCS-51有位处理功能,可以对数据位进行操作,例如 MOV C, 40H 是把为40H的值送到进位位C。

寻址范围包括:

(1)内部RAM中的位寻址区。位有两种表示方法,例如,40H;另一种是单元地址加上位,例如,(28H).0,指的是28H单元中的最低位,它们是等价的。

(2)特殊功能寄存器中的可寻址位

可寻址位在指令中有如下4种的表示方法:

  1. 直接使用位地址。如PSW.5的位地址为0D5H。

  1. 位名称的表示方法。例如:PSW.5是F0标志位,可使用F0表示该位。

  1. 单元地址加位数的表示方法。例如:(0D0H).5

  1. 特殊功能寄存器符号加位数的表示方法。例如:PSW.5

g.相对寻址方式

在相对寻址的转移指令中,给出了地址偏移量,以“rel”表示,即把PC的当前值加上偏移量就构成了程序转移的目的地址。

目的地址=转移指令所在的地址+转移指令的字节数+rel

偏移量rel是一带符号的8位二进制数补码数。

范围是:-128~+127

向地址增加方向最大可转移(127+转移指令字节)个单元地址,向地址减少方向最大可转移(128-转移指令字节)个单元地址。

3.4 MCS-51指令系统分类介绍

111条指令,按功能分类,可分为下面5大类:

数据传送类(28条)

算数操作类(24条)

逻辑运算类(25条)

控制转移类(17条)

位操作类(17条)

指令中符号的意义:

Rn当前寄存器区的8个工作寄存器R0~R7(n=0~7)

Ri 当前选中的寄存器区中可作间接寻址寄存器的2个寄存器R0、R1(i=

0.1)。

Direct直接地址,即8位的内部数据存储器单元或特殊功能寄存器的地址。

#data 包含在指令中的8位立即数

#data16 包含在指令中的16位立即数

rel 相对转移指令中的偏移量ÿ

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值