当前位置:文档之家› 单片机指令系统复习试题

单片机指令系统复习试题

单片机指令系统复习试题
单片机指令系统复习试题

一. 填空题

1. 指出以下程序顺序执行后每一条指令的结果。填写在划线部分。 (1)MOV A ,#25H ; (A )=25H (2)MOV 40H,#1AH ; (40H )=1AH (3)MOV R2,#33H ; (R2)= 33H

(4)CLR C ; (C )= 0 (5)ADD A ,R2 ; (A )=58H (6)ADDC A ,40H ; (A )=72H (7)MOV RO ,#40H ; (R0)=40H (8)ADDC A ,@RO ; (A )=8CH

2. 在划线部分写出下列程序每一条指令执行后其目的操作数的结果。 (1)MOV A ,#OFOH ; 0F0H (2) CPL A ; 0FH (3)ANL 30H ,#00H ; 00H (4) ORL 30H , #BDH ; 0BDH (5)XRL 30H ,A ; 0B2H

3. 若(A )=7AH ,分别执行下列指令后,A 的值是多少?填在划线部分。标志位CY 和OV 的值各是多少 考虑上下指令之间的联系。 (1)ANL A ,#0FFH ; 7AH (4)ORL A ,#00H ; 7AH (2)ORL A ,#0FFH ; 0FFH (5)XRL A ,#0FFH ; 85H (3)ANL A ,#00H ; 00H (6)XRL A ,00H ; 7AH 二.简答题

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. 访问特殊功能寄存器和外部数据存储器应采用哪种寻址方式?

解: 访问特殊功能寄存器,应采用直接寻址、位寻址方式。访问外部数据存储器,应采用寄存器间接寻址方式。在0~255B 范围内,可用寄存器R0、R1间接寻址: 寻址方式 使用的变量 寻址范围 立即寻址 程序存储器

直接寻址

内部RAM 低128个字节; 特殊功能寄存器SFR 寄存器寻址 R0~R7;A 、B 、DPTR 、C

寄存器间接寻址 @R0、@R1、SP 内部RAM 、堆栈指针SP @R0、@R1、@DPTR 外部RAM 变址寻址 @A+PC 、@A+DPTR 程序存储器 相对寻址 PC+偏移量 程序存储器

位寻址

内部RAM 低128B 位寻址区 可位寻址的特殊功能寄存器位

MOVX A,@R0 或MOVX A,@R1 MOVX @R0,A 或MOVX @R1,A 在0~64KB范围内,可用16位寄存器DPTR间接寻址

MOVX A,@DPTR MOVX @DPTR,A

4.“DA A”指令的作用是什么?怎样使用?

解:这条指令是在进行BCD码加法运算时,跟在“ADD”和“ADDC”指令之后,用来对BCD码的加法运算结果自动进行修正的,使其仍为BCD码表达形式。

在计算机中,遇到十进制调整指令时,中间结果的修正是由ALU硬件中的十进制修正电路自动进行的。用户不必考虑何时该加“6”,使用时只需在上述加法指令后面紧跟一条“DA A”指令即可。

5.片内RAM 20H~2FH单元中的128个位地址与直接地址00H~7FH形式完全相同,如何在指令中区分出位寻址操作和直接寻址操作?

解: 虽然内部RAM位寻址区的位地址范围00H~7FH与低128个单元的单元地址范围00H~7FH形式完全相同,但是在应用中可以通过指令的类型区分单元地址和位地址。

位寻址的操作只适用于下列位指令,而直接寻址操作对这些指令是无效的。MOV C,bit MOV bit,C CLR bit SETB bit CPL bit ANL C,bit ANLC,/bit JB bit,rel JNB bit,rel

6.8051单片机指令系统中有长跳转LJMP,长调用LCALL指令,为何还设置了绝对跳转AJMP,绝对调用ACALL指令?在实际使用是应怎样考虑?

解: 在实际应用中,可从寻址范围和指令长度两个方面来选择长跳转指令LJMP和短跳转指令AJMP、长调用指令LCALL和短调用指令ACALL。

长跳转LJMP在64KB范围内转移,而短跳转AJMP只能在2KB空间转移。长调用LCALL调用位于64KB程序空间的子程序,而短调用ACALL调用位于2KB程序空间范围的子程序。AJMP、ACALL指令代码长度为2个字节;LJMP、LCALL指令代码长度为3个字节。

7. SJMP,AJMP和LJMP指令在功能上有何不同?

解:指令的转移范围不同。SJMP是256B范围内的相对转移指令,AJMP是2KB范围内的无条件短跳转指令,LJMP是64KB范围内的无条件长跳转指令。

8. MOVC A,@A+DPTR与MOVX A,@DPTR指令有何不同?

解:MOVC指令是针对程序存储器的数据传送指令,@A+DPTR基址变址寻址时,DPTR为常数且是表格的首地址,A为从表格首址到被访问字节地址的偏移量。

MOVX指令是针对外部RAM的数据传送指令,@DPTR寄存器间接寻址时,寻址范围在0~64KB。

9.在“MOVC A,@A+DPTR”和“MOVC A,@A+PC”中,分别使用了DPTR和PC作基址,请问这两个基址代表什么地址?使用中有何不同?

解:使用@A+DPTR基址变址寻址时,DPTR为常数且是表格的首地址,A为从表格首址到被访问字节地址的偏移量。使用@A+PC基址变址寻址时,PC仍是下条指令首地址,而A则是从下条指令首地址到常数表格中的被访问字节的偏移量。

10.设片内RAM中的(40H)=50H,写出执行下列程序段后寄存器A和R0,以及片内RAM中50H和51H 单元的内容为何值?

MOV A,40H

MOV R0,A

MOV A,#00

MOV @R0,A

MOV A,#30H

MOV 51H,A

MOV 52H,#70H

解:结果为:(A)=30H (R0)=50H (50H)=00H (51H)=30H

11.设堆栈指针(SP)=60H,片内RAM中的(30H)=24H,(31H)=10H。执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化?

解:结果为:(61H)=24H (62H)=10H (30H)=00H

(31H)=0FFH DPTR=2410H SP=60H

12.在8051的片内RAM中,已知(20H)=30H,(30H)=40H,(40H)=50H,(50H)=55H。分析下面各条指令,说明源操作数的寻址方式,分析按顺序执行各条指令后的结果。

MOV A,40H

MOV R0,A

MOV P1,,#80H

MOV @R0,20H

MOV DPTR,#2000H

MOV 40H,30H

MOV R0,30H

MOV D0H,R0

MOV 10H,#10H

MOV 50H,R0

MOV A,@R0

MOV P2,P1

解:指令源操作数的寻址方式执行指令后的结果MOV A,40H 直接寻址(A)=50H

MOV R0,A 寄存器寻址(R0)=50H

MOV P1,#80H 立即寻址(P1)=80H

MOV @R0,20H 寄存器间接寻址(50H)=30H

