当前位置:文档之家› 51单片机 第三章 指令系统

51单片机 第三章 指令系统

51单片机 第三章 指令系统
51单片机 第三章 指令系统

MCS-51指令系统

第三章MCS -51指令系统单片机原理及应用

第三章MCS-51指令系统2

第一节指令系统概述

一、指令的概念

机器语言:用二进制代码来描述指令功能的语言。目标程序:用机器语言组成的程序。

汇编语言:为方便编写、记忆和阅读,用助记符描述指令。汇编指令格式:

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

例:LOOP: ADD A, #10H ;立即数#10H 送A

→机器码:2410H

第三章MCS-51指令系统3

机器码指令按指令的字节长度划分,有三种:

(1)单字节指令:只有一字节的操作码,操作数隐含其中。如指令“INC A”,操作码04H ,在ROM 中占一个字节(2)双字节指令:一个字节的操作码,一个字节的操作数。如指令“ADD A ,#22H”

操作码和操作数为24H 22H ,目的操作数隐含在操作码中,在ROM 中占两个字节。

(3)三字节指令:一个字节操作码,两个字节操作数。例如指令“MOV 5EH ,4FH”

其中操作码为85H ,目的操作数5EH ,源操作数4FH ,在ROM 中占三个字节。

第三章MCS-51指令系统指令系统概述

9MCS-51系列使用42种助记符,有51种基本操作。

通过助记符及源和目的操作数的不同组合构成了MCS-51的111条指令。

9MCS-51的指令系统按字节数分为:?单字节指令49条;?双字节指令46条;?三字节指令16条。9按指令执行的周期划分:

?单周期指令有57条;?双周期指令52条;

?四周期指令(乘法和除法) 2条。

第三章MCS-51指令系统

5

二、指令中常用符号

描述指令的一些符号意义: ⑴Ri 和Rn :

R 表示当前工作寄存器区中的寄存器

i 取0或1,即R0和R1 n 取0~7,即R0~R7

工作寄存器区是由PSW 的RS1和RS0位决定的。⑵#data :#表示立即数,data 为8位常数。#data 是指

包含在指令中的8位立即数。⑶#data16:包含在指令中的16位立即数。

第三章MCS-51指令系统

6

⑷rel :相对地址,地址偏移量,以补码形式表示,范

围为-128~+127,主要用于SJMP (无条件相对短转

移指令)和所有的条件转移指令中。

⑸addr16:16位目的地址,64KB 程序地址范围,主要

用于LJMP 和LCALL 。

⑹addr11:11位目的地址,2KB 程序地址范围,主要

用于AJMP 和ACALL 。⑺direct :表示8位内部RAM 单元地址,包括SFR 的地址。

SFR 可直接用名称来代替直接地址。

⑻bit :内部RAM 或SFR 中的可直接寻址位。

第三章MCS-51指令系统

7

⑼@:间接寻址或基址寄存器的前缀。

例如:@Ri 、@DPTR ,@A+DPTR

⑽(X):表示X 中的内容。

⑾((X)):表示由X 寻址的单元中的内容,即(X)作地址,该

地址的内容用((X))表示。

⑿/:表示对该位操作数取反,但不影响该位的原值。

←:表示指令操作流程,将箭头一方的内容送入箭头另一方的单元中去。

⒀$

:当前指令的地址

第三章MCS-51指令系统

指令对标志位的影响

9

第二节寻址方式

MCS -51指令系统中有7种寻址方式:?立即寻址; ?直接寻址; ?寄存器寻址; ?寄存器间接寻址; 

?基址寄存器加变址寄存器间接寻址; ?相对寻址; ?位寻址。

第三章MCS-51指令系统10

一、立即寻址

操作数显现在指令中,它紧跟在操作码的后面,与操作码一起存放在程序存储器内。例如:ADD A ,#34H

第三章MCS-51指令系统11

二、寄存器寻址

指定某寄存器的内容作为操作数。

例如:MOV A, R0 ; (A)←(R0)操作码:

在该条指令中,源操作数和目的操作数是由寻址R0和A 得到。

寄存器包括:R0~R7、A 、B 、DPTR 和布尔处理器的C 。

1 1 1 0

1 r r r

第三章MCS-51指令系统

三、间接寻址

把寄存器的内容作为操作数的地址。

?寻址内部RAM 区时:只能用R0、R1作地址指针,但不能访问SFR ;

?当访问外部RAM 时:可用R0、R1及DPTR 作为地址指针。

?寄存器间接寻址符号为@

13

四、直接寻址

在指令中直接给出操作数所在的地址。直接寻址可以访问3 种存储器空间:

(1) 内部RAM 的低128个字节单元(00H ~7FH)。例如:MOV A, 00H ; (A)←(00H) R0(2) 位地址空间。

例如:MOV C, E0H ; Cy ←(位E0H) Acc.0(3) SFR 只能用直接寻址方式进行访问。例如:MOV A, P1 ; Acc ←P1(地址90H)

第三章MCS-51指令系统

14

五、变址寻址

基址寄存器加变址寄存器间接寻址。用于ROM 的访问。

数据指针DPTR 程序计数器PC 变址寻址有两类:

(1)以PC 作基址

MOVC A ,@A+PC ; (PC)←(PC)+1;(A)←((A)+(PC))(2)以DPTR 作基址

MOV DPTR ,#2000H ;DPTR 赋值MOV A ,#09H

MOVC A ,@A+DPTR

作基址寄存器,A 作变址寄存器

第三章MCS-51指令系统

15

六、相对寻址

用于访问ROM ,常用在相对转移指令中。

例如:JZ rel ;rel 范围-128~+127

在使用相对寻址时注意:

①指令执行时修正PC 例:JZ 75H 是双字节指令。

若该指令地址为2000H ,则执行该指令时修正PC 值为2002H ,若满足条件,则跳转到2077H 。

当前PC 值+本指令字节长度+偏移量rel

=实际地址第三章MCS-51指令系统

②偏移量rel 是有符号的单字节数,以补码表示。rel 数值范围:-128~+127例如:JZ 08H

JZ 0F4H

17

特定寄存器寻址

A 和DPTR 使用最频繁,称为特定寄存器。对特定寄存器的操作指令,不需要指出其地址字节,指令码本身隐含了A 或DPTR 。例如:CPL A ;累加器内容取反

SWAP A ;累加器高低半字节内容交换INC DPTR

;数据指针内容加1

第三章MCS-51指令系统18

七、位寻址

位寻址指令中直接给出位地址,可直接对内部RAM 中的128位和SFR 中的93位进行寻址;位操作指令可进行传送及逻辑操作。例如: SETB PSW.3;(PSW.3) ←1

该指令说明:

9将PSW 中的RS0置19为双字节指令

9机器代码为D2H D3H

9指令中直接给出位地址

D3H

第三章MCS-51指令系统7 种寻址方式及使用空间

第三章MCS-51指令系统第三节MCS-51指令系统

按功能可分为5 类: 9数据传送9算术运算9逻辑运算9位操作9控制转移

21

一、数据传送指令

9影响标志:奇偶标志P 9分3类:

数据传送:MOV 、MOVX 、MOVC 数据交换:XCH 、XCHD 、SWAP 堆栈操作:PUSH 、POP

