第3章MCS-51单片机指令系统
3.1概述
3.1.1指令格式
3.1.2指令的三种表示形式
3.1.3指令的字节数
1. 单字节指令(49条)
图3-1 MOVA,Rn指令的格式
2. 双字节指令(46条) 3. 三字节指令(16条) 3.1.4指令的分类
1. 数据传送指令(2)
2
单片机原理及其接口技术(第2版)
2. 算术运算指令(24条) 3. 逻辑操作和环移指令(25条) 4. 控制转移指令(17条) 5. 位操作指令(17条) 3.1.5指令系统综述
1. 指令系统中所用符号的说明 2. 指令对标志位的影响 3.2寻址方式
3.2.1寄存器寻址
图3-2寄存器寻址示意图
3.2.2直接寻址
立即寻址
寄存器间址
变址寻址
单片机原理及其接口技术(第2版)
3
图3-3直接寻址示意图
图3-4寄存器间址寻址示意图
图3-5变址寻址示意图
3.2.33.2.43.2.
3.2.6相对寻址
3.2.7位寻址
3.3数据传送指令
3.3.1内部数据传送指令(15条)
1. 立即寻址型传送指令 2. 直接寻址型传送指令 3. 寄存器寻址型传送指令 4. 寄存器间址型传送指令 5. 内部数据传送指令的使用
单片机原理及其接口技术(第2版)
图3-6相对寻址示意图
单片机原理及其接口技术(第2版)
5
图3-7 8×C552/8051指令的数据传送方式
3.3.2外部数据传送指令(7条)
1. 16位数传送指令
2. 外部ROM的字节传送指令
图3-8 0~9平方值表
3. 外部RAM的字节传送指令 3.3.3堆栈操作指令(2条)
6
单片机原理及其接口技术(第2版)
图3-9例3.8的堆栈变化示意图
3.3.4数据交换指令(4条)
3.4算术与逻辑运算和移位指令
3.4.1算术运算指令(24条)
1. 加法指令 2. 减法指令 3. 十进制调整指令 4. 乘法和除法指令 3.4.2逻辑运算指令(20条)
1. 逻辑与运算指令 2. 逻辑或指令 3. 逻辑异或指令 4. 累加器清零和取反指令
3.4.3移位指令(5条)
3.5控制转移和位操作指令
3.5.1控制转移指令(17条)
1. 无条件转移指令
单片机原理及其接口技术(第2版)
7
图3-10例3.26附图
8
单片机原理及其接口技术(第2版)
图3-11 AJMP指令转移范围
图3-12例3.29附图
图3-13带符号数的比较方法
3. 子程序调用和返回指令
4. 空操作指令 3.5.2位操作指令(17条)
1. 位传送指令 2. 位置位和位清零指令 3. 位运算指令 4. 位控制转移指令 习题与思考题
单片机原理及其接口技术(第2版)
9
图3-14二级子程序嵌套及断点地址存放
图3-15例3.33附图
10
单片机原理及其接口技术(第2版)
3.1指令通常有哪三种表示形式?各有什么特点?
3. 2 MCS-51指令按功能可以分为哪几类?每类指令的作用是什么? 3. 3 MCS-51共有哪七种寻址方式?各有什么特点?
3. 4指出下列每条指令源操作数的寻址方式和功能。① MOV A, #40H② MOV A,40H ③ MOV A, @R1④ MOV A,R3 ⑤ MOVCA, @A+PC⑥ SJMPLOOP
3.5内部RAM的00H单元可以有哪几种寻址方式?特殊功能寄存器中的操作数有几种寻址方式?请举例说明。
3.6变址寻址和相对寻址中的地址偏移量有何异同?
3.7写出下列指令的机器码,指出指令中的50H或66H各代表什么?① MOVA, #50H② MOV @R0,#66H
MOVA, 50HMOVR6,#66H MOV50H, #20HMOV66H,#45H MOVC, 50HMOV66H,C MOV50H, 20HMOV66H,R1
3.8写出下列指令的机器码,指出下列程序执行后的操作结果:① MOVA, #60H② MOVDPTR,#2003H
MOVR0, #40HMOVA,#18H
单片机原理及其接口技术(第2版)
11
MOV@R0, AMOV20H,#38H MOV41H, R0MOVR0,#20H XCHA, R0XCHA,@R0
3.9写出能完成下列数据传送的指令:① R1中的内容传送到R0 ② 内部RAM20H单元中的内容送到30H单元
③ 外部RAM20H单元中的内容送到内部RAM 20H单元 ④ 外部RAM2000H单元中的内容送到内部RAM 20H单元 ⑤ 外部ROM2000H单元中的内容送到内部RAM的20H单元 ⑥ 外部ROM2000H单元中的内容送到外部RAM的3000H单元
3.10试编出把外部RAM的2050H单元中的内容与2060H单元中的内容相交换的程序。 3.11已知(20H)=X,(21H)=Y,(22H)=Z。请用图示说明下列程序执行后堆栈中的内容是什么?① MOVSP, #70H② MOVSP, #60H
PUSH20HPUSH22H PUSH21HPUSH21H PUSH22HPUSH20H
3.12已知SP=73H,(71H)=X,(72H)=Y,(73H)=Z。试问执行下列程序后20H、21H和22H单元中的内容是什么?并用图示说明堆栈指针SP的指向和堆栈中数据的变化。① POP20H② POP22H
POP21HPOP21H
12
单片机原理及其接口技术(第2版)
POP22HPOP20H
3.13试问如下程序执行后累加器A和PSW中的内容是什么?①MOVA, #0FEH②MOVA, #92H
ADDA, #0FEHADDA, #0A4H
3.14已知A=7AH,R0=30H,(30H)=A5H,PSW=80H。试问如下指令执行后的结果是什么?①ADDCA, 30H②SUBBA, 30H
INC30HINCA
③SUBBA, #30H④SUBBA, R0 DECR0DEC30H
3.15已知内部RAM的M1、M2和M3单元中有无符号数X1、X2和X3。试编一程序令其相加,并把和存入R0和R1(R0中为高8位)中。
3.16被乘数是16位无符号数,低8位在M1单元且高8位在M1+1单元,乘数为8位无符号数(M2单元内)。试编写能将它们相乘并把积存入R2、R3和R4(R2内为高8位、R4内为低8位)中的程序。
3.17已知被除数和除数都是8位无符号数(被除数在20H单元,除数在21H单元)。请编写程序令其相除,并把商放在外部RAM的20H单元,余数放在外部RAM的21H单元。
3.18请编写减法程序,令其完成6F5DH-13B4H,并把操作结果存入内部RAM的30H和31H单元,30H单元存放差的低8位。
3.19已知A=7AH,Cy=1,试指出8031执行下列程序的最终结果。①MOVA, #0FH②MOVA,
单片机原理及其接口技术(第2版)
13
#0BBH
CPLACPLA
MOV30H, #00HRRA
ORL30H, #0ABHMOV40H, #0AAH RLAORLA, 40H
③ANLA, #0FFH④ORLA, #0FH MOV30H, ASWAPA XRLA, 30HRRCA RLCAXRLA, #0FH SWAPAANLA, #0F0H
3.20试编写能完成如下操作的程序:
① 使20H单元中数的高两位变“0”,其余位不变。 ② 使20H单元中数的高两位变“1”,其余位不变。 ③ 使20H单元中数的高两位变反,其余位不变。 ④ 使20H单元中数的所有位变反。
3.21已知X和Y皆为8位无符号二进制数,分别在外部RAM的2000H和2001H单元。试编写能完成如下操作并把操作结果(设Z<255)送入内部RAM 20H单元的程序。
① Z=3X+2Y② Z=5X-2Y
14
单片机原理及其接口技术(第2版)
3.22试编写当累加器A中的内容分别满足下列条件时都能转到LABEL(条件不满足时停机)处执行的程序。
① A≥20② A<20③ A≤10④ A<10
3.23利用减1条件转移指令把外部RAM起始地址为DATA1的数据块(数据块长度为20)传送到内部RAM起始地址为30H的存储区。请编写相应程序。
3.24已知SP=70H,PC=2345H。试问8031执行调用指令LCALL3456H后堆栈指针和堆栈中的内容是什么?此时机器调用何处的子程序?
3.25在题3.24中,当8031执行完子程序末尾一条RET返回指令时,堆栈指针SP和程序计数器PC变为多少?71H和72H单元中的内容是什么?它们是否属于堆栈中的数据?为什么?
3.26已知SP=70H,MA=2000H,SUBPR=4060H。试问如下三种程序中哪些是正确的,为什么?哪些程序最好,为什么?若SUBPR=2060H,则哪一个程序最好,为什么?① MA:ACALLSUBPR
② MA:LJMP4000H
4000H:ACALLSUBPR LJMP2003H
③ MA:LCALLSUBPR
3.27已知以外部RAM 2000H为起始地址的存储区有20个带符号补码数,请编写程序把正数和正零取出来存放到内部以RAM 20H为起始地址的存储区(负数和负零不作处理)。
3.28请编写能求20H和21H单元内两数差的绝对值,并把操作结果|(20H)-(21H)|保留在30H
单片机原理及其接口技术(第2版)
15
单元的程序。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务