MOV DPTR,#2000H 立即寻址(DPTR)=2000H

MOV 40H,30H 直接寻址(40H)=40H

MOV R0,30H 直接寻址(R0)=40H

MOV D0H,R0 直接寻址(D0H)=40H

MOV 10H,#10H 立即寻址(10H)=10H

MOV A,@R0 寄存器间接寻址(A)=40H

MOV P2,P1 寄存器寻址(P2)=80H

13.指出下列程序中每一条指令的划线操作数的寻址方式及其完成的操作。

MOV 3FH ,#40H ;3FH为直接寻址,指令把数40H送地址3FH中

MOV A ,3FH ;A为特殊寄存器寻址,把地址3FH中的内容送A中

MOV R1,#3FH ;3FH为立即寻址,指令把数3FH送寄存器R1中

MOV A,@R1 ;R1间接寻址,R1的内容3FH作地址中的内容送A中

MOV 3FH,R1 ;寄存器寻址,R1的内容送地址3FH中

14. 内部RAM的4FH单元,可用哪几种方式寻址?分别举例说明。

答:1、直接寻址:MOV R1,4FH

2、间接寻址:MOV R1,#4FH和MOV A,@R1

15. 特殊功能寄存器可用哪几种方式寻址?分别举例说明。

答:只有直接寻址:MOV A,90H (MOV A,P1 );该指令只有机器码E590H。

16. 编程:将立即数55H送入内部RAM的30H单元。

(1)用立即寻址(2)用寄存器寻址(3)用寄存器间接寻址

答:(1)MOV 30H ,#55H (2)MOV R1 ,#55H MOV 30H ,R1

(3)MOV R1,#30H MOV @R1 ,#55H

17. 用指令实现下述数据传送:

(1)内部RAM 30H单元的内容送内部RAM40H单元。

答:MOV 40H ,30H

(2)外部RAM 30H单元的内容送R0寄存器

答:MOV R1,#30H

MOVX A,@R1

MOV R0 ,A

(3)外部RAM 30H 单元的内容送内部RAM 30H单元

答:MOV R1,#30H

MOVX A,@R1

MOV 30H,A

(4)外部RAM 2000H单元的内容送内部RAM20H单元

答:MOV DPTR,#2000H

MOVX A,@DPTR

MOV 20H,A

(5)外部ROM 2000H单元的内容送内部RAM20H单元

答:MOV DPTR,#2000H

MOV A,#00H

MOVC A,@A+DPTR

MOV 20H,A

(6)外部ROM 2000H单元内容送外部RAM20H单元。

答:MOV DPTR,#2000H

MOV A,#00H

MOVC A,@A+DPTR

MOV R1,#20H MOVX @R1,A

18. 指出下列指令执行后目的操作数的结果,并写出每条指令的机器码。可不管上下句联系。其中(R0)=30H。

MOV 30H #52H ;(30H)=52H

MOV A,#78H ;(A)=78H

MOV A,#30H ;(A)=30H

MOV R0,#30H ;(R0)=30H

MOV A,@R0 ;(A)=52H,把30H的内容送A中。

19.指出在下列各条指令中,45H代表什么寻址方式?

(1)MOV A,#45H ;立即寻址

(2)MOV 45H,#46H ;立即寻址

(3)MOV 45H,46H ;直接寻址

(4)MOV C,45H ;位寻址

20. 分析下列指令顺序执行的结果,并写出每条指令的机器码。

(1)MOV A,#32H ;7432H

(2)MOV DPTR,#2020H ;902020H

(3)MOVX @DPTR,A ;F0H

(4)MOV 20H, #45H ; 752045H

(4)MOV R0 ,#20H ;7820H

(5)MOVX A ,@R0 ;E2H

(6)MOV 30H ,A ;F530H

结果:片外存储器RAM2020H内容为32H,(30H)=(A)=45H

23. 指出以下程序顺序执行后每一条指令的结果。填写在划线部分。

(1)MOV A,#25H ;(A)=25H

(2)MOV 40H,#1AH ;(40H)=1AH

(3)MOV R2,#33H ;(R2)= 33H

(4)CLR C ;(C)= 0

(5)ADD A ,R2;(A)=58H

(6)ADDC A,40H;(A)=72H

(7)MOV R0,#40H;(R0)=40H

(8)ADDC A,@R0;(A)=8CH

24. 在划线部分写出下列程序每一条指令执行后其目的操作数的结果。

(1)MOV A,#0F0H ;0F0H

(2)CPL A ;0FH

(3)ANL 30H,#00H ;00H

(4)ORL 30H,#BDH ;0BDH

(5)XRL 30H,A ;0B2H

25. 若(A)=7AH,分别执行下列指令后,A的值是多少?填在划线部分。标志位CY和OV的值各是多少?不考虑上下指令之间的联系。

(1)ANL A,#0FFH ;7AH

(2)ORL A,#0FFH ;0FFH

(3)ANL A,#00H ;00H

(4)ORL A,#00H ;7AH

(5)XRL A,#0FFH ;85H

(6)XRL A,00H ;7AH

26. 请判断下列各条指令的书写格式是否有错,如有错说明原因:

答:打(×)为不存在指令.

1、mul r0r1 (×)

2、mov a,@r7 (×)

3、mov a,#3000h (×)

4、movc @a+dptr,a (×)

5、ljmp #1000h (×)

6、MOVX @R0,B (×)

7、MOV A,30H (√)

8、MOVX A,30H (×)

9、ADDC A,R7 (√) 10、ANL #99H ,36H (×)

27.阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能?

MOV R 1 ,#30H ;(R 1 )= 30H

MOV A,#64H ;(A)= 64H

ADD A,#47H ;(A)= 0ABH ,(CY)= 0 ,(AC)= 0

DA A ;(A)= 11 ,(CY)= 1 ,(AC)= 1

MOV @R 1 ,A ;(R 1 )= 30H ,(30H)= 11H

此程序段完成的功能:程序采用十六进制运算指令完成十进制数运算64+47=11,且进位为1。结果在30H单元。注意到DA A的功能。

28. 内部RAM的4FH单元,可用哪几种方式寻址?分别举例说明。

答: 1. 直接寻址:MOV R1,4FH 2. 间接寻址:MOV R1,#4FH和MOV A,@R1

29. 编程:将立即数55H送入内部RAM的30H单元。

(1)用立即寻址MOV 30H ,#55H(2)用寄存器寻址MOV R1 ,#55H MOV 30H ,R1(3)用寄存器间接寻址MOV R1,#30H MOV @R1 ,#55H

30. 用指令实现下述数据传送:

(1)内部RAM 30H单元的内容送内部RAM40H单元。答:MOV 40H ,30H

(2)外部RAM 30H单元的内容送R0寄存器

答:MOV R1,#30H MOVX A,@R1 MOV R0 ,A

(3)外部RAM 30H 单元的内容送内部RAM30H单元