第三章MCS-51指令系统

22

1.内部数据传送指令

⑴一般传送指令

格式:MOV 功能:字节变量传送①以A 为目的操作数例3-1 MOV A ,#4DH

;立即寻址MOV A ,3FH ;直接寻址MOV A ,@R0;间接寻址MOV A ,R7;寄存器寻址②以A 为源操作数例3-2 MOV R7,A

;寄存器寻址MOV 90H ,A ;直接寻址MOV @R0,A

;间接寻址

第三章MCS-51指令系统

23

③两个RAM 单元或SFR 之间传送数据。

源操作数有直接(direct)、间接(@Ri)和寄存器(Rn)寻址三种类型。例3-3 MOV 3EH ,3FH

MOV PSW ,#08H ;定义工作寄存器区1MOV 30H ,#30H MOV R7,3FH MOV R0,#30H MOV 40H ,@R0 MOV @R0,#20H MOV @R1,20H

第三章MCS-51指令系统

例3-4 设内部RAM 30H 单元内容为40H ,40H 内容为10H ,P1口作为输入口,其输入的数据为0CAH ,试判断下列程序的执行结果。机器码指令

7830H MOV R0,#30H E6H MOV A ,@R0 F9H MOV R1,A 87F0H MOV B ,@R1 A790H MOV @R1,P1 85A090H

MOV P2,P1

10H

40H 40H

30H 内部RAM

25

⑵栈操作指令

格式:PUSH direct ——入栈操作:(SP)←(SP)+1

((SP))←(direct)

例3-5 设SP 为09H ,DPTR 内容为0123H ,试分析下列指令的执行结果

PUSH DPL PUSH DPH

第三章MCS-51指令系统26

格式:POP direct ——出栈操作:(direct) ←((SP))

(SP)←(SP) -1

例3-6 设(SP)=32H ,内部RAM 的31H 、32H 中的内容分别为23H 、01H ,分析下列指令的执行结果。

POP DPH POP DPL

注意:PUSH 和POP 指令是成对出现的。

第三章MCS-51指令系统27

⑶数据交换指令

格式:XCH A ,

说明:指定字节的内容与A 进行字节交换。

XCH A, direct XCH A, @Ri XCH A, Rn

例3-7 设R0内容为20H ,A 内容为3FH ,内部RAM 的20H 单元内容为75H ,若执行指令:

XCH A ,@R0

则结果为:(20H)=3FH ,(A)=75H

第三章MCS-51指令系统

格式:XCHD A ,@Ri

功能:低半字节数据交换

说明:A 的低4位与内部RAM 的低4位数据交换。不影响高4位和标志位。

例3-8 设R0内容为20H ,累加器内容为36H ,内部RAM 的20H 单元内容为75H 。若执行指令

XCHD A ,@R0

其结果为(20H)=01110110B =76H (A)=00110101B =35H

29

2.外部RAM 数据传送

MOVX ,

功能:对A 进行的外部RAM 数据传送。

MOVX A ,@Ri MOVX @Ri ,A MOVX A ,@DPTR MOVX @DPTR ,A 访问外部RAM :用@Ri 、@DPTR 。

第三章MCS-51指令系统

30

例3-10 某单片机系统配有2KB 的外部RAM ,试编程序把0FAH 单元内容传送到04FFH 单元。

MOV DPTR ,#04FFH MOV R0,#0FAH MOVX A ,@R0MOVX @DPTR ,A

说明:在对外部RAM 数据传送时,单片机引脚WR/RD 起作用。

第三章MCS-51指令系统

31

3.查表指令

访问ROM 包括:跳转指令、查表指令读取ROM 中的表格数据或常数用查表指令:

MOVC A ,@A+DPTR MOVC A ,@A+PC

以DPTR 作为基址寄存器,可以访问最多256项,表格

可放在64KB ROM 任何位置。

以PC 作为基址寄存器,表格位置只能设在查表指令操作码下的256字节范围。

第三章MCS-51指令系统

例3-11 累加器A 的内容为一个BCD 常数,试用查表法获得其相应的ASCII 码。程序段为:BA1:MOV DPTR ,#TAB

MOVC A ,@A+DPTR ;查表(ACSII 码)送A ...

TAB :DB 30H

DB 31H ...DB 39H

33

1.加法指令

⑴不带进位加法:

ADD A, #data ; (A) ←(A)+#data ADD A, direct ; (A) ←(A)+(direct) ADD A, @Ri ; (A) ←(A)+((Ri))ADD A, Rn

; (A) ←(A)+(Rn)

⑵带进位加法:

ADDC A, Rn ADDC A, direct ADDC A, @Ri ADDC A, #data

影响标志:Cy 、AC 、OV 和P 。

二、算术指令

第三章MCS-51指令系统

34

⑶增量指令INC A INC Rn INC direct INC @Ri INC DPTR 影响标志:无。

9若原内容为0FFH, 加1变成00H ,但不影响任何标志9INC direct ,当direct 为P0~P1时,读入端口的值取自端口锁存器,而不是引脚。

第三章MCS-51指令系统35⑷十进制调整指令

DA A

操作:if [(A 3~0)>9] or [(AC)=1] then (A 3~0)←(A 3~0)+6

if [(A 7~4)>9] or [(C)=1] then (A 7~4)←(A 7~4)+6

例3-15 设累加器A 中为压缩的BCD 码56H ,R3中为压缩的BCD 码67H ,进位标志为1,执行下列指令:

ADDC A ,R3DA A

第三章MCS-51指令系统说明:

(1)DA 指令不影响OV 位;(2)单独执行DA 指令没有意义;

(3)借助Cy 位可实现多位BCD 加法结果的调整;(4)不能用DA 指令对十进制减法运算结果进行调整。例:ADD

A ,#1DA A

ADD A ,#99H DA

A

37

2.减法指令

⑴带进位减法指令

SUBB A, Rn SUBB A, direct SUBB A, @Ri SUBB A, #data

注意:在带符号整数相减时,不同符号的两个数相减时可能会溢出。⑵减1指令 

DEC A DEC Rn DEC direct DEC @Ri 第三章MCS-51指令系统

38

3.乘法和除法指令(无符号数)乘法:MUL AB ;(B 7~0)(A 7~0) ←(A)(B)如果乘积超过0FFH ,则OV 置1, 否则清0。Cy=0。

除法:DIV AB

;(A)←(A) / (B) 的商;(B)←(A) / (B) 的余数;(Cy)←0,(OV)←0

第三章MCS-51指令系统

39

三、逻辑指令

1. 对累加器的逻辑操作

CLR A ; 清“0” 

CPL A

;

按位取反

第三章MCS-51指令系统

RL A RR A RLC A RRC A SWAP A

;累加器高4位与低4位内容交换 

除带进位标志位的移位指令外,其它都不影响

41

例3-26 设计把累加器A 中的二进制数转换为3位BCD 码数的程序。百位数存30H 单元,十位数和个位数存31H 单元。程序为:

MOV B ,#100

;除数送B

DIV AB ;(A)/100,得到百位数MOV 30H ,A ;百位数存30H 单元MOV A ,#10;除数送A

XCH A ,B ;余数送A ,除数送B

