MCS51指令系统及汇编程序设计

 

一、MSC--51指令系统包含111条基本指令。


  指令:是CPU按照人的意图来完成某种操作的命令,它以英文名称或缩写形式作为助记符。掌握MCS-51汇编语言指令是51单片机汇编设计程序的基础。

所占字节分,MCS-51指令分三种:(1)单字节指令49条:(2)双字节指令45条;(3)三字节指令17条。
执行时间分,MCS-51指令分三种:(1)1个机器周期指令64条 ;(2)2个机器周期指令45条;(3)4个机器周期指令2条(乘除指令)。其中,1个机器周期=12个时钟振荡周期

二 、MCS--51指令格式

【 标号:】  操作码   【操作数】 【;注释】

1、指令主要由两部分组成:操作码和操作数。

        操作码:代表指令进行什么操作

        操作数:代表指令操作对象(可能是一具体数据,也可能是指出到哪里取得数据,即地址或符号)

2、MCS-51指令格式一般有如下规定。

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

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

(3)三字节指令:操作码占一个1个字节,操作数占2个字节。

3、MCS--51指令举例

(1)单字节指令:MOV A, R2 (机器码: 11101010)

(2)双字节指令: MOV A, #0BH (机器码:74H 0BH)(操作码 + 立即数

  (3)   三字节指令: MOV  0BH,#0BH(机器码:75H 0BH 0BH)  (操作码 + 直接地址 + 立即数, 操作码 75H 表明要执行的操作,第一个 0BH 是目标地址,第二个 0BH 是要传送的数据。

 

三、MCS-51指令的寻址方式 

1、寄存器寻址

        指令中的操作数为某一寄存器的内容。

例:MOV A, Rn  ; 把Rn(n=0~7)中的源操作数送入到累加器A中

本寻址方式的寻址范围:(1)4组通用工作寄存器区共32个工作寄存器。只对当前工作寄存器区的8个工作寄存器寻址,指令中的寄存器名称只能是R0~R7.

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

2、直接寻址

    指令中直接给出操作数的单元地址(MCS-51单片机内部存储器分为若干个存储单元,每个存储单元对应一个地址,存储一个字节的信息),该单元地址中的内容就是操作数。

例:MOV 48H,66H     ; 把片内RAM中66H单元的内容送到48H单元中
注:直接寻址是访问片内所有特殊功能寄存器的唯一寻址方式。


3、寄存器间接寻址


     寄存器中存操作数地址,即先从寄存器中找到操作数的地址,再按该地址找到操作数。
指令标识:在寄存器名称前面加前缀标志“@”。


例:MOV A,@Ri;MCS-51规定RO、R1为间接寻址寄存器,即i=0或1;若Ri内容为40H,即把内部RAM 40H地址单元中的内容传送给A


4.立即数寻址(立即寻址、常数寻址)


   直接在指令中给出操作数。
指令标识:在操作数前加前缀标志“#
例:MOV A,#40H


5.基址寄存器加变址寄存器间接寻址(变址寻址)


    以DPTR或PC作为基址寄存器,以累加器A作为变址寄存器,两者内容相加形成的16
位地址作为目的地址进行寻址。
例:MOVC A, @A+DPTR
;若(A)=05H,(DPTR)=0400H,指令是把程序存储器0405H单元的内容传送给A

本寻址方式的指令有3条:
MOVC A, @A+DPTR
MOVC A, @A+PC
JMP @A+DPTR
间接跳转指令,把累加器 A 中的 8 位无符号数与数据指针 DPTR 中的 16 位地址相加,得出的和作为新的 16 位地址。之后,程序计数器 PC 的值会被更新为这个新地址,从而使程序跳转到该地址处继续执行。)


6.相对寻址


用于程序转移。以该转移指令的地址(PC)加上它的字节数,再加上相对偏移量(rel,带
符号8位二进制补码数,-128~+127),
形成新的转移目的地址,使程序转移到该目的地址。
目的地址=转移指令的地址+转移指令字节数+rel
例:LJMP rel;目的地址=该指令的PC值+3+rel,程序要转移到该处。编写程序时,只
需在转移指令中直接写要转向的地址标号。


例:LJMP LOOP;    “LOOP”为目的地址标号。汇编时,由汇编程序自动计算和填入偏移
量;手工汇编时,手工计算偏移量的值。


7.位寻址


对具有位寻址功能的某位内容进行置“1”、清“0”操作。位地址一般直接给出。
例:MOV C,40H;把位地址为40H的值送到进位C

你可能感兴趣的:(51单片机)