答:MOV R1,#30H MOVX A,@R1 MOV 30H,A

(4)外部RAM 2000H单元的内容送内部RAM20H单元

答:MOV DPTR,#2000H MOVX A,@DPTR MOV 20H,A

(5)外部ROM 2000H单元的内容送内部RAM20H单元

答:MOV DPTR,#2000H MOV A,#00H MOVC A,@A+DPTR MOV 20H,

(6)外部ROM 2000H单元内容送外部RAM20H单元。

答:MOV DPTR,#2000H MOV A,#00H M OVC A,@A+DPTR

MOV R1,#20H MOVX @R1,A

三. 编程题

1.试编程实现内部RAM25H单元与外部RAM5500H单元的数据交换。

MOV DPTR,#5500H MOVX A,@DPTR XCH A,25H MOVX @DPTR,A

2.试编程实现外部RAM2040H单元的内容与3040H单元互换。

MOV DPTR,#2040H MOVX A,@DPTR MOV 30H,A

MOV DPTR,#3040H MOVX A,@DPTR XCH A,30H

MOVX @DPTR,A MOV DPTR,#2040H MOV A,30H MOVX @DPTR,A

3.试编程实现两个无符号16位数的减法。被减数和减数分别存放在DATA1和DATA2为首址的内部RAM 中,低位在低地址单元,高位在后,差存于R3(低8位)和R4(高8位)中.

CLR C MOV R0,#DA TA1 MOV A,@R0 MOV R1,#DATA2 SUBB A,@R1 MOV R3,A INC R0 INC R1 MOV A,@R0 SUBB A,@R1 MOV R4,A

4.若外部RAM的(2000H)=X,(2001H)=Y,编程实现Z=3X+2Y,结果存入内部RAM 20H单元(设Z <255)

MOV DPTR,#2000H MOVX A,@DPTR MOV B,#03H MUL AB

MOV B,A ;存3X MOV DPTR,#2001H MOVX A,@DPTR MOV 20H,A

ADD A,20H ;计算2Y ADD A,B ;3X+2Y MOV 20H,A

5.完成以下的数据传送过程。

解:(1)R1的内容传送到R0 ;

MOV A, R1 MOV R0, A

(2)片外RAM 20H单元内容送R0 ;

MOV DPTR, #0020H MOVX A, @DPTR MOV R0, A

(3)片外RAM 20H单元的内容送片内RAM 20H单元;

MOV DPTR, #0020H MOVX A, @DPTR MOV 20H, A

(4)片外RAM 1000H单元的内容送片内RAM 20H 单元;

MOV DPTR, #1000H MOVX A, @DPTR MOV 20H, A

(5)ROM 2000H单元的内容送R0单元;

MOV A, #00H MOV DPTR, #2000H MOVC A, @A+DPTR MOV R0H, A

(6)ROM 2000H 单元的内容送片内RAM 20H单元;

MOV A, #00H MOV DPTR, #2000H MOVC A,@A+DPTR MOV 20H, A

(7)ROM 2000H单元的内容送片外RAM 20H单元。

MOV A, #00H MOV DPTR, #2000H MOVC A,@A+DPTR

MOV DPTR, #0020H MOVX @DPTR,A

6.设有两个4位BCD码,分别存放在片内RAM的23H,22H单元和33H,32H单元中,求它们的和,并送入43H,42H单元中去。(以上均为低位字节,高位在高字节)。

ORG 0000H

LJMP START

ORG 0030H

START:MOV A,22H

ADD A,32H

DA A

MOV 42H,A

MOV A,23H

ADDC A,33H

DA A

MOV 43H,A

SJMP $

END

7.编程将片内RAM的40H~60H单元中内容送到片外RAM以3000H开始的单元中。

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN:MOV R7,#20H

MOV R1,#40H

MOV DPTR,#3000H

LOOP:MOV A,@R1

MOVX @DPTR,A

INC R1

INC DPTR

DJNZ R7,LOOP

SJMP $

END

8.编程计算片内RAM区30H~37H的8个单元中数的算术平均值,结果存在3AH单元中。

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN:MOV R0,#30H ;数据首地址

MOV R1,#00H ;和高位

MOV R2,#00H ; 和低位

MOV R3,#07H ;循环次数

LP2:MOV A,@R0

ADD A,R2

MOV R2,A

JNC LP1

INC R1

LP1:INC R0

DJNZ R3,LP2

MOV R3,#03H

LP3:CLR C

MOV A,R1

RRC A ; 和高位除2

MOV R1,A

MOV A,R2 ;和低高位除2

RRC A

MOV R2,A

DJNZ R3,LP3

MOV 3AH,R2

SJMP $

END

9.设有100个有符号数,连续存放在片外RAM以2200H为首地址的存储区中,试片成统计其中正数|、负数、零的个数。

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN:MOV R2,#100

MOV R3,#00H ;零的个数

MOV R4,#00H ;正数的个数

MOV R5,#00H ;负数的个数

MOV DPTR,#2000H

LOOP:MOVX A,@DPTR

CJNE A,#00H,NET1

INC R3

INC DPTR

DJNZ R2,LOOP

SJMP NET3

NET1:JC NET2

INC R4

INC DPTR

DJNZ R2,LOOP

SJMP NET3

NET2:INC R5

INC DPTR

DJNZ R2,LOOP

NET3:SJMP $

END

11.试编程实现两个无符号16位数的减法。被减数和减数分别存放在DA TA1和DATA2为首址的内部RAM 中,低位在低地址单元,高位在后,差存于R3(低8位)和R4(高8位)中。

CLR C

MOV R0,#DA TA1

MOV A,@R0

MOV R1,#DA TA2

SUBB A,@R1

MOV R3,A

INC R0

INC R1

MOV A,@R0

SUBB A,@R1

MOV R4,A

26. 从内部存储器20H单元开始,有30H个数据。试编一个程序,把其中的正数、负数分别送51H和71H 开始的存储单元,并分别将正数、负数的个数送50H和70H单元。

参考程序:(由于间接寻址寄存器不够用,本处采用两段程序分先后处理正负数)MOV R0,#20H ;处理正数

MOV R2,#30H

MOV 50H,#00H

MOV 70H,#00H

MOV R1, #51H

LOOP0: MOV A,@R0 ;取数

INC R0

JB ACC.7,LOOP1

MOV @R1 ,A

INC R1

INC 50H

LOOP1: DJNZ R2, LOOP0

LOP: MOV R0,#20H ;处理负数

MOV R2,#30H

MOV R1, #71H

LOOP2: MOV A,@R0

INC R0

JNB ACC.7 LOOP3

MOV @R1 ,A ;为负数

INC R1

INC 70H

LOOP3: DJNZ R2, LOOP2

END

27. 设内部RAM中30H和31H单元中有两个带符号数,求出其中的大数存放在32H单元中。

MOV A,30H

XRL A,31H

JB ACC.7,LOOP2 ;是否异号