DIV AB ;(A)/10,十位和个位分别在A 和B 的低4位SWAP A ;把十位数移到A 的高4位ADD A ,B ;组成压缩的BCD 码MOV 31H ,A

:存入31H

第三章MCS-51指令系统42

2. 逻辑与指令

ANL A ,Rn

ANL A ,direct ANL A ,@Ri ANL A ,#data ANL direct ,A

ANL direct ,#data

例3-28 要修改P1口输出内容(设原内容为35H),使其高4位输出为0,低4位保持不变,可执行指令:

ANL P1,#0FH 作用:对字节中的位清0操作。

第三章MCS-51指令系统43

3. 逻辑或指令

ORL A ,Rn ORL A ,direct ORL A ,@Ri ORL A ,#data ORL direct ,A ORL direct ,#data 例3-29 设(A)=0F0H ,(R0)=0FH 执行指令:ORL A ,R0结果:(A)=0FFH

作用:对字节中的位置1操作。

第三章MCS-51指令系统4. 逻辑异或指令

XRL A, Rn XRL A, direct XRL A, @Ri XRL A, #data XRL direct, A XRL direct, #data 例3-31 执行指令:

XRL P1,#00110001B

结果使P1.5,P1.4,P1.0的输出取反。45

例3-32 试分析下列程序执行结果MOV A ,#0FFH ANL P1,#00H ORL P1,#55H XRL P1,A

;(A)=0FFH ;P1口清0;P1口内容为55H ;P1口的内容为0AAH

第三章MCS-51指令系统

46

四、转移指令

1. 无条件转移指令LJMP addr16;64K 范围的长跳转AJMP addr11;2KB 范围的绝对跳转SJMP rel ;短跳转

JMP @A+DPTR ;间接长跳转(散转指令)

LCALL addr16ACALL addr11RET ;子程序返回

RETI ;中断返回,清中断状态标志NOP

;空操作,用于程序的延时

第三章MCS-51指令系统

47

2.条件转移指令JZ rel JNZ rel

CJNE A ,direct, rel CJNE A ,#data, rel CJNE Rn ,#data, rel CJNE @Ri ,#data, rel DJNZ Rn, rel DJNZ direct, rel

A 判0和非0转移指令

比较转移指令

减1循环转移指令

第三章MCS-51指令系统

例3-42 将外部RAM 的数据块传送到内部数据RAM ,遇到传送的数据为0时停止。START :MOV R0,#DATA2 MOV DPTR ,#DATA1

LOOP1:MOVX A ,@DPTR

JZ LOOP2MOV @R0,A INC R0INC DPTR SJMP LOOP1

LOOP2:RET

49五、布尔指令

布尔指令包括:位变量传送、逻辑运算、控制程序转移等。

⑴内部RAM 和SFR 的可寻址位:

位寻址区:字节地址20H-2FH ,对应位地址00~7FH ; 可位寻址的SFR :如A 、B 、PSW 、IP 、IE 、SCON 、TCON 、P0~P3。 在对位操作时,CY 用作“位累加器”。

第三章MCS-51指令系统50

⑵位地址表示方法

9直接使用位地址:如00H~FFH 9位寄存器定义名:如RS1,C ,OV ,F09点操作符号:如PSW.4,P0.5,ACC.29用字节地址和位数表示:如20H.0~20H.7,0D0H.0~0D0H.79用伪指令bit 定义名:

I2C bit P1.0

定义后,可用I2C 代替P1.0。

第三章MCS-51指令系统

51

1.位传送指令MOV C, bit MOV bit, C

2.位变量修改指令CLR C CLR bit CPL C CPL bit SETB C SETB bit

3.位逻辑操作指令ANL C, bit ANL C, /bit ORL C, bit ORL C, /bit

4.布尔条件转移指令JC rel JNC rel JB bit, rel JNB bit, rel JBC bit, rel

第三章MCS-51指令系统

例3-47 编程通过P1.0端口线连续输出256个宽度5个机器周期长的方波。程序为:

MOV R0,#00H CLR P1.0LOOP :CPL P1.0

NOP NOP

DJNZ R0,LOOP

53

例3-51 比较内部RAM 的30H 和40H 中的两个无符号数,将大数存入20H ,小数存入21H 。若两数相等则使内部RAM 的127可寻址位置1。程序为:

START :MOV A ,30H

CJNE A ,40H ,LOOP1 SETB 7FH RET

LOOP1:JC LOOP2

MOV 20H ,A MOV 21H ,40H RET

LOOP2:MOV 20H ,40H

MOV 21H ,A

RET

第三章MCS-51指令系统

例3-52 试判断累加器A 中数的正负,若为正数,存入20H 单元,若为负数则存入21H 单元。程序:

START :JB ACC.7,LOOP

MOV 20H ,A RET

LOOP: MOV 21H ,A

RET

51单片机汇编指令速查表

51单片机汇编指令速查表 指令格式功能简述字节数周期 一、数据传送类指令 MOV A, Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A ,@Ri 内部RAM单元送累加器 1 1 MOV @Ri ,A 累加器送内部RAM单元 1 1 MOV A ,#data 立即数送累加器 2 1 MOV A ,direct 直接寻址单元送累加器 2 1 MOV direct ,A 累加器送直接寻址单元 2 1 MOV Rn,#data 立即数送寄存器 2 1 MOV direct ,#data 立即数送直接寻址单元 3 2 MOV @Ri ,#data 立即数送内部RAM单元 2 1 MOV direct ,Rn 寄存器送直接寻址单元 2 2 MOV Rn ,direct 直接寻址单元送寄存器 2 2 MOV direct ,@Ri 内部RAM单元送直接寻址单元 2 2 MOV @Ri ,direct 直接寻址单元送内部RAM单元 2 2 MOV direct2,direct1 直接寻址单元送直接寻址单元 3 2 MOV DPTR ,#data16 16位立即数送数据指针 3 2 MOVX A ,@Ri 外部RAM单元送累加器(8位地址) 1 2 MOVX @Ri ,A 累加器送外部RAM单元(8位地址) 1 2 MOVX A ,@DPTR 外部RAM单元送累加器(16位地址) 1 2 MOVX @DPTR ,A 累加器送外部RAM单元(16位地址) 1 2 MOVC A ,@A+DPTR 查表数据送累加器(DPTR为基址) 1 2 MOVC A ,@A+PC 查表数据送累加器(PC为基址) 1 2 XCH A ,Rn 累加器与寄存器交换 1 1 XCH A ,@Ri 累加器与内部RAM单元交换 1 1 XCHD A ,direct 累加器与直接寻址单元交换 2 1 XCHD A ,@Ri 累加器与内部RAM单元低4位交换 1 1 SWAP A 累加器高4位与低4位交换 1 1 POP direct 栈顶弹出指令直接寻址单元 2 2 PUSH direct 直接寻址单元压入栈顶 2 2 二、算术运算类指令 ADD A, Rn 累加器加寄存器 1 1

第三章指令系统

