第3章 指令系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

;程序起始地址 20H ;取X 1000H E5H PC ;修正偏移量 ;查表求Y=X2 (PC=1005H) ;存结果 ;子程序结束 ;平方表
思考题:当0≤X≤255时,如何用查表法编程求Y=X2。
(四) 交换指令:
实现片内RAM区的数据双向传送。 1. 字节交换指令 XCH A,Rn ;A (Rn) XCH A,@Ri ;A ((Ri)) XCH A,direct ;A (direct)
12. 二进制数110110110对应的十六进制数可表示为( )。
A. 1D3H B, 1B6H C. DBOH D. 666H 13. -3的补码是( )。
A. 10000011 B. 11111100 C.11111110 D. 11111101
2013-12-11
7
14. CPU主要的组成部部分为( )。 A.运算器,控制器 B.加法器,寄存器 C. 运算器,寄存器 D. 运算器,指令译码器 15. INTEL 8051 CPU是( A. 16 B.4 )位的单片机。 D.准16位
十六进制与ASCII码对应 十六进制 ASCII码 30H 0 1 31H ... ... E F 45H 46H
外部ROM
...
2012H 2005H 46H
...
32H 31H 2004H 30H 2003H 2002H RET 2001H MOVC 2000H INC A
PC
PC
例2: 查表法求Y=X2。设X(0≤X≤15)在片内RAM的20H 单元中,要求查表求Y,存入片内RAM 21H单元。
2013-12-11
12
P49:例1:以查表方法把累加器中的十六进制数转换
为ASCII码,并送回累加器中。 程序如下: 指令地址 2000 2001 2002 2003 2004 2005 …… 2011 2012 DB DB 45H 46H 源程序 ORG 2000H HBA:INC A MOVC A,@A+PC RET DB DB DB 30H 31H 32H
思考题:为什么对DPTR的数据传送使用内部传送指令? 习题:将片外RAM 0000H单元的数据传送到片内RAM的60H单元。
(三) ROM传送指令(查表指令):(MOVC)
实现从程序存储器读取数据到A累加器,只能使 用变址间接寻址方式。 多用于查常数表程序,可直接求取常数表中的 函数值。 1.DPTR为基址寄存器: MOVC A,@A+DPTR ;A((A+DPTR)) (读) 查表范围为 64KB 程序存储器任意空间, 称为远程查表指令。 2.PC为基址寄存器: MOVC A,@A+PC ;A((A+PC)) (读) 常数表只能在查表指令后256B范围内, 称为近程查表指令。
片内 RAM 地址 内容 2BH 35H 2AH 38H 29H „ 20H
例:设A=29H,执行指令 XCH A,2AH后, A= 38H , (2AH)= 29H ? ?
习题:将片内RAM60H单元与61H单元的数据交换。 XCH 60H,61H; ←对吗?
不对!!
2013-12-11
16
2. 半字节交换指令:
例:将片内RAM 2AH和2BH单元中的ASCII码转换成 压缩式BCD码存入20H单元。
单字节 BCD 0000 千位 0000 百位 0000 十位 0000 个位
XCHD A,@Ri ;A0~3 ((Ri))0~3 SWAP A ;A4~7 A0~3
压缩式 BCD 码 千位 百位 十位 个位
内部RAM
... ...
方法1:
21H Y(结果) 20H X(变量)
Y A X A
外部ROM
程序: ORG 1000H SQU: MOV DPTR,#3000H ;确定表首地址(基地址) MOV A,20H ;取 X(变量:偏移量) MOVC A,@A+DPTR ;查表求Y=X2 3001H MOV 21H,A ;保存Y(结果) 3000H RET ;子程序结束 … ;其它程序段 ORG 3000H ;常数表格首地址 1000H TAB: DB 00,01,04,09,… ,225 ;平方表 END
...
225
...
01 00 DPTR
...
30H 00H 90H
PC
例2: 查表法求Y=X2。设X(0≤X≤15)在片内RAM的20H 单元中,要求查表求Y,存入片内RAM 21H单元。
内部RAM
外部ROM
方法2:
... ...
...
21H Y(结果) 20H X(变量)
Y A X A
1009H 1008H
A
片内 RAM 地址 内容 2BH 35H 2AH 38H „ 20H 58H
MOV A,#0
MOV R0,#2AH MOV R1,#2BH XCHD A,@R1 SWAP A XCHD A,@R0 XCH A,20H
00000000
00H R0 R1 00111000 00110101 38H 35H 30H 30H
MOV B,#30H
PUSH A PUSH B …… POP A POP B
;B=30H
;SP=31H (31H)=20H ;SP=32H (32H)=30H ……
;A=30H
;B=20H
SP=31H
SP=30H
2013-12-11
19
习题:找出指令错误并改正:
1.MOV
2.MOVX
A,#1000H ;A←1000H(A装1个字节数)
A. 累加器A B.算术逻辑运算部件ALU C.程序状态字寄存器 PSW D. DPDR
20. 单片机8051的XTALl和XTAL2引脚是( )引脚 A. 外接定时器 B.外接串行口 C. 外接中断 D.外接晶振
2013-12-11
9
(二) 外部RAM传送指令:
指令格式:MOVX
(MOVX)
实现片外数据存储器和A累加器之间的数据传送。 目的操作数,源操作数 寻址方式:片外数据存储器用寄存器间址方式。 1. DPTR作16位数据指针,寻址64KB片外RAM空间: MOVX A,@DPTR ;A←((DPTR)) (读)
A.0区 B.1区 C.2区 D.3区
2013-12-11
2
3.单片机在进行取指令操作时,指令的地址是由 ( )的内容决定。
A. SP B.PC C. DPTR D. PSEN和ALE
2013-12-11
3
4. P0,P1口作输入用途之前必须(
A.外接高电平
)。
B.外接上拉电阻
C.相应端口先置0
225
... ...
01 00 PC
指令地址 1000H 1002H 1004H 1005H 1007H 1008H 100BH SQU:
TAB:
源程序 ORG 1000H MOV A,20H ADD A,#3 MOVC A,@A+PC MOV 21H,A RET DB 00,01,04 … DB 09,… ,225
MOVX
@DPTR,A ;(DPTR)←A
(写)
2. Ri作8位数据指针,寻址256B片外RAM空间
(页内寻址):
MOVX A,@Ri MOVX @Ri,A
2013-12-11
;A←((P2Ri)) ;(P2Ri)←A
(读) (写)
10
例:实现片外数据存储器数据传送(2000H)(2100H)。
D.相应端口先置1
2013-12-11
4
5.程序计数器PC用来(
A.存放指令
)。
B.存放上一条的指令地址
C.存放下一条的指令地址
D.存放正在执行的指令地址
2013-12-11
5
6. 数123可能是( A. 二进制数 D. 四进制数
)。
B. 八进制数 E.十进制数 C. 十六进制数
7. 8051单片机CPU的主要功能有( )。 A.产生控制信号 B.存储数据 D.I/O端口数据传送 E.驱动LED
C.8
16. 在单片机中,通常将一些中间计算结果放在( )中 A.累加器 B.控制器 C. 程序存储器 D.数据存储器
2013-12-11
8
17. 指令和程序是以( )形式存放在程序存储器中。 A. 源程序 B. 汇编程序 C. 二进制编码 D.BCD码
18. 单片机应用程序一般存放在(
)中。
A. RAM B.ROM C. 寄存器 D.CPU 19. 进位标志CY在( )中。
片内 RAM × 34H × × 33H × SP→ 56H SP→ 32H 56H × × 02H SP→ 31H 02H × × SP→ 30H ×
18
2013-12-11
练习:
说明程序执行过程中,SP的内容及堆栈中内 容的改变过程。
程序如下:
MOV SP,#30H MOV A,#20H ;SP=30H ;A=20H
根据数据操作情况自动设置标志位的状态。
MCS-51 的程序状态字寄存器 PSW 为标志寄存器。
其格式如下:字节地址为D0H
位序 B7 B6 B5 B4 B3 B2 B1 B0 P
位符号 CY
AC F0
RS1 RS0 OV F1
2013-12-11
21
1.标志位(自动设置状态):
1)Cy:进位标志位
保存运算后最高位的进位/借位状态,当有进位/借 位,Cy=1,否则Cy=0。
2)AC:辅助进位标志位
保存低半字节的进位/借位状态,当D3产生进位/借 位,AC=1,否则AC=0。用于十进制调整。
3)OV:溢出标志位
1、CPU主要的组成部部分为(
A.运算器,控制器 B.加法器,寄存器
)。
C.运算器,寄存器
D.运算器,指令译码器
2013-12-11
1
2、8031有四个工作寄存器区,由PSW状态字中的RS1、 RS0两位的状态来决定,单片机复位后,若执行 SETB RS1 指令,此时只能使用( )区的工作寄存器。
例:设 A=02H,B=56H,执行下列指令后, SP= 30H ,A= 02H ,B= 56H ? ? ?
SBR: MOV SP,#30H ;设栈底 PUSH A PUSH B MOV A,#00H MOV B,#01H … POP B POP A
A 02H A 00H A 00H
01H B 56H B 56H
(片内RAM可直接寻址)
;R1R2(必须有A参加)
7. MOVX
8. MOVX
DPTR,#2000H
6பைடு நூலகம்H,@DPTR
;DPTR←2000H(应为MOV)
;片内RAM←片外RAM (必须有A参加)
3.2.2 算术运算指令
与数据传送指令不同,多数算术运算指令会
影响标志位的状态,即CPU执行算术运算指令后,
A,1000H ;A←(1000H)片外RAM(DPTR、Ri)
3.MOVC
4.MOVX 5.MOV
A,1000H
60H,A R0,60H
;A←(1000H)片外ROM(DPTR、PC)
;片外RAM(60H)←A(应为MOV) ;片内RAM:(61H)←(60H)
MOV
6. XCH
61H,@R0
R1,R2
MOV MOVX MOV MOVX DPTR,#2000H A,@DPTR DPTR,#2100H @DPTR,A
片外 RAM 地址 内容 2000H X „ 2100H X
; ; ; ;
DPTR= 2000H A= X DPTR= 2100H (2100H)= X
DPTR→
DPTR→
片外数据存储器不能直接寻址。 下列为非法指令: MOVX A,2000H MOVX 2100H,2000H
C.算术、逻辑运算及位操作
8.单片机能够直接运行的程序是(
)。
A. 汇编源程序
B. C语言源程序
C. 高级语言程序 D. 机器语言源程序
2013-12-11
6
9. 十进制数126其对应的十六进制可表示为( )。
A.8F B.8E C.FE D. 7E
10. 十进制数89.75其对应的二进制可表示为( ). A.10001001.01110101 B.1001001.10 C.1011001.11 D.1001001.11 11. 二进制数110010010对应的十六进制数可表示为( ) A.192H B.C90H C. 1A2H D. CA0H
A
A A 20H
00000101 01010000 01011000 01011000
05H 50H 58H 58H
R1
00110000
00110000
R0
习题:交换片内RAM 40H单元和 41H单元的低半字节。
(五)堆栈操作指令:
入栈指令:PUSH direct ;SP←SP+1,(SP)←(direct) 出栈指令:POP direct ;(direct)←(SP),SP←SP-1 “先加后压” “先弹后减”
相关文档
最新文档