MOV A,30H ;同号

SUBB A,31H

JC LOOP1

MOV 32H,30H ;30H大

SJMP LOOP4

LOOP1:MOV 32H,31H ;31H大

SJMP LOOP4

LOOP2:MOV A,30H ;异号

JB ACC.7 ,LOOP3

MOV 32H,31H ;正数大

SJMP LOOP4

LOOP3:MOV 32H,30H

LOOP4:RET

28. 根据如下要求,试编制数据块传送程序。将存放在8051单片机内部RAM中首址为20H,长度为

50H的数据块,传送到片外RAM以4200H为首地址的连续单元中。

MOV R0,#20H

MOV DPTR ,#4200H

MOV R2,#50H

LOOP:MOV A,@R0

MOVX @DPTR,A

INC R0

INC DPTR

DJNZ R2,LOOP

END

29. 设有两长度均为20H的无符号字符串SA和SB,分别存放在单片机片内RAM以20H及40H为首址的连续单元中。首地址存放高位字节。要求当SA>SB时,将内部RAM的60H单元清0;当SA ≤SB时将该单元全置1(FFH)。试编制实现上述要求的程序。

MOV R0,#20H

MOV R1,#40H

MOV R2, #20H

LOOP2: MOV 61H,@R1 ;61H做缓冲单元

MOV A , @R0

CJNE A,61H ,LOOP1 ;不相等转

INC R0 ;相等准备下一字节

INC R1

DJNZ R2 , LOOP2 ;所有字节都相等?

MOV 60H,#00H ;都相等

SJMP LOOP4

LOOP1: JC LOOP3

MOV 60H,#00H ;大于

SJMP LOOP4

LOOP3: MOV 60H,#0FFH ;小于

LOOP4: RET

30. 编一程序。将8051片内存储区DATA1单元开始的20个单字节数据依次与DATA2单元为起始地

址的20个单字节数据进行交换。

MOV R0,#DATA1

MOV R1,#DATA2

MOV R2,#20H

LOOP:MOV A,@R1

XCH A,@R0

MOV @R1,A

INC R0

INC R1

DJNZ R2, LOOP

END

31. 试编写一程序。将8051片内数据存储区DATA1单元开始的50个单字节逐一移至DATA2单元开始的存储区中。

MOV R0,#DATA1

MOV R1,#DATA2

MOV R2,#50

CJNE R0,#DATA2,LOOP0 ;计算地址大小

SJMP LOOP5 ;地址相同

LOOP0:JC LOOP2 ;考虑数据覆盖,因地址交叉

LOOP1:MOV A,@R0 ;DATA1大于DATA2

MOV @R1,A ;如40H~72H送30H~62H

INC R0

INC R1

DJNZ R2, LOOP1

SJMP LOOP5

LOOP2:MOV R0,#DATA1+50 ;DATA1小于DATA2

MOV R1,#DATA2+50 ;如30H~62H送40H~72H

LOOP3:MOV A,@R0

MOV @R1,A

DEC R0

DEC R1

DJNZ R2, LOOP3

LOOP5:RET

习题 2

2.1 指出下列程序中每一条指令的划线操作数的寻址方式及其完成的操作。

MOV 3FH ,#40H ;3FH为直接寻址,指令把数40H送地址3FH中

MOV A ,3FH ;A为特殊寄存器寻址,把地址3FH中的内容送A中

MOV R1,#3FH ;3FH为立即寻址,指令把数3FH送寄存器R1中

MOV A,@R1 ;R1间接寻址,R1的内容3FH作地址中的内容送A中

MOV 3FH,R1 ;寄存器寻址,R1的内容送地址3FH中

2.2 内部RAM的4FH单元,可用哪几种方式寻址?分别举例说明。

答:1、直接寻址:MOV R1,4FH 2、间接寻址:MOV R1,#4FH和MOV A,@R1

2.3 特殊功能寄存器可用哪几种方式寻址?分别举例说明。

答:只有直接寻址:MOV A,90H (MOV A,P1 );P1口该指令只有机器码E590H。

2.6 指出下列指令执行后目的操作数的结果,并写出每条指令的机器码。可不管上下句联系。其中(RO)=30H。

MOV 30H #52H ;(30H)=52H MOV A,#78H ;(A)=78H

MOV A,#30H ;(A)=30H MOV RO,#30H ;(RO)=30H

MOV A,@RO ;(A)=52H,把30H的内容送A中。

2.7指出在下列各条指令中,45H代表什么寻址方式?

(1)MOV A,#45H ;立即寻址(3)MOV 45H,46H ;直接寻址

(2)MOV 45H,#46H ;直接寻址(4)MOV C,45H ;位寻址

2.8 分析下列指令顺序执行的结果,并写出每条指令的机器码。

(1)MOV A,#32H ;7432H (4)MOV RO ,#20H ;7820H

(2)DPTR,#2020H ;902020H (5)MOVX A ,@RO ;E2H

(3)MOVX @DPTR,A ;F0H (6)MOV 30H ,A ;F530H

结果:片外存储器RAM2020H内容为32H,(30H)=(A)=32H

2.9试编程实现内部RAM25H单元与外部RAM5500H单元的数据交换。

参考程序:MOV DPTR,#5500H MOVX A,@DPTR XCH A,25H MOVX @DPTR,A 2.10试编程实现外部RAM2040H单元的内容与3040H单元互换。

参考程序:MOV DPTR,#2040H MOVX A,@DPTR MOV 30H,A MOV DPTR,#3040H MOVX A,@DPTR XCH A,30H MOVX @DPTR,A MOV DPTR,#2040H MOV A,30H MOVX @DPTR,A

2.11分析以下程序的执行过程,并绘出执行过程示意图。

(1)MOV A,#32H (6)PUSH A

(2)MOV SP,#55H (7)MOV A,#2FH

(3)MOV DPTR,#4000H ;设定初值(8)MOV @DPTR,A ;使用寄存器

(4)PUSH DPL (9)POP A ;恢复现场

(5)PUSH DPH ;保护现场(10)POP DPH

(6)MOV DPTR,#4200H ;使用(11)POP DPL (12)MOV @DPTR,A

参考答案说明:本程序前三条指令中A、DPTR被给定了值,在后面程序中又要用到A、DPTR寄存器序中采用堆栈保存和恢复A、DPTR的值。

2.12 指出以下程序顺序执行后每一条指令的结果。填写在划线部分。

(1)MOV A,#25H ;(A)=25H(5)ADD A ,R2;(A)=58H

(2)MOV 40H,#1AH ;(40H)=1AH (6)ADDC A,40H;(A)=72H

(3)MOV R2,#33H ;(R2)= 33H(7)MOV RO,#40H;(R0)=40H

(4)CLR C ;(C)= 0(8)ADDC A,@RO;(A)=8CH

2.13试编程实现两个无符号16位数的减法。被减数和减数分别存放在DATA1和DATA2为首址的内部