第5章指令系统 一、判断题 (×)1.执行指令时,指令在内存中的地址存放在指令寄存器中。 (√)2.程序计数器PC用来指示从内存中取指令。 (√)3.同一系列的不同型号的计算机,保持软件向上兼容的特点。 (√)4.在计算机的指令系统中,真正必须的指令数是不多的,其余的指令都是为了提高机器速度和便于编程而引入的。 (×)5.RISC的主要目标是减少指令数,因此允许以增加每条指令的功能的办法来减少指令系统所包含的指令数。 二、选择题 1.在计算机的指令系统中采用不同的寻址方式的主要目的是 C 。 A.实现程序控制和快速查找存储器地址 B.可以直接访问主存和外存 C.缩短指令长度,扩大寻址空间,提高编程的灵活性 D.降低指令的译码难度 2.单操作数指令的操作数由 B 提供。 A.指定寄存器或由操作码指定存储单元 B.由地址码指定的存储单元;如果已标明该存储单元的内容为地址,则由该地址所指定的存储单元 C.由操作码直接指定数据 D.由操作码直接指定的存储单元 3.在多地址指令中,算术运算结果不会存储在 A 中。 A.累加器B.第一地址码所指定的存储空间 C.第二地址码所指定的存储空间D.第三地址码所指定的存储空间 4.把存储单元A的内容传送到存储单元B的指令执行后,存储单元A的内容为 B 。A.空白或零,视机器而定B.与存储单元B的内容相同 C.二进制补码D.存储单元A的内容与存储单元B的内容之差 三、填空题 1.指令操作码通常有两种编码格式:固定格式和可变格式。 2.在当前的计算机中,指令的执行方式有3种,就是顺序执行方式,重叠执行方式和流水线方式。 3.数据传送类指令实现的功能是传送数据,它往往是在主存储器和寄存器之间,或寄存器和寄存器之间传送数据。 4.所谓堆栈,是主存中专门用来存放数据的一个特定的区域,它具有先进后出的性质。 5.Intel 8086/8088的字符串操作指令用来处理存放在存储器中的一串字符或数据。6.内存地址寄存器用来指示从内存中取数据。 7.浮点运算指令对于用于科学计算的计算机是很必要的,可以提高机器的运算速度。四、名词解释 1.计算机指令系统:是指一台计算机上全部指令的集合,也称为计算机的指令集。 2.固定格式:操作码的长度是固定的,集中放在指令字的某一个字段中。 3.可变格式:操作码的长度可变,且分散地放在指令字的不同字段中。 4.寻址:就是寻找操作数的地址,最终目的是寻找所需的操作数。 五、简答题

MCS-51指令表

MCS-51单片机指令汇总表 助记符指令说明字节数周期数 (数据传递类指令) MOV A,Rn 寄存器传送到累加器 1 1 MOV A,direct 直接地址传送到累加器 2 1 MOV A,@Ri 累加器传送到外部RAM(8 地址) 1 1 MOV A,#data 立即数传送到累加器 2 1 MOV Rn,A 累加器传送到寄存器 1 1 MOV Rn,direct 直接地址传送到寄存器 2 2 MOV Rn,#data 累加器传送到直接地址 2 1 MOV direct,Rn 寄存器传送到直接地址 2 1 MOV direct,direct 直接地址传送到直接地址 3 2 MOV direct,A 累加器传送到直接地址 2 1 MOV direct,@Ri 间接RAM 传送到直接地址 2 2 MOV direct,#data 立即数传送到直接地址 3 2 MOV @Ri,A 直接地址传送到直接地址 1 2 MOV @Ri,direct 直接地址传送到间接RAM 2 1 MOV @Ri,#data 立即数传送到间接RAM 2 2 MOV DPTR,#data16 16 位常数加载到数据指针 3 1 MOVC A,@A+DPTR 代码字节传送到累加器 1 2 MOVC A,@A+PC 代码字节传送到累加器 1 2 MOVX A,@Ri 外部RAM(8 地址)传送到累加器 1 2 MOVX A,@DPTR 外部RAM(16 地址)传送到累加器 1 2 MOVX @Ri,A 累加器传送到外部RAM(8 地址) 1 2 MOVX @DPTR,A 累加器传送到外部RAM(16 地址) 1 2 PUSH direct 直接地址压入堆栈 2 2 POP direct 直接地址弹出堆栈 2 2 XCH A,Rn 寄存器和累加器交换 1 1 XCH A, direct 直接地址和累加器交换 2 1 XCH A, @Ri 间接RAM 和累加器交换 1 1 XCHD A, @Ri 间接RAM 和累加器交换低4 位字节 1 1 (算术运算类指令) INC A 累加器加1 1 1 INC Rn 寄存器加1 1 1 INC direct 直接地址加1 2 1 INC @Ri 间接RAM 加1 1 1 INC DPTR 数据指针加1 1 2 DEC A 累加器减1 1 1 DEC Rn 寄存器减1 1 1

51单片机汇编指令集(附记忆方法)