AM中,低位在低地址单元,高位在后,差存于R3(低8位)和R4(高8位)中。

参考程序:CLR C MOV R0,#DA TA1 MOV A,@R0 MOV R1,#DA TA2 SUBB A,@R1

MOV R3,A INC R0 INC R1 MOV A,@R0 SUBB A,@R1 MOV R4,A

2.14 在划线部分写出下列程序每一条指令执行后其目的操作数的结果。

(1)MOV A,#OFOH ;0F0H (2)CPL A ;0FH

(3)ANL 30H,#00H ;00H (4)ORL 30H,#BDH ;0BDH

(5)XRL 30H,A ;0B2H

2.15 若(A)=7AH,分别执行下列指令后,A的值是多少?填在划线部分。标志位CY和OV的值各是多?不考虑上下指令之间的联系。

(1)ANL A,#0FFH ;7AH (4)ORL A,#00H ;7AH

(2)ORL A,#0FFH ;0FFH (5)XRL A,#0FFH ;85H

(3)ANL A,#00H ;00H (6)XRL A,00H ;7AH

2.16若外部RAM的(2000H)=X,(2001H)=Y,编程实现Z=3X+2Y,结果存入内部RAM 20H单元(设Z <255)

参考程序:MOV DPTR,#2000H MOVX A,@DPTR MOV B,#03H MUL AB

MOV B,A ;存3X MOV DPTR,#2001H MOVX A,@DPTR MOV 20H,A

ADD A,20H ;计算2Y ADD A,B ;3X+2Y MOV 20H,A

2.17 请判断下列各条指令的书写格式是否有错,如有错说明原因:

答:打(×)为不存在指令.

1、mul r0r1 (×) 6、MOVX @R0,B (×)

2、mov a,@r7 (×) 7、MOV A,30H (√)

3、mov a,#3000h (×) 8、MOVX A,30H (×)

4、movc @a+dptr,a (×) 9、ADDC A,R7 (√)

5、ljmp #1000h (×) 10、ANL #99H ,36H (×)

2.18阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能?

MOV R 1 ,#30H ;(R 1 )= 30H MOV A,#64H ;(A)= 64H

ADD A,#47H ;(A)= 0ABH ,(CY)= 0 ,(AC)= 0

DA A ;(A)= 11 ,(CY)= 1 ,(AC)= 1

MOV @R 1 ,A ;(R 1 )= 30H ,(30H)= 11H

此程序段完成的功能:程序采用十六进制运算指令完成十进制数运算64+47=11,且进位为1。结果在30H单元。注意到DA A的功能。

1、填空(每空1分,共20分)

1、十六进制数2B.4H转换为二进制数是_______________,转换为十进制数是_______________。

2、一台计算机所用的二进制代码的位数称为____________,8位二进制数称为______________。

3、8051单片机片内有___________字节的ROM,____________字节的RAM。

4、串行通信根据传送信息的形式分为________________和________________。

5、MCS—51单片机系统通常有上电复位和_______两种复位方式。复位对内部RAM______影响。

6、堆栈按照___________原则工作,使用__________指明栈顶位置。

7、_____速的外设和计算机传送_______批量数据时常采用DMA方式。

8、MCS—51单片机的P2口有两种用途:________________和_________。

9、中断系统中的两个特殊功能寄存器IE为_______________,IP为_____________。

10、一个机器周期为_______个时钟周期,_______个振荡周期。

二、判断是非,正确的打√,不正确的

打X号(每小题1分,共10分)

1、字长越长,计算机处理数据的速度越快;()

2、汇编语言是面向过程的语言。()

3、任何一个十进制小数都可以用二进制精确表示。()

4、计算机的内存与外存都可以直接与CPU交换数据。()

5、8051片内数据存储器的A0H单元既可采用直接寻址方式,又可采用寄存器间接寻址方式.( )

6、P0、P1、P2、P3这四个并行输入/输出接口可以并行输入或输出8位数据,也可以按位使用。()

7、复位影响片内RAM存放的内容。()

8、单片机有4组工作寄存器,可以同时使用四组。()

9、定时器/计数器0在工作方式0时的最大计数范围是256。()

10、定时器/计数器溢出中断可以由硬件产生,也可以由软件产生。()

三、计算(5分)

1、设X=98,Y=58,用补码列式计算X-Y(以八位二进制数表示)

四、简答题(每小题4分,共20分)

1、微型计算机由哪几部分构成?并简述各部分的功能。

2计算机与外设之间传输数据的方式有哪几种?有何特点?

3、8051、8031、8751这三者有何区别和联系?

4、EA/V DD引脚有何功用?8031的EA引脚应如何处理,为什么?

5、MCS—51单片机的寻址方式有哪几种?

五、指令分析(15分)

1、分析执行指令(5分)

MOV A,#7FH

ADD A,#47H

后,A、C、AC、OV、P的内容是什么?

2、用数据传送指令来实现下列要求的数据传送。(每小题2分,共6分)

(1)内部RAM 50H单元内容传送到R3中。

(2)外部RAM 30H单元内容送内部RAM20H单元。

(3)ROM 2000H单元内容送外部RAM 30H单元。

3、指令改错。(每小题1分,共4分)

(1)MOV #78H, A

(2)DEC DPTR

(3)MOVX A,@R5

(4)XRL 30H

六、程序设计(15分)

1.将A中所存的一位十六进制数转换为ASCII码。(7分)

2.编写一程序段,其功能为:内部RAM的32H(高)~30H(低)和42H(高)~40H(低)两个三

字节无符号数相加,结果存入32H(高)~30H(低)单元,设三字节相加时无进位。(8分)

七、应用题(15分)

已知振荡器振荡频率fosc为12MHz,要求定时器/计数器0产生10ms定时,编写初始化程序。

参考答案

一、填空

1.10,1011.0143.25

2. 字长,字节

3.4K, 128;

4.同步通信,异步通信

5.操作复位, 不产生

6.先进后出, 堆栈指针

7,高, 大

8.准双向输入输出接口,高8位地址总线

9.中断允许寄存器,优先级选择寄存器

10.6, 12

二、判断是非

1.√;2√;3×;4×;5×;6。√;7×;8×

9×;10。√

三、计算

1.00101000

四、简答

1.CPU--算术逻辑运算,控制运算等、存储器――存储数据,中间结果等、I/O接口――片内

片外数据交换,电平转换,信息转换等、总线――连接片内片外元器件。

2.无件传送方式――最简单,只传送数据信息

查询传送方式------CPU不断在查询状态下效率低,

中断方式-=适时性好,

DMA方式――最快的数据传送方式

3.8051有4KB掩膜ROM,8031内部无ROM,8751内部有4KB的EPROM。

4.EA为片外程序存储器选择端,同时又是编程电压输入端;8031的EA引脚应接地。

5.立即寻址`寄存器寻址直接寻址、间接寻址变址寻址、相对寻址

五、指令分析

1.(A)=C6H,C=0,AC=1,OV=1,P=0

2.(5)MOV R3,50H (6)MOV R0,#30H, MOVX A,@R0 MOV 20H,A (7)MOV DPTR,#2000H CLR A MOVC A,@A+DPTR MOV R0,#30H MOVX @R0,A

3.(1)MOV A,#78H

(2) INC DPTR

(3) MOVX A,@R0

(4) XRL A

六、程序设计

1.

MOV R2,A

ADD A,#F6H

MOV A,R2

JNC AD30H

ADD A,#07H

AD30H:ADD A,#30H

2.

MOV R0,#30H

MOV R1,#40H

MOV R2,#03H

CLR C

LOOP:MOV A,@R0

ADDC A,@R1

MOV @R0,A

INC R0

INC R1

DJNZ R2,LOOP

END

七、应用题

Tcy=12×(1/(12×106))=1μs;

故定时值为10ms时,计数值为:N=10ms/1μs=10000

(1)方式1时,初值X=216-N=65536-10000=55536=D8FCH

故设定的初值TH0=D8H;TL0=F0H

(2)方式1时方式控制寄存器的编程:

TMOD的各位内容确定如下:由于定时器/计数器0设定为工作方式1,非门控方式,所以C/T(TMOD.2)=0,M!( TMOD.1)=0,M0( TMOD.0)=1,GATE!( TMOD.3)=0;定时器/计数器1 没有使用,相应的D7-D4为随意态“X”可取为0,则( TMOD)=01H

(5)初始化程序

Start: MOV TL0, #F0H;

MOV TH0, #D8H;

MOV TMOD, #01H;

SETB TR0

宁可累死在路上,也不能闲死在家里!宁可去碰壁,也不能面壁。是狼就要练好牙,是羊就要练好腿。什么是奋斗?奋斗就是每天很难,可一年一年却越来越容易。不奋斗就是每天都很容易,可一年一年越来越难。能干的人,不在情绪上计较,只在做事上认真;无能的人!不在做事上认真,只在情绪上计较。拼一个春夏秋冬!赢一个无悔人生!早安!—————献给所有努力的人

R单片机指令系统

第五章AVR单片机指令系统 计算机的指令系统是一套控制计算机操作的代码,称之为机器语言。计算机只能识别和执行机器语言的指令。为了便于人们理解、记忆和使用,通常用汇编语言指令来描述计算机的指令系统。汇编语言指令可通过汇编器翻译成计算机能识别的机器语言。 AVR单片机指令系统是RISC结构的精简指令集,是一种简明易掌握﹑效率高的指令系统。 SL-DIY02-3开发实验器使用AT90S8535单片机,有118条指令, 而我们所做的11个实验程序仅用了34条指令, 我们重点讲这34条指令, 其余指令就可自学了。 AVR器件(指令速查表) 118条指令器件

1.不带进位加法 ADD一不带进位加 说明:两个寄存器不带进位C标志加,结果送目的寄存器Rd。 操作: RdRd+ Rr 语法:操作码:程序计数器: ADD Rd,Rr O≤d≤31,0≤r≤31 PCPC+1 例子:。(实践操作程序实践操作例子*.ASM,必须编译生成*.OBJ文件才可调试,如要修改*.ASM,必须修改文件属性,去掉*.ASM只读文件属性2.带进位加法 ADC-一带进位加 说明:两个寄存器和C标志的内容相加,结果送目的寄存器Rd。 操作: Rd←Rd+Rr+C 语法:操作码:程序计数器: ADC Rd,Rr 0≤d≤31,0≤r≤31 PC←PC+1 例子:(实践操作程序 3.减1指令 DEC一减1 说明:寄存器Rd的内容减1,结果送目的寄存器Rd中。 操作:RdRd-l 语法:操作码:程序计数器: DEC Rd 0≤d≤31 PCPC十1 例子:(实践操作程序 4.立即数比较 CPI——带立即数比较 说明:该指令完成寄存器Rd和常数的比较操作。寄存器的内容不改变。该指令后能 使用所有条件转移指令。 操作:Rd-K 语法:操作码:程序计数器: CPI Rd, K 16≤d≤31, 0≤ K≤255 PCPC + 1

51单片机中断系统详解

的定时器中断后便认为是1s,这样便可精确控制定时时间啦。要计50000个数时,TH0和TL0中应该装入的总数是65536-50000=15536.,把15536对256求模:15536/256=60装入TH0中,把15536对256求余:15536/256=176装入TL0中。 以上就是定时器初值的计算法,总结后得出如下结论:当用定时器的方式1时,设机器周期为T CY,定时器产生一次中断的时间为t,那么需要计数的个数为N=t/T CY ,装入THX和TLX中的数分别为: THX=(65536-N)/256 , TLX=(65536-N)%256 中断服务程序的写法 void 函数名()interrupt 中断号using 工作组 { 中断服务程序内容 } 在写单片机的定时器程序时,在程序开始处需要对定时器及中断寄存器做初始化设置,通常定时器初始化过程如下: (1)对TMOD赋值,以确定T0和 T1的工作方式。 (2)计算初值,并将初值写入TH0、TL0或TH1、TL1。 (3)中断方式时,则对IE赋值,开放中断。 (4)使TR0和TR1置位,启动定时器/计数器定时或计数。 例:利用定时器0工作方式1,实现一个发光管以1s亮灭闪烁。 程序代码如下: #include #define uchar unsigned char #define uint unsigned int sbit led1=P1^0; uchar num; void main() { TMOD=0x01; //设置定时器0位工作模式1(M1,M0位0,1) TH0=(65536-45872)/256; //装初值11.0592M晶振定时50ms数为45872 TL0=(65536-45872)%256; EA=1; //开总中断 ET0=1; //开定时器0中断 TR0=1; //启动定时器0 while(1) { if(num==20) //如果到了20次,说明1秒时间 { led1=~led1; //让发光管状态取反 num=0; } } } void T0_time()interrupt 1

关于习题二答案-单片机的指令系统

关于习题二答案-单片机的指令系统

1、执行下列3条指令后,30H单元的内容是( C )。 MOV R0,#30H MOV 40H,#0EH MOV @R0,40H A)40H B)30H C)0EH D)FFH 2、在堆栈中压入一个数据时(B)。 A)先压栈,再令SP+1 B)先令SP+1,再压栈 C)先压栈,再令SP-l D)先令SP-1,再压栈 3、在堆栈操作中,当进栈数据全部弹出后,这时的SP应指向 A 。 A)栈底单元 B)7FH

C)栈底单元地址加1 D)栈底单元地址减l 4、指令MOVC A,@A+PC源操作数的寻址方式是 D 。 A)寄存器寻址方式B)寄存器间接寻址方式 C)直接寻址方式D)变址寻址方式 5、ANL 20H,#30H指令中,源操作数的寻址方式是 A 。 A)立即寻址方式B)直接寻址方式 C)位寻址方式D)相对寻址方式 6、ANL C,/30H指令中,源操作数的寻址方式是 C 。

A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 7、Jz rel指令中,操作数rel的寻址方式是 D 。 A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 8、Jz rel指令中,是判断 A 中的内容是否为0。 A)A B) B C) C D)PC 9、MOVX A,@DPTR指令中源操作数的寻址方式是(B)

A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址 10、下面条指令将MCS-51的工作寄存器置成3区(B) A)MOV PSW,#13H (B)MOV PSW,#18H 11、MOV C,00H指令中源操作数的寻址方式是(A) A)位寻址B)直接寻址 C)立即寻址 D)寄存器寻址 1、8051单片机共有7 种寻址方式。访问外部数据存储器应采用寄存器间接寻址方式。 2、访问外部数据存储器应采用寄存器间接寻址方式;查表应使用变址寻址方式。 3、在8051单片机中,堆栈操作的指令有PUSH 和 POP两个。 4、在8051单片机中,子程序调用的指令有ACALL 和 LCALL两个。 5、CJNE指令都是 3字节字节指令。

51单片机中断系统编程

51单片机中断系统编程 51单片机中断系统编程 上传的图片 抱歉,您所在的组无权下载附件,请注册或登陆中断是指如下过程(如下图所示):CPU 与外设同时工作,CPU执行主程序,外设做准备工作。当外设准备好时向CPU发中断请求信 号,若条件满足,则CPU终止主程序的执行,转去执行中断服务程序。在中断服务程序中 CPU与外设交换信息,待中断服务程序执行完后,CPU再返回刚才终止的主程序继续执行。 5.3.1 中断系统 MCS-51单片机提供了5个固定的可屏蔽中断源,3个在片内,2个在片外,它们在程序存储 器中各有固定的中断入口地址,由此进入中断服务程序。5个中断源的符号、名称及产生 的条件如下。 ? INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。 ? INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。 ? T0:定时器/计数器0中断,由T0计数溢出引起。 ? T1:定时器/计数器l中断,由T1计数溢出引起。 ? TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。 中断源有两级中断优先级,可形成中断嵌套。两个特殊功能寄存器用于中断控制和条件设 置。整个中断系统的结构框图如图所示。 上传的图片 抱歉,您所在的组无权下载附件,请注册或登陆 中断系统结构框图 2 中断系统的控制寄存器 中断系统有两个控制寄存器(IE和IP),它们分别用来设定各个中断源的打开/关闭和中

断优先级。此外,在TCON中另有4位用于选择引起外部中断的条件并作为标志位。 (1)中断允许寄存器IE IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H-AFH。IE 用 来打开或关断各中断源的中断请求,基本格式如下: 上传的图片 抱歉,您所在的组无权下载附件,请注册或登陆 ? EA:全局中断允许位。EA=0,禁止一切中断;EA=1,打开全局中断控制,此时,由各 个中断控制位确定相应中断的打开或关闭。 ? ×:无效位。 ? ES:串行I/O中断允许位。ES=1,允许串行I/O中断;ES=0,禁止串行I/O中断。 ? ETl;定时器/计数器T1中断允许位。ETl=1,允许T1中断;ETl=0,禁止T1中断。 ? EXl:外部中断l中断允许位。EXl=1,允许外部中断1中断;EXl=0,禁止外部中断1中 断。 ? ET0:定时器/计数器T0中断允许位。ET0=1,允许T0中断;ET0=0,禁止TO中断。 ? EX0:外部中断0中断允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中 断。 (2)中断优先级寄存器IP IP在特殊功能寄存器中,字节地址为B8H,位地址(由低位到高位)分别是B8H一BFH。 MCS-51单片机的中断分为两个优先级,IP用来设定各个中断源属于两级中断中的哪一级, 其基本格式如下: 上传的图片

51单片机中断系统程序实例

51单片机中断系统程序实例(STC89C52RC) 51单片机有了中断,在程序设计中就可以做到,在做某件事的过程中,停下来先去响应中断,做别的事情,做好别的事情再继续原来的事情。中断优先级是可以给要做的事情排序。 单片机的学习不难,只要掌握学习方法,学起来并不难。什么是好的学习方法呢,一定要掌握二个要点: 1. 要知道寄存器的英文全拼,比如IE = interrupt中断 不知道全拼,要去猜,去查。这样就可以理解为什么是这个名称,理解了以后就不用记忆了。 2. 每个知识点要有形像的出处 比如看到TF0,脑子里马上要形像地定位到TCON寄存器的某位 看到ET0, 马上要形像地定位到IE寄存器的第2位 https://www.doczj.com/doc/d52618992.html,/tuenhai/独家揭秘:形像是记忆的最大技巧。当人眼看到某个图时,是把视觉信号转化成电信号,再转化成人能理解的形像。当我们回忆形像时,就是在重新检索原先那个视觉信号,并放大。在学习过程中,不断练习检索、放大信号,我们的学习能力就会越来越强。 写程序代码时,也要把尽量把每行代码形像化。 51单片机内中断源 8051有五个中断源,有两个优先级。与中断系统有关的特殊功能寄存器有IE(中断允许寄存器)、IP(中断优先级控制寄存器)、中断源控制寄存器(如TCON、SCON的有关位)。51单片机的中断系统结构如下图(注意,IF0应为TF0):

8052有6个中断源,它比8051多一个定时器/计数器T2中断源。 8051五个中断源分别是: (1)51单片机外部中断源 8051有两个外部中断源,分别是INT0和INT1,分别从P3.2和P3.3两个引脚引入中断请求信号,两个中断源的中断触发允许由TCON的低4位控制,TCON的高4位控制运行和溢出标志。 INT0也就是Interrupt 0。在这里应该看一下你的51单片机开发板的电路原理图。离开形像的记忆是没有意义的。读到上面这句,你应该回忆起原理图上的连接。任何记忆都转化为形像,这是学习的根本原理,我们通过学习单片机要学会这种学习方法,会让你一辈子受益无穷。 TCON的结构如下图: (a)定时器T0的运行控制位TR0

AVR单片机指令系统

AVR单片机指令系统 计算机的指令系统是一套控制计算机操作的代码,称之为机器语言。计算机只能识别和执行机器语言的指令。为了便于人们理解、记忆和使用,通常用汇编语言指令来描述计算机的指令系统。汇编语言指令可通过汇编器翻译成计算机能识别的机器语言。 AVR单片机指令系统是RISC结构的精简指令集,是一种简明易掌握﹑效率高的指令系统。 SL-DIY02-3开发实验器使用AT90S8535单片机,有118条指令, 而我们所做的11个实验程序仅用了34条指令, 我们重点讲这34条指令, 其余指令就可自学了。 AVR器件(指令速查表) 118条指令器件 AT90S2313/2323/2343/2333 ,AT90S4414/4433/4434/851 5,AT90S8534/8535算术和逻辑指令 BRCC k

C清零转 位指令和位测试指令ADD Rd,Rr 加法 BRSH k ≥转 SBI P,b 置位I/O位ADC Rd,Rr 带进位加

BRLO k 小于转(无符号) CBI P,b 清零I/O位◇ ADIW Rdl,K 加立即数 BRMI k 负数转移

LSL Rd 左移SUB Rd,Rr 减法 BRPL k 正数转移 LSR Rd 右移SUBI Rd,Rr

减立即数 BRGE k ≥转(带符号) ROL Rd 带进位左循环SBC Rd,Rr 带进位减 BRLT k 小于转(带符号)

ROR Rd 带进位右循环SBCI Rd,K 带C减立即数 BRHS k H置位转移 ASR Rd 算术右移◇ SBIW Rdl,K

51单片机汇编语言教程:18课单片机中断系统

51单片机汇编语言教程:第18课-单片机中断系统

MCS-51单片机中断系统的结构: 5个中断源的符号、名称及产生的条件如下。 INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。 INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。 T0:定时器/计数器0中断,由T0计满回零引起。 T1:定时器/计数器l中断,由T1计满回零引起。 TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。整个中断系统的结构框图见下图一所示。

<51单片机中断系统结构> 如图所示,由与中断有关的特殊功能寄存器、中断入口、次序查询逻辑电路等组成,包括5个中断请求源,4个用于中断控制的寄存器IE、IP、ECON和SCON来控制中断类弄、中断的开、关和各种中断源的优先级确定。 中断请求源: (1)外部中断请求源:即外中断0和1,经由外部管脚引入的,在单片机上有两个管脚,名称为INT0、INT1,也就是P3.2、P3.3这两个管脚。在内部的TCON中有四位是与外中断有关的。IT0:INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。这两种方式的差异将在以后再谈。IE0:INT0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。IT1、IE1的用途和IT0、IE0相同。(2)内部中断请求源TF0:定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。TF1:与TF0类似。TI、RI:串行口发送、接收中断,在串行口中再讲解。2、中断允许寄存器IE在MCS-51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。见下表EAX 其中EA是总开关,如果它等于0,则所有中断都不允许。ES-串行口中断允许ET1-定时器1中断允许EX1-外中断1中断允许。ET0-定时器0中断允许EX0-外中断0中断允许。如果我们要设置允许外中断1,定时器1中断允许,其它不允许,则IE能是EAX 即8CH,当然,我们也能用位操作指令SETB EA SETB ET1SETB EX1 来实现它。3、五个中断源的自然优先级与中断服务入口地址外中断0:0003H定时器0:000BH 外中断1:0013H定时器1:001BH串行口:0023H它们的自然优先级由高到低排列。写到这里,大家应当明白,为什么前面有一些程序一始我们这样写: ORG0000HLJMP START ORG0030H START:。 这样写的目的,就是为了让出中断源所占用的向量地址。当然,在程序中没用中断时,直接从0000H开始写程序,在原理上并没有错,但在实际工作中最好不这样做。优先级:单片机采用了自然优先级和人工设置高、低优先级的策略,即能由程序员设定那些中断是高优先级、

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

51单片机定时、中断系统

51单片机定时、中断系统51单片机中断级别 中断源默认中断级别序号(C语言用) INT0---外部中断0 最高0 T0---定时器/计数器0中断第2 1 INT1---外部中断1 第3 2 T1----定时器/计数器1中断第4 3 TX/RX---串行口中断第5 4 T2---定时器/计数器2中断最低 5 中断允许寄存器IE 位序号DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 符号位EA ------- ET2 ES ET1 EX1 ET0 EX0 EA---全局中允许位。 EA=1,打开全局中断控制,在此条件下,由各个中断控制位确定相应中断的打开或关闭。EA=0,关闭全部中断。 -------,无效位。 ET2---定时器/计数器2中断允许位。EA总中断开关,置1为开; ET2=1,打开T2中断。EX0为外部中断0(INT0)开关,…… ET2=0,关闭T2中断。ET0为定时器/计数器0(T0)开关,…… ES---串行口中断允许位。EX1为外部中断1(INT1)开关,…… ES=1,打开串行口中断。ET1为定时器/计数器1(T1)开关,…… ES=0,关闭串行口中断。ES为串行口(TX/RX)中断开关,…… ET1---定时器/计数器1中断允许位。ET2为定时器/计数器2(T2)开关,…… ET1=1,打开T1中断。 ET1=0,关闭T1中断。 EX1---外部中断1中断允许位。 EX1=1,打开外部中断1中断。 EX1=0,关闭外部中断1中断。 ET0---定时器/计数器0中断允许位。 ET0=1,打开T0中断。 ET0=0,关闭T0中断。 EX0---外部中断0中断允许位。 EX0=1,打开外部中断0中断。 EX0=0,关闭外部中断0中断。 中断优先级寄存器IP 位序号DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 位地址--- --- --- PS PT1 PX1 PT0 PX0 -------,无效位。

51单片机中断系统详解(定时器、计数器)

51单片机中断系统 51单片机中断级别 中断源默认中断级别序号(C语言用) INT0---外部中断0 最高0 T0---定时器/计数器0中断第2 1 INT1---外部中断1 第3 2 T1----定时器/计数器1中断第4 3 TX/RX---串行口中断第5 4 T2---定时器/计数器2中断最低 5 中断允许寄存器IE 位序号DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 符号位EA ------- ET2 ES ET1 EX1 ET0 EX0 EA---全局中允许位。 EA=1,打开全局中断控制,在此条件下,由各个中断控制位确定相应中断的打开或关闭。EA=0,关闭全部中断。 -------,无效位。 ET2---定时器/计数器2中断允许位。EA总中断开关,置1为开; ET2=1,打开T2中断。EX0为外部中断0(INT0)开关,…… ET2=0,关闭T2中断。ET0为定时器/计数器0(T0)开关,……ES---串行口中断允许位。EX1为外部中断1(INT1)开关,…… ES=1,打开串行口中断。ET1为定时器/计数器1(T1)开关,…… ES=0,关闭串行口中断。ES为串行口(TX/RX)中断开关,…… ET1---定时器/计数器1中断允许位。ET2为定时器/计数器2(T2)开关,…… ET1=1,打开T1中断。 ET1=0,关闭T1中断。 EX1---外部中断1中断允许位。 EX1=1,打开外部中断1中断。 EX1=0,关闭外部中断1中断。 ET0---定时器/计数器0中断允许位。 ET0=1,打开T0中断。 ET0=0,关闭T0中断。 EX0---外部中断0中断允许位。 EX0=1,打开外部中断0中断。 EX0=0,关闭外部中断0中断。 中断优先级寄存器IP 位序号DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 位地址--- --- --- PS PT1 PX1 PT0 PX0 -------,无效位。 PS---串行口中断优先级控制位。

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 立即寻址示意图

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是数据传送的助记符。

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