51单片机汇编指令集 一、数据传送类指令(7种助记符) MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送; MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部RAM的数据传送; XCH (Exchange) 字节交换; XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈; POP (Pop from Stack) 出栈; 二、算术运算类指令(8种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加1; DEC(Decrement) 减1; MUL(Multiplication、Multiply) 乘法; DIV(Division、Divide) 除法; 三、逻辑运算类指令(10种助记符) ANL(AND Logic) 逻辑与; ORL(OR Logic) 逻辑或; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零; CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移; RRC (Rotate Right throught the Carry flag) 带进位循环右移; SWAP (Swap) 低4位与高4位交换; 四、控制转移类指令(17种助记符) ACALL(Absolute subroutine Call)子程序绝对调用; LCALL(Long subroutine Call)子程序长调用; RET(Return from subroutine)子程序返回; RETI(Return from Interruption)中断返回; SJMP(Short Jump)短转移; AJMP(Absolute Jump)绝对转移; LJMP(Long Jump)长转移; CJNE (Compare Jump if Not Equal)比较不相等则转移;

第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、80C51系列单片机的指令系统有何特点? 答:80c51的指令系统的特点有:(1)执行时间短。一个机器周期指令有64条,2个时间周期指令有45条,而4个机器周期指令仅有2条(即乘法和除法指令);(2)指令编码字节少。单字节的指令有49条,双字节的指令有45条,三字节的指令仅有17条;(3)位操作指令丰富。这是80c51单片机面向控制特点的重要保证。 2、80C51单片机有哪几种寻址方式?各寻址方式所对应的寄存器或存储器 空间如何? 答:(1)寄存器寻址。 对应的寄存器有: ·工作寄存器R0~R7 ·累加器A ·寄存器B ·数据指针DPTR (2)直接寻址。 对应的存储空间有: ·片内RAM低128字节(以地址形式表示) ·SFR(以地址形式或SFR符号形式表示,但符号将转换为相应的SFR 地址) (3)寄存器间接寻址。 对应的空间有: ·片内RAM(采用@R0,@R1或SP); ·片外RAM(采用@R0,@R1或@DPTR) (4)变址寻址。 对应的空间有: ·ROM空间(采用@A+DPTR,@A+PC) (5)相对寻址。 ·ROM空间(采用JC rel) (6)位寻址。 ·片内RAM的20H~2FH单元的128可寻址位 ·SFR的可寻址位 3、访问特殊功寄存器SFR可以采用哪些寻址方式? 答:直接寻址、位寻址 4、访问内部RAM单元可以采用哪些寻址方式? 答:寄存器寻址、直接寻址、寄存器间接寻址 5、访问外部RAM单元可以采用哪些寻址方式? 答:寄存器间接寻址 6、访问外部程序存储器可以采用哪些寻址方式? 答:立即寻址、变址寻址、相对寻址 7、为什么说布尔处理功能是80C51单片机的重要特点? 答:布尔处理功能是MCS-51系列单片机的一个重要特征,在物理结构

51单片机指令表汇总

51单片机指令表 助记符指令说明字节数周期数 (数据传递类指令) MOV A,Rn 寄存器内容传送到累加器 1 1 MOV A,direct 直接地址内容传送到累加器 2 1 MOV A,@Ri 间接RAM内容传送到累加器 1 1 MOV A,#data 立即数传送到累加器 2 1 MOV Rn,A 累加器内容传送到寄存器 1 1 MOV Rn,direct 直接地址内容传送到寄存器 2 2 MOV Rn,#data 立即数传送到寄存器 2 1 MOV direct,Rn 寄存器内容传送到直接地址 2 2 MOV direct,direct 直接地址传内容传送到直接地址 3 2 MOV direct,A 累加器内容传送到直接地址 2 1 MOV direct,@Ri 间接RAM内容传送到直接地址 2 2 MOV direct,#data 立即数传送到直接地址 3 2 MOV @Ri,A 累加器内容传送到间接RAM 1 1 MOV @Ri,direct 直接地址内容传送到间接RAM 2 2 MOV @Ri,#data 立即数传送到间接RAM 2 1 MOV DPTR,#data16 16 位地址传送到数据指针 3 2 MOVC A,@A+DPTR 代码字节传送到累加器 1 2 MOVC A,@A+PC 代码字节传送到累加器 1 2 MOVX A,@Ri 外部RAM(8位地址)内容传送到累加器 1 2 MOVX A,@DPTR 外部RAM(16位地址)内容传送到累加器 1 2 MOVX @Ri,A 累加器内容传送到外部RAM(8位地址) 1 2 MOVX @DPTR,A 累加器内容传送到外部RAM(16 地址) 1 2 PUSH direct 直接地址内容压入堆栈 2 2 POP direct 堆栈内容弹出到直接地址 2 2 XCH A,Rn 寄存器和累加器交换 1 1 XCH A, direct 直接地址和累加器交换 2 1

第三章 80868088的指令系统

3.1 指令的基本格式   一、指令构成 微计算机的指令系统通常由几十种或百余种指令组成(可见表2-1)。每种指令又由两个字段(Field)构成: l.操作码(OP-Code)字段 该字段指示计算机所要执行的操作类型,由一组二进制代码表示,在汇编语言中又用助记将(Mnemonic)代表。8086执行指令时,首先将操作码从指令队列取入执行部件EU中的控制单元,经指令译码器识别后,产生执行本指令操作所需的时序性控制信号,控制计算机完成规定的操作。 2.操作数(Oprand)字段 该字段则是指出指令执行的操作所需的操作数。在操作数字段中,可以是操作数本身,或是操作数地址或是操作数地址的计算方法。微计算机中此字段通常可有一个或两个,称前者为单操作数指令,称后者为双操作数指令。而双操作数又分别称为源操作数src (source)和目的操作数dst(destination)。在指令执行之前,src和dst均为参加运算处理的两个操作数,指令执行之后,在dst中则存放运算处理的结果。 指令的基本格式如下:   二、8086   8086的指令长度可在1~6字节的范围,如图3-1所示。其中B l和B0为基本字节,B3~B6将根据不同指令作相应的安排。   (1)B1字节各字段定义如下: OP--指令操作码。 D--表示方向。D=1寄存器为目的,D=0寄存器为源。 W--表示字节或字处理方式。W=0为字节指令,W=1为字指令。

(2)B2字节各字段定义如下: MOD--给出指令的寻址方式。8086的一条指令中,最多可使用两个操作数,它们不能同时位于存储器中,最多只能有一个是存储器操作数。当MOD=11时为存储器方式,即有一个操作数位于存储器中;MOD=00,没有位移量; MOD01,只有低8位位移量,需将符号扩展8位,形成16位; MOD=10有16位位移量。当MOD=1l时,为寄存器方式,两个操作数均为寄存器。 REG--表示指令中只有一个操作数,这个操作数为寄存器,可见表3-1,表中左部示出寄存器对应的编码。 R/M--R/M受MOD制约。当 MOD=11(即寄存器方式时),由此字段给出指令中第二个操作数所在的寄存器编码;当MOD≠11时,此字段用来指出应如何计算指令中使用的存储器操作数的有效地址。MOD和R /M字段表示的有效地址 EA计算方法如表3-1所示,共2 4种。   (3) B3~B6字节这四个字节一般是给出存储器操作数地址的位移量(即偏移量)和/或立即操作数。位移量可为8位,也可为16位,这由MOD来决定。8086规定16位的字位移量的低位字节放于低地址单元,高位字节放于高地址单元。 若指令中只有8位位移量, 8086在计算有效地址时,自动用符号将其扩展成一个16位的双字节数,以保证有效地址的计算不产生错误,实现正确的寻址。指令中的立即操作数位于位移量的后面。若B3,B4有位移量,立即操作数就位于B5,B6。若指令中无位移量,立即操作数就位于B3,B4字节。总之,指令中缺少的项将由后面存在的项向前顶替,以减少指令长度。 3.2 8086的寻址方式   8086的操作数可隐含在操作码中,也可以是操作数字段中的操作数本身,还可以是存放操作数的地址,如寄存器,I/0端口及存储器。对存储器,给出的或是存储器地址,或是产生存储器地址的信息。从表3

51单片机的指令系统及试验

51单片机的指令系统及试验 在讲指令系统前我们先来复习一下数制的概念。1. 十进制(Decimal)基数是10,它有10个数字符号,即0,l,2,3,4,5,6,7,8,9。其中最大数码是基数减1,即9,最小数码是0。2.二进制(Binary)基数是2,它 只有两个数字符号,即0和1。这就是说,如果在给定的数中,除0和1外还有其它数,例如 1012,它就决不会是一个二进制数。3、十六进制(Hexadecilnal)基数是16,它有16个数字符号,除了十进制中的10个数可用外,还使用了6个英文字母。它的16个数字依次是0,l,2,3,4,5,6,7,8,9,A,B,C,D,E,F。其中A至F 分别代表十进制数的10至15,最大的数字也是基数减1。 4、二进制数与十六进制数的相互转换。(1)、二进制转换为十六进制:整数部分,从低位开始,小数部分,从高位开始,每四位一组(不够四位的补0),转换为对应的 十六进制数。例:(1 0001 0011.1100 0111)2=(113.C7)H (2)、十六进制转换为二进制:将十六进制数的每一位分别转换为对应的四位二进制数。例:(3E9D)H=(11 1110 1001 1101)B例:( 2ABE)H= 0010 1010 1011 1110B 以后我们在单片机编程方面采用十六进制,这个请大家 注意了!MCS-51系列单片机的指令系统共有111条指令,

其中49条是单字节指令,45条是双字节指令,17条是三字节指令。MCS-51的指令系统共有33个功能,用汇编编程时只需要42个助记符就能指明这33个功能操作。1、指令格式:MCS-51汇编语言指令格式与其他微机的指令格 式一样,均由以下几部分组成:[标号:]操作码 [操作数][,操作数][;注释]标号:又称为指令地址符号,地址的符号化,一般由1到6个字符组成,以字母开头的字母数字串,与操作码之间用冒号分开。操作码:是由助 记符表示的字符串,它规定了指令的操作功能。操作数:是指参加操作的数据和数据的地址。注释:是为该条指 令作说明,以便于阅读。注意:[ ]中表示为可选项。操作数可以为1、2、3个,也可以没有。不同功能的指令,操作数作用不同,如:传送指令多数有两个操作数,写 在左面的是目的操作数(表示操作结果存放的单元地址),写在右面的称为源操作数(指出操作数的来源)。操作码和操作数之间必须用空格分隔,操作数与操作数之间必 须用逗号“,”分隔。带方括号项可有可无,称为可选项。操作码是指令的核心不可缺少。2、指令分类 MCS-51的111条指令分为下面5类:(1)数据传送类 指令29条,分为片内RAM,片外RAM、程序存储器的传送指令,交换及堆栈操作指令。(2)算术运算类24条,分为加,带进位加,减,乘,除,加1,减1指令。(3)

MCS-51系列--单片机指令系统

机器语言指令格式: 单字节指令:操作码 双字节指令:操作码操作数 三字节指令:操作码第一操作数,第二操作数........................................................... 汇编语言指令格式: 标号:操作码目的操作数,源操作数;注释........................................................... 寻址方式: ①立即寻址方式---#data ②直接寻址方式---direc ③寄存器寻址方式---Rn ④寄存器间接寻址方式---@ ⑤变址寻址方式---@A+DPTR ⑥相对寻址方式---SJMP ⑦位寻址方式(MOV ACC.3,Cy) ........................................................... MCS-51系列单片机指令系统: 1数据传送指令: (1)内部RAM中一般数据传送指令 (2)16位数据传送指令 (3)累加器与外部数据存储器的数据传送指令

(4)访问程序存储器指令(5)堆栈操作指令 (6)数据交换指令 2算术运算指令: (1)加法指令 (2)减法指令 (3)乘法指令 (4)除法指令 (5)加1/减1指令 (6)BCD码调整指令 3逻辑运算指令: (1)逻辑“与”运算指令(2)逻辑“或”运算指令(3)逻辑“异或”运算指令(4)清零和取反指令 (5)循环移位指令 4转移和调用返回指令:(1)子程序调用和返回指令 ①绝对调用指令 ②长调用指令 ③子程序返回指令 ④中断返回指令

(2)转移指令: ①无条件转移指令 ②条件转移指令 (3)空操作指令 5位操作指令: (1)位传送指令 (2)位置位指令 (3)位清零指令 (4)位取反指令 (5)位逻辑运算指令........................................................... 指令系统中的常用符号: (1)A, #data, direct, Rn, @Rn, DPTR, PC (2)#data16, addr11, addr16, rel, B, Cy, bit, /bit ...........................................................

51单片机指令集

51单片机指令集.txt我这辈子只有两件事不会:这也不会,那也不会。人家有的是背景,而我有的是背影。肉的理想,白菜的命。肉的理想,白菜的命。白马啊你死去哪了!是不是你把王子弄丢了不敢来见我了。MCS-51单片机的指令集 1、数据传送类指令 助记符功能说明字节数振荡周期 MOV A,Rn 寄存器内容送入累加器 1 12 MOV A,direct 直接地址单元中的数据送入累加器 2 12 MOV A,@Ri 间接RAM中的数据送入累加器 1 12 MOV A,#data8 8位立即数送入累加器 2 12 MOV Rn,A 累加器内容送入寄存器 1 12 MOV Rn,direct 直接地址单元中的数据送入寄存器 2 24 MOV Rn,#data8 8位立即数送入寄存器 2 12 MOV direct,A 累加器内容送入直接地址单元 2 12 MOV direct,Rn 寄存器内容送入直接地址单元 2 24 MOV direct,direct 直接地址单元中的数据送入直接地址单元 3 24 MOV direct,@Ri 间接RAM中的数据送入直接地址单元 2 24 MOV direct,#data8 8位立即数送入直接地址单元 3 24 MOV @Ri,A 累加器内容送入间接RAM单元 1 12 MOV @Ri,direct 直接地址单元中的数据送入间接RAM单元 2 24 MOV @Ri,#data8 8位立即数送入间接RAM单元 2 12 MOV DPTR,#data16 16位立即数地址送入地址寄存器 3 24 MOV A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器 1 24 MOV A,@A+PC 以PC为基地址变址寻址单元中的数据送入累加器 1 24 MOV A,@Ri 外部RAM(8位地址)送入累加器 1 24 MOV A,@DPTR 外部RAM(16位地址)送入累加器 1 24 MOV @Ri,A 累加器送入外部RAM(8位地址) 1 24 MOV @DPTR,A 累加器送入外部RAM(16位地址) 1 24 PUSH direct 直接地址单元中的数据压入堆栈 2 24 POP DIRECT 堆栈中的数据弹出到直接地址单元 2 24 XCH A,Rn 寄存器与累加器交换 1 12 XCH A,direct 直接地址单元与累加器交换 2 12 XCH A,@Ri 间接RAM与累加器交换 1 12 XCHD A,@Ri 间接RAM与累加器进行低半字节交换 1 12 2、算术操作类指令 助记符功能说明字节数振荡周期 ADD A,Rn 寄存器内容加到累加器 1 12 ADD A,direct 直接地址单元加到累加器 2 12 ADD A,@Ri 间接RAM内容加到累加器 1 12 ADD A,#data8 8位立即数加到累加器 2 12 ADDC A,Rn 寄存器内容带进位加到累加器 1 12

快速学习51单片机汇编指令集(入门必备)

51单片机汇编指令集(入门必备) 一、数据传送类指令(7种助记符) MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送; MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部RAM的数据传送; XCH (Exchange) 字节交换; XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈; POP (Pop from Stack) 出栈; 二、算术运算类指令(8种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加1; DEC(Decrement) 减1; MUL(Multiplication、Multiply) 乘法; DIV(Division、Divide) 除法; 三、逻辑运算类指令(10种助记符) ANL(AND Logic) 逻辑与; ORL(OR Logic) 逻辑或; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零; CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移; RRC (Rotate Right throught the Carry flag) 带进位循环右移; SWAP (Swap) 低4位与高4位交换; 四、控制转移类指令(17种助记符) ACALL(Absolute subroutine Call)子程序绝对调用; LCALL(Long subroutine Call)子程序长调用; RET(Return from subroutine)子程序返回; RETI(Return from Interruption)中断返回; SJMP(Short Jump)短转移; AJMP(Absolute Jump)绝对转移; LJMP(Long Jump)长转移; CJNE (Compare Jump if Not Equal)比较不相等则转移; DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;

(完整版)51单片机汇编指令(全)

指令中常用符号说明 Rn当前寄存器区的8个工作寄存器R0~R7(n=0~7) Ri当前寄存器区可作为地址寄存器的2个工作寄存器R0和R1(i=0,1) Direct8位内部数据寄存器单元的地址及特殊功能寄存器的地址 #data表示8位常数(立即数) #data16表示16位常数 Add16表示16位地址 Addr11表示11位地址 Rel8位代符号的地址偏移量 Bit表示位地址 @间接寻址寄存器或基址寄存器的前缀 ( )表示括号中单元的内容 (( ))表示间接寻址的内容 指令系统 数据传送指令(8个助记符) 助记符中英文注释 MOV Move 移动 MOV A , Rn;Rn→A,寄存器Rn的内容送到累加器A MOV A , Direct;(direct)→A,直接地址的内容送A MOV A ,@ Ri;(Ri)→A,RI间址的内容送A MOV A , #data;data→A,立即数送A MOV Rn , A;A→Rn,累加器A的内容送寄存器Rn MOV Rn ,direct;(direct)→Rn,直接地址中的内容送Rn MOV Rn , #data;data→Rn,立即数送Rn MOV direct , A;A→(direct),累加器A中的内容送直接地址中 MOV direct , Rn;(Rn)→direct,寄存器的内容送到直接地址 MOV direct , direct;(direct)→direct,直接地址的内容送到直接地址 MOV direct , @Ri;((Ri))→direct,间址的内容送到直接地址 MOV direct , #data;8位立即数送到直接地址中 MOV @Ri , A;(A)→@Ri,累加器的内容送到间址中 MOV @Ri , direct;direct→@Ri,直接地址中的内容送到间址中 MOV @Ri , #data; data→@Ri ,8位立即数送到间址中 MOV DPTR , #data16;data16→DPTR,16位常数送入数据指针寄存器,高8位送入DPH,低8位送入DPL中(单片机中唯一一条16位数据传送指令) (MOV类指令共16条)

第3章答案指令系统1-40..

第3章指令系统 1,简述下列基本概念:指令,指令系统,机器语言,汇编语言,高级语言。1、指令:CPU根据人的意图来执行某种操作的命令 指令系统:一台计算机所能执行的全部指令集合 机器语言:用二进制编码表示,计算机能直接识别和执行的语言 汇编语言:用助记符、符号和数字来表示指令的程序语言 高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入了解的通用性语言 2,什么是计算机的指令和指令系统? 2、见第1题。 3,简述89C51汇编指令格式。 3、操作码[目的操作数] [,源操作数] 4,简述89C51寻址方式和所能涉及的寻址空间。 5,要访问特殊功能寄存器和片外数据寄存器,应采用哪些寻址方式? 5、SFR:直接寻址,位寻址,寄存器寻址;片外RAM:寄存器间接寻址 6,在89C51片内RAM中,已知(30H)=38H, (38H)=40H, (40H)=48H, (48H)=90H, 请分析下面各是什么指令,说明源操作数的寻址方式以及按顺序执行每条指令后的结果。 6、MOV A,40H ;直接寻址(40H)→A MOV R0,A ;寄存器寻址(A)→R0 MOV P1,#0F0H ;立即数寻址0F0→P1

MOV @R0,30H ;直接寻址(30H)→(R0) MOV DPTR,#3848H ;立即数寻址3848H→DPTR MOV 40H,38H ;直接寻址(38H)→40H MOV R0,30H ;直接寻址(30H)→R0 MOV P0,R0 ;寄存器寻址(R0 )→P0 MOV 18H,#30H ;立即数寻址30H→18H MOV A,@R0 ;寄存器间接寻址((R0)) →A MOV P2,P1 ;直接寻址(P1)→P2 最后结果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H 注意:→左边是内容,右边是单元 7,对89C51片内RAM的高128字节的地址空间寻址要注意什么 7、用直接寻址,位寻址,寄存器寻址 8,指出下列指令的本质区别。 8,MOV A,DATA ;直接寻址2字节1周期 MOV A,#DATA ;立即数寻址2字节1周期 MOV DATA1,DATA2 ;直接寻址3字节2周期 MOV 74H,#78H ;立即数寻址3字节2周期 如果想查某一指令的机器码,字节数或周期数可查阅书本后面的附录A 9,设R0内容为32H, A的内容为48H, 片内RAM的32H单元内容为80H, 40H单元内容为08H, 请指出在执行下列程序段后上述各单元内容的变化。 9、 MOV A,@R0 ;((R0))=80H→A MOV @R0,40H ;(40H)=08H→(R0) MOV 40H,A ;(A)=80→40H MOV R0,#35H ;35H→R0 最后结果:(R0)=35H (A)=80H,(32H)=08H,(40H)=80H 10,如何访问SFR,可使用哪些寻址方式? 10、用直接寻址,位寻址,寄存器寻址 11,如何访问片外RAM,可使用哪些寻址方式? 11、只能采用寄存器间接寻址(用MOVX指令) 12,如何访问片内RAM,可使用哪些寻址方式? 12、低128字节:直接寻址,位寻址,寄存器间接寻址,寄存器寻址(R0~R7) 高128字节:直接寻址,位寻址,寄存器寻址 13,如何访问片内外程序存储器,可使用哪些寻址方式? 13、采用变址寻址(用MOVC指令)

51单片机指令表

此表主要是为了方便大家查阅每条指令的作用,写法以及字节数和周期数,建议大家保存为书签。 助记符指令说明字节数周期数 (数据传递类指令) MOV A,Rn 寄存器传送到累加器 1 1 MOV A,direct 直接地址传送到累加器 2 1 MOV A,@Ri 累加器传送到外部RAM(8 地址) 1 1 MOV A,#data 立即数传送到累加器 2 1 MOV Rn,A 累加器传送到寄存器 1 1 MOV Rn,direct 直接地址传送到寄存器 2 2 MOV Rn,#data 累加器传送到直接地址 2 1 MOV direct,Rn 寄存器传送到直接地址 2 1 MOV direct,direct 直接地址传送到直接地址 3 2 MOV direct,A 累加器传送到直接地址 2 1 MOV direct,@Ri 间接RAM 传送到直接地址 2 2 MOV direct,#data 立即数传送到直接地址 3 2 MOV @Ri,A 直接地址传送到直接地址 1 2 MOV @Ri,direct 直接地址传送到间接RAM 2 1 MOV @Ri,#data 立即数传送到间接RAM 2 2 MOV DPTR,#data16 16 位常数加载到数据指针 3 1 MOVC A,@A+DPTR 代码字节传送到累加器 1 2 MOVC A,@A+PC 代码字节传送到累加器 1 2 MOVX A,@Ri 外部RAM(8 地址)传送到累加器 1 2 MOVX A,@DPTR 外部RAM(16 地址)传送到累加器 1 2 MOVX @Ri,A 累加器传送到外部RAM(8 地址) 1 2 MOVX @DPTR,A 累加器传送到外部RAM(16 地址) 1 2 PUSH direct 直接地址压入堆栈 2 2 POP direct 直接地址弹出堆栈 2 2 XCH A,Rn 寄存器和累加器交换 1 1

AT89C51单片机指令系统

第3章AT89C51单片机指令系统 难点 ?MCS-51单片机的寻址方式 ?数据传送指令和算术运算指令的使用 ?位操作和控制转移类指令的使用 要求 掌握: ?MCS-51单片机的寻址方式 ?指令系统的基本格式 ?指令系统的操作功能 了解: ?指令系统的基本格式 ?操作数的使用方法 ?指令系统的操作过程 3.1 MCS-51单片机指令格式 3.2 寻址方式 3.3 指令系统 3.1 MCS-51单片机指令格式 计算机的指令系统是表征计算机性能的重要指标,每种计算机都有自己的指令系统。MCS—51单片机的指令系统是一个具有255种代码的集合,绝大多数指令包含两个基本部分:操作码和操作数。操作码表明指令要执行的操作的性质;操作数说明参与操作的数据或数据所存放的地址。 MCS—51指令系统中所有程序指令是以机器语言形式表示,可分为单字节、双字节、三字节3种格式。 用二进制编码表示的机器语言由于阅读困难,且难以记忆。因此在微机控制系统中采用汇编语言指令来编写程序。本章介绍MCS—51指令系统就是以汇编语言来描述的。 表3-1汇编指令与指令代码 标号:操作码目的操作数,源源操作数;注释 标号与操作码之间“:”隔开; 操作码与操作数之间用“空格”隔开; 目的操作数和源源操作数之间有“,”分隔; 操作数与注释之间用“;”隔开。 标号是由用户定义的符号组成,必须用英文大写字母开始。标号可有可无,若一条指令中有标号,标号代表该指令所存放的第一个字节存储单元的地址,故标号又称为符号地址,在汇编时,把该地址赋值给标号。 操作码是指令的功能部分,不能缺省。MCS—51指令系统中共有42种助记符,代表了33种不同的功能。例如MOV是数据传送的助记符。

8051单片机指令系统

8051 单片机指令系统
难点

MCS-51 单片机的寻址方式 数据传送指令和算术运算指令的使用 位操作和控制转移类指令的使用
要求
掌握:

MCS-51 单片机的寻址方式 指令系统的基本格式 指令系统的操作功能
了解:

指令系统的基本格式 操作数的使用方法 指令系统的操作过程
2.7.1
MCS-51 单片机指令格式
计算机的指令系统是表征计算机性能的重要指标,每种计算机都有自己的指令系统. MCS—51 单片机的指令系统是一个具有 255 种代码的集合,绝大多数指令包含两个基本部 分:操作码和操作数.操作码表明指令要执行的操作的性质;操作数说明参与操作的数据或 数据所存放的地址. MCS—51 指令系统中所有程序指令是以机器语言形式表示,可分为单字节,双字节, 三字节 3 种格式. 用二进制编码表示的机器语言由于阅读困难, 且难以记忆. 因此在微机控制系统中采用 汇编语言指令来编写程序.本章介绍 MCS—51 指令系统就是以汇编语言来描述的.
表 1 汇编指令与指令代码
代码字节 单字节 单字节 双字节 三字节
指令代码 84 A3 7410 B440 rel
汇编指令 DIV AB INC DPTR MOV A,#10H CJNE A,#40H,LOOP
指令周期 四周期 双周期 单周期 双周期

一条汇编语言指令中最多包含 4 个区段,如下所示: 标号: 操作码 目的操作数,源源操作数 ;注释
标号与操作码之间": "隔开; 操作码与操作数之间用"空格"隔开; 目的操作数和源源操作数之间有", "分隔; 操作数与注释之间用"; "隔开. 标号是由用户定义的符号组成,必须用英文大写字母开始.标号可有可无,若一条指令 中有标号,标号代表该指令所存放的第一个字节存储单元的地址,故标号又称为符号地址, 在汇编时,把该地址赋值给标号. 操作码是指令的功能部分,不能缺省.MCS—51 指令系统中共有 42 种助记符,代表了 33 种不同的功能.例如 MOV 是数据传送的助记符. 操作数是指令要操作的数据信息.根据指令的不同功能,操作数的个数有 3,2,1 或没 有操作数.例如 MOV A,#20H,包含了两个操作数 A 和#20H,它们之间用","隔开. 注释可有可无, 加入注释主要为了便于阅读, 程序设计者对指令或程序段作简要的功能说明, 在阅读程序或调试程序时将会带来很多方便.
2.7.2
寻址方式
所谓寻址方式,通常是指某一个 CPU 指令系统中规定的寻找操作数所在地址的方式, 或者说通过什么的方式找到操作数.寻址方式的方便与快捷是衡量 CPU 性能的一个重要方 面,MCS—51 单片机有七种寻找方式.
1
立即数寻址
立即寻址方式是操作数包括在指令字节中,指令操作码后面字节的内容就是操作数本 身,其数值由程序员在编制程序时指定,以指令字节的形式存放在程序存储器中.立即数只 能作为源操作数,不能当作目的操作数. 例如: MOV A,#52H ;A←52H MOV DPTR,#5678H ;DPTR←5678H 立即寻址示意图如 1 所示.
图 1 立即寻址示意图

MCS-51系列单片机指令表

MCS-51系列单片机指令A表 MCS-51系列单片机指令以A开头的指令有18条,分别为: 1、ACALL addr11 指令名称:绝对调用指令 指令代码: 指令功能:构造目的地址,进行子程序调用。其方法是以指令提供的11位地址(al0~a0), 取代PC的低11位,PC的高5位不变。 操作内容: PC←(PC)+2 SP←(SP)+1 (SP)←(PC)7~0 SP←(SP)+1 (SP)←(PC)15~8 PC10~0←addr l0~0 字节数: 2 机器周期:2

使用说明:由于指令只给出子程序入口地址的低11位,因此调用范围是2KB。 2、ADD A,Rn 指令名称:寄存器加法指令 指令代码:28H~2FH 指令功能:累加器内容与寄存器内容相加 操作内容:A←(A)+(Rn), n=0~7 字节数: 1 机器周期;1 影响标志位:C,AC,OV 3、ADD A,direct 指令名称:直接寻址加法指令 指令代码:25H 指令功能:累加器内容与内部RAM单元或专用寄存器内容相加 操作内容:A←(A)+(direct) 字节数: 2 机器周期:1 影响标志位:C,AC,OV 4、ADD A,@Ri ’ 指令名称:间接寻址加法指令 指令代码:26H~27H 指令功能:累加器内容与内部RAM低128单元内容相加 操作内容:A←(A)+((Ri)), i=0,1 字节数: 1 机器周期:1

5、ADD A,#data 指令名称:立即数加法指令 指令代码:24H 指令功能:累加器内容与立即数相加 操作内容:A←(A)+data 字节数: 2 机器周期:1 影响标志位:C,AC,OV 6、ADDC A,Rn 指令名称:寄存器带进位加法指令 指令代码:38H~3FH 指令功能:累加器内容、寄存器内容和进位位相加 操作内容:A←(A)+(Rn)+(C), n=0~7 字节数: 1 机器周期:1 影响标志位:C,AC,OV 7、ADDC A,direct 指令名称:直接寻址带进位加法指令 指令代码:35H 指令功能:累加器内容、内部RAM低128单元或专用寄存器内容与进位位加操作内容:A←(A)+(direct)+(C) 字节数: 2 机器周期:1

相关主题
文本预览
相关文档 最新文档