1、第一节第一节 微型计算机概述微型计算机概述第一台电子计算机:第一台电子计算机:发展方向发展方向巨型机巨型机微型机微型机智能机智能机计算机网计算机网产于产于1946年年,名叫名叫ENIAC,面积面积167m第一章第一章 微型计算机基础微型计算机基础时间 代 字长(位)代表产品19711973 一 4、8 Intel4004 Intel8008 19741978 二 8 Intel8080 Zilog Z-80 motorola M6800 Apple 6502 Intel MCS-48 Zilog Z8(8bit)19781981 三 16 Zilog Z8000 Intel8086/8088
2、80186/80286 Motorola M68000 Intel MCS-51(8bit)19811992 四 32 Intel80386、80486 HP公司hp32、HP9000 Z80000、M68020 Intel MCS-96(16bit)1992 五 64 Pentium-100、Power PC601一、微型机发展:一、微型机发展:注:注:1、红色的为单片机、红色的为单片机 3、所用元件:电子管、所用元件:电子管-晶体管晶体管-大规模集成电路大规模集成电路-超大规模。超大规模。2、所谓、所谓“代代”:功能增强:功能增强 速度提高速度提高 体积缩小体积缩小一、一、几个概念几个概念
3、I/O接口 MALUCU计算步骤,计算步骤,原始数据原始数据结果计算机组成及工作过程计算机组成及工作过程将计算步骤、原始数据通过输入接口存入内存M,需运算时送入运算器ALU,运算结果存入M,需输出时由输出接口输出。第二节 微型计算机组成原理3.MCS(Micro Computer Systerm)1.CPU(Central Processing Unit)2.MC(Micro Computer)=ALU(Arithmetic Logic Unit)+CU(Control Unit)又叫又叫 MP(Micro Processer)=CPU+M(Main Memory)+I/O接口接口(Input
4、/Output Interface)+BUS(总线)总线)=MC+I/OD(device)+E(电源)电源)+Program5.软件软件(程序程序)4.硬件硬件6.单板机单板机7.单片机单片机8.MCS=软件软件+硬件硬件 系统软件系统软件用户程序用户程序应用软件数据库应用软件数据库计算机、外部设备、电源计算机、外部设备、电源十进制十进制-D,可省略,可省略二进制二进制-B十六进制十六进制-H第二节第二节 微型机中常用的数制与码制微型机中常用的数制与码制一、一、微型机中常用的数制微型机中常用的数制(1)整数)整数:反复除以反复除以2,每次所得余数每次所得余数 排列起来排列起来.38=_B382
5、192922242101101001100201二、不同数制间转换二、不同数制间转换1.“十”“二”(2)小数小数:反复乘以反复乘以2,每次进位每次进位(整数整数)排列起来排列起来 0.6875 21.37500.37520.7501.500.51.00.6875=_B0.101122101011010101111.101B=_H8D3E6.CH=_B通过二进制通过二进制2.“二”“十”3.“二”“十六”56AF.A1000110100111110.11004.“十”“十六”直接法直接法23+21+20+2-1+2-31011.101B=-用于表示字母、符号用于表示字母、符号码制码制BCDAS
6、CII8421BCD2421BCD余余3码码三、微型机中常用的编码三、微型机中常用的编码1.8421BCD(十进制数的二进制编码)(十进制数的二进制编码)0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 0100 9 1001 10 00010000378D=_BCD0011 0111 10002.ASCII码码-美国标准信息交换码美国标准信息交换码表:表:P290 注:注:(1)会查表会查表(2)b7常用于奇偶校验常用于奇偶校验F=_ B1000110 11000110第三节第三节 微型计算机运算基础微型计算机运算基础一、一、
7、机器数与真值机器数与真值 +78 二、二、原码、反码、补码原码、反码、补码1.原码原码(True Form)0-正正 1-负负机器数机器数真值真值 01001110B+1100101B其余其余7位位b6-b0直接表示数值大小直接表示数值大小最高位最高位b7表示符号表示符号.x1=+10101Bx2=-10101B真值真值X1原码原码=_B=_HX2=原码原码_B=_H000101011510010101952.反码反码(ones complement)正数的反码与原码相同,即:符号位为正数的反码与原码相同,即:符号位为0,数值位照写。,数值位照写。负数的反码负数的反码:符号位为符号位为1,数值
8、位按位求反。,数值位按位求反。3.补码补码(twocomplement)正数的补码与原码相同。正数的补码与原码相同。负数的补码负数的补码:符号位为符号位为1,数值位按位求反再加,数值位按位求反再加1。如如 x=1010111B,x原原=_ B,x补补=_ B1010100111010111例例1 求求-33d补补=_ HDF例例2 求求+42的原、反、补码的原、反、补码 +42原原=_B=_H+42反反=B=_H+42补补=_B=_H -42原原=_H-42反反=_H-42补补=_H42D=_B101010001010102AAAD6D5100001B00101010001010102A2A注
9、注:(1)如何求如何求16位数补码位数补码?(2)8位补码表示的数的范围位补码表示的数的范围:-128+127(3)如果已知某数如果已知某数X的补码的补码,来求来求X.只要对这个补码再求一次补即可只要对这个补码再求一次补即可.如如:X补补=10101001B X=-1010111B三、三、补码的运算补码的运算 用补码表示的二进制数,在进行加、减运算时,用补码表示的二进制数,在进行加、减运算时,符号位与数值位一起参加运算,所得数是运算符号位与数值位一起参加运算,所得数是运算 结果的补码。结果的补码。例例1 99-58=?99D=1100011B 58D=111010B例例2 58-99=?110
10、00110+100111011.0110001101100011110001101.00101001=+0101001B001110101001110111010111B=-0101001B=-41例例3 -58-99=?两负数相加结果是正,溢出两负数相加结果是正,溢出=25+23+20=41 溢出的判别溢出的判别(双高位判别法双高位判别法)设设D7的进位为的进位为CS,有进位有进位CS=1,否否CS=0 D7、D6间进位为间进位为CP,CP=1,CP=0 补码的运算中,当补码的运算中,当CS=CP时时,不会有溢出不会有溢出 CSCP时时 有溢出有溢出.本章基本要求本章基本要求 :掌握:掌握M
11、CS-51MCS-51的组成、工作原理及引脚的含义的组成、工作原理及引脚的含义教学重点难点:教学重点难点:重点重点 MCS-51MCS-51单片机的内部结构及工作原理单片机的内部结构及工作原理难点难点 MCS-51MCS-51单片机内部单片机内部RAMRAM区的划分及区的划分及RiRi的应用。的应用。第二章第二章 MCS-51单片机单片机 结构和时序结构和时序第一节第一节 MCS-51单片机内部结构单片机内部结构 对图对图2-1按这个定义对号入座按这个定义对号入座MC=CPU+M+I/OP一、一、MCS-51单片机的基本组成如图单片机的基本组成如图 2-1时钟电路ROMRAM定时/计数器CPU
12、并行接口串行接口中断系统 P0 P1 P2 P3TXD RXDINT0 INT1T0 T1图2-1 8051基本组成框图 1.中央处理器(中央处理器(CPU)2.内部存储器(内部存储器(RAM、ROM)3.定时定时/计数器(计数器(T/C)4.并行并行I/O接口(接口(P0、P1、P2、P3)5.串行口(串行口(S0)6.中断控制系统(中断控制系统(5个中断源)个中断源)7.时钟电路时钟电路RAM-Random Access MemoryROM-Read Only Memory图2-1概括如下:二、中央处理单元二、中央处理单元 CPU(图(图2-2所示)所示)三部分组成:三部分组成:定时控制部
13、件定时控制部件-定时控制逻辑、指令寄存器(定时控制逻辑、指令寄存器(IR)、)、振荡器振荡器(OSCOSCillator)。算术逻辑部件算术逻辑部件-ALU(运算器)(运算器)专用寄存器组专用寄存器组1.PC(Program Counter)-程序计数器,程序计数器,16位位2000H用于存放程序存储器地址,比如右图用于存放程序存储器地址,比如右图中的中的2000H。运算器有运算器有8位和位和1位两个,位两个,1位运算器又叫布尔处理器。位运算器又叫布尔处理器。布尔处理器是布尔处理器是CPUCPU的重要组的重要组成部分,图中没有画出,是一个独立的位处理器。成部分,图中没有画出,是一个独立的位处理
14、器。图2-2 8051内部结构图P0驱动器P0锁存器程序地址寄存器缓冲器PC增1PCDPTR指令寄存器指令译码器定时控制RAM地址寄存器128RAM4EPROMROMB暂存器1暂存器2ACCSPPSW中断、串行口、定时器P2驱动器P3驱动器P1驱动器P3锁存器P1锁存器P2锁存器/PSENALE/EARSTP2.0-P2.7P0.0-P0.7P3.0-P3.7P1.0-P1.7注:相互之间用内部总线连接M前振荡器OSC2.A(Accumulator)-累加器,累加器,8位位 运算前常提供一个操作数运算前常提供一个操作数,之后存放结果之后存放结果3.B(General Purpose Regis
15、ter)-数据通用寄存器,数据通用寄存器,8位位 乘除法时存放乘数或除数乘除法时存放乘数或除数4.PSW(Program Status Word)-程序状态字,程序状态字,8位位ACRS1OVCyF0RS0PPSW.7=Cy(Carry)PSW.6=ACPSW.5=F0(Flag zero)PSW.2=OV(Overflow)PSW.0=P(Parity)RS1 RS0 0 0 0区区 0 1 1区区 1 0 2区区 1 1 3区区PSW.4,PSW.3=RS1,RS0-进位标志。进位标志。CY=1:有。有。-辅助进位标志(半进位标志)。辅助进位标志(半进位标志)。AC=1:有:有-用户标志。
16、用户标志。-溢出标志。溢出标志。OV=1:有:有-奇偶标志。奇偶标志。P=1:A中中1的个数为奇数个的个数为奇数个。DPTR=2000H即:即:DPH=20H,DPL=00H5.DPTR(Data Pointer)-数据指针数据指针DPTR亦可拆成两个亦可拆成两个8位使用位使用-DPH、DPL2000H6 堆栈及堆栈指针堆栈及堆栈指针54H53H52H51H50H22H33H22H33HSP堆栈指针堆栈指针SP(Stack Pointer)-始终指向栈顶始终指向栈顶堆栈性质:堆栈性质:入栈入栈出栈出栈先进后出先进后出FILO54H53H52H51H50H22H33H队列队列FIFO MCS-5
17、1存储器存储器M分:分:又分内和外又分内和外MCS-51存储器分成了四类:存储器分成了四类:内部程序存储器内部程序存储器 内部数据存储器内部数据存储器 外部程序存储器外部程序存储器 外部数据存储器外部数据存储器三、存储器结构三、存储器结构RAM 和和 ROM数据存储器:数据存储器:内、外无联系,外部根据需要扩充,内、外无联系,外部根据需要扩充,内部已固定分配内部已固定分配程序存储器:内、外之和不超过程序存储器:内、外之和不超过64K;内部如有,编排小地址。内部如有,编排小地址。0FFFH1000HSFR数据缓冲区位寻址区工作寄存器(03组)外部RAMFFFFH0000H00HFFH外部ROM片
18、内ROMEA=1片外ROMEA=00000HFFFFH图2-5 8051存储器配置图程序存储器片内数据存储器片外数据存储器2.片内片内RAM存储器存储器8位地址:位地址:00H-FFH分以下四个区:分以下四个区:注:注:1.片内片内ROM存储器存储器8031:无,:无,8051:4KROM,8751:4KEPROM8032:无,:无,8052:8KROM,8752:8KEPROM寄存器区寄存器区 位寻址区位寻址区 数据缓冲区数据缓冲区特殊功能寄存器区特殊功能寄存器区其地址范围如图其地址范围如图2-6所示。所示。08H18H10Hbank0bank1bank2bank300H20H1FH30H2
19、FH80H7FHFFH特殊功能寄存器区数据缓冲区位寻址区寄存器区图2-6 8051内部数据存储器配置图1 寄存器区(寄存器区(00H1FH)2 位寻址区(位寻址区(20H2FH)3 数据缓冲区(数据缓冲区(30H-7FH)堆栈区、数据单元堆栈区、数据单元R0、R1、R7,PSW.4、PSW.3决定哪一组决定哪一组表表2-3(20H.5)的位地址?的位地址?20H2FH32个单元个单元4组组=8个单元个单元/组组8bit*16个单元个单元=128位位4 特殊功能寄存器特殊功能寄存器SFR(Special Function Register)区区 21个特殊功能寄存器有些可位寻址,图个特殊功能寄存
20、器有些可位寻址,图2-7。80HFFH,共,共128个单元,只开发了个单元,只开发了其中其中21个单元,表个单元,表2-4四、四、I/O端口(并行)端口(并行)4个个:P0P3 P0和和P2口通常用作地址、数据总线口通常用作地址、数据总线 P2 P0 AB:*DB:*0011101020H P3口有第二功能(口有第二功能(CB):):P3.0-RXD 串行输入通道串行输入通道P3.1-TXD 串行输入通道串行输入通道P3.2-/INT0 外部中断外部中断0P3.3-/INT1 外部中断外部中断1P3.4-T0 定时定时/计数器计数器0外部输入外部输入P3.5-T1 定时定时/计数器计数器1外部
21、输入外部输入P3.6-/WR 外部数据存储器写选通外部数据存储器写选通P3.7-/RD 外部数据存储器读选通外部数据存储器读选通五、五、定时定时/计数器计数器(2个):个):T0、T1六、串行口六、串行口(1个):个):S0 第二节第二节 8051单片机引脚功能单片机引脚功能Vss:接地接地,Vcc:电源线电源线XTAL1,XTAL2:接外部晶体的二个引脚接外部晶体的二个引脚图图2-10所示,所示,8051共共40管脚,去掉管脚,去掉 4个个P口(口(4*8=32根),剩根),剩8根,如下:根,如下:图2-17XTAL1XTAL2RST/Vpd:Vpd-RAM备用电源。备用电源。Vcc掉电时用
22、掉电时用 RST-复位复位ALE-地址锁存允许低地址锁存允许低8位地址位地址ALE/PROG:PROG-编程脉冲编程脉冲 EA/Vpp:Vpp-编程电源,编程电源,21V(EPROM芯片)芯片)EA-区别区别CPU访问内、外程序存储器访问内、外程序存储器.PSEN:外部程序存储器读选通。(类似于:外部程序存储器读选通。(类似于/RD)第三节 MCS-51单片机时序1、指令周期2、机器周期(M-machine周期)一个指令周期由1、2、4个M周期组成。3、状态周期(S-status周期)1M=6S4、T周期(节拍P、主频、晶振)1S=2T(P1、P2)MCS51的主频=6MHZ或12MHZ1M=
23、1/6MHZ*12=2sS1P1 P2S2P1 P2S3P1 P2S4P1 P2S5P1 P2S6P1 P2S1P1 P2时钟读操作码读操作码(无效)S1 S2 S3 S4 S5 S6 读第二字节 S1 S2 S3 S4 S5 S6 (a)单字节单周期(b)双字节单周期 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 读操作码读操作码(无效)(c)单字节双周期图 2-141M周期读操作码第三章第三章MCS-51MCS-51单片机指令系统单片机指令系统 基本要求:基本要求:熟记熟记MCS-51MCS-51的主要指令及简单程序的编程方法。的主要指令及简单程序的编程方法。难点
24、及处理:难点及处理:MCS-51MCS-51的的111111条指令比较枯燥条指令比较枯燥 ,需要记忆,可,需要记忆,可多读一些例题并动手编一编。多读一些例题并动手编一编。第一节第一节 指令及其表示方式指令及其表示方式一、指令的基本概念一、指令的基本概念指令让计算机做某操作所发命令指令让计算机做某操作所发命令指令系统指令系统一台计算机所有指令的集合。一台计算机所有指令的集合。MCS-51单片机共单片机共111条指令条指令,分为五大类分为五大类二、指令格式二、指令格式 1.汇编语言指令格式汇编语言指令格式:标号字母打头的字母、数字、下划线串;一般不超过标号字母打头的字母、数字、下划线串;一般不超过
25、8个;个;不与指令助记符相同;可有可无。不与指令助记符相同;可有可无。操作码必不可少操作码必不可少,不可更改不可更改.操作数可有、可无,可一可二,可是寄存器、地址、数据操作数可有、可无,可一可二,可是寄存器、地址、数据 可用十、二、十六、可用十、二、十六、BCD、ASCII表示。表示。注释可有、可无,分号打头,注释可有、可无,分号打头,可用汉字、英文及简单的符号表示。可用汉字、英文及简单的符号表示。标号标号:操作码操作码 操作数操作数 ;注释注释;B00HLOOP:MOV B,#00H2.机器语言格式机器语言格式:单字节:单字节:双字节:双字节:NOP;空操作;空操作操作码操作码操作数INC
26、00H;00H单元内容加单元内容加1三字节:三字节:操作码操作数操作数MOV DPTR,#2233HMOV 20H,#30H;30H送送20H单元单元每条指令字节数可从附表中查出,每条指令字节数可从附表中查出,操作码可从附录中查出。操作码可从附录中查出。单字节、单字节、双字节、双字节、三字节指令三字节指令76H05H 00H75H 20H 30H90H 22H 33H第二第二节节 寻址方式寻址方式 (后移)后移)建议学完本章后再来学本节建议学完本章后再来学本节#立即数标志立即数标志#data8、#data168位、位、16位立即数位立即数 间接寻址符号间接寻址符号几个符号说明几个符号说明AAC
27、CDirect8位片内位片内RAM地址地址addr11、addr1611位、位、16位地址位地址Rel8位,补码位,补码-128+127Bit8位片内位片内RAM位地址位地址Rn工作寄存器工作寄存器 n=0,7Ri可间接寻址的工作寄存器可间接寻址的工作寄存器 i=0、1传送类指令分:传送类指令分:内部传送内部传送 外部传送外部传送 堆栈操作堆栈操作 数据交换数据交换将源操作数所指定的内容传送至目的操作数指定的将源操作数所指定的内容传送至目的操作数指定的单元去,源字节内容保持不变单元去,源字节内容保持不变.一、内部数据传送指令一、内部数据传送指令格式格式:MOV ,功能功能第三节第三节 数据传送
28、指令数据传送指令1 以累加器以累加器A为为 目的操作数目的操作数 MOV A,#data MOV A,direct MOV A,Rn MOV A,Ri2 以以direct为目的操作数为目的操作数 MOV direct,A MOV direct,#data MOV direct1,direct2 MOV direct,Rn MOV direct,RiMOV A,#33HMOV A,#4050HMOV A,60HMOV A,R0MOV A,R0MOV 20H,AMOV 20H,#10HMOV 20H,10HMOV 7FH,R7MOV 00H,R13 以以Rn为目的操作数为目的操作数 MOV Rn,
29、A MOV Rn,#data MOV Rn,direct4 以以Ri为目的操作数为目的操作数 MOV Ri,A MOV Ri,#data MOV Ri,direct注注:(:(1)MOV后,源内容不变。后,源内容不变。(2)Ri寻址范围寻址范围0127因此,上例中30H如换成80H就错了例:例:MOV R0,A该类指令之前要给该类指令之前要给R0送一地址送一地址MOV R0,#30HMOV R0,#80H5 MOV DPTR,#data16例例1.下列指令是否正确下列指令是否正确.MOV A,00H MOV B,#0F0H MOV R4,#0AAH MOV R4,#0AAH MOV 80H,#
30、80H MOV P0,#80H MOV R2,77H MOV 0C3H,#00H MOV R9,#7FH MOV R0,R1 MOV#30H,80H MOV DPH,#30H MOV DPL,#20H例例2.将数将数3AH送内部送内部 RAM20H单元单元,试编程试编程MOV 20H,#3AH或或MOV R1,#20HMOV R1,#3AH4,7,8,9,10,11,行错,行错MOV 0F0H,#0F0HMOV DPTR,#3020H MOV A,30H MOV 30H,20H MOV 20H,A例例3 将将30H与与20H内容互换内容互换例例4 分别将(分别将(1)00H单元单元 (2)30
31、H单元单元 (3)80H单元单元置全置全“1”,分别编程。,分别编程。(1)MOV 00H,#0FFH或(或(1)MOV R0,#00H MOV R0,#0FFH或(或(1)MOV PSW,#00H MOV R0,#0FFH(2)MOV 30H,#0FFH或或(2)MOV R0,#30H MOV R0,#0FFH(3)MOV 80H,#0FFH例例5 设(设(70H)=60H,(,(60H)=30H,P1口为口为 输入口,其值为输入口,其值为7BH,下列程序后:下列程序后:MOV R0,#70HMOV A,R0MOV R1,AMOV A,R1MOV R0,P1MOV 60H,#40H(70H)
32、=H,(60H)=H,A=H,R0=H,R1=H7B40307060例例6 将内部将内部RAM 30H开始的开始的20 个数送至个数送至50H开始的区域去。开始的区域去。MOV R7,#14H MOV R0,#30H MOV R1,#50HLOOP:MOV A,R0 MOV R1,A INC R0 INC R1 DJNZ R7,LOOP RET编程三步骤:编程三步骤:1、初始化、初始化2、数据处理、数据处理3、修改地址指针,控制程序是否结束。、修改地址指针,控制程序是否结束。二、外部数据传送指令二、外部数据传送指令1 外部外部RAM与与A的传送的传送 MOVX A,DPTR MOVX A,Ri
33、 MOVX DPTR,A MOVX Ri,A 例例7 将内部将内部RAM30H的内容传送到的内容传送到 外部外部RAM3000H单元。单元。MOV A,30H MOV DPTR,#3000H MOVX DPTR,A例例8 将外部将外部RAM 30H内容传送内容传送 到外部到外部RAM 2000H单元单元 MOV R0,#30H MOV DPTR,#3000HMOVX A,DPTRMOV DPTR,#2000HMOVX DPTR,A 或或MOV P2,#30HMOV R0,#00H MOVX A,R0 MOV DPTR,#2000H MOVX DPTR,AMOVX A,R0MOV DPTR,#2
34、000HMOVX DPTR,A例例9 将外部将外部RAM 3000H内容传送内容传送 到外部到外部RAM 2000H单元单元 2 ROM与与A的传送的传送MOVC MOVC A,A+PC MOVC A,A+DPTR 例例10 已知数已知数0-9的平方表如下的平方表如下 8000H:0 8001H:1 8002H:4 8009H:81 试根据试根据A的内容查其平方值。的内容查其平方值。MOV DPTR,#8000H MOVC A,A+DPTR RET8000H DB 00H,01H,04H,09H,10H,19H,24H,31H,40H,51H三、数据交换指令三、数据交换指令 1 字节交换字节交
35、换 XCH A,Rn XCH A,Ri XCH A,direct 2 半字节交换半字节交换XCHD A,RiSWAP A例例11 将内部将内部RAM单元单元30H的低的低 4位与高位与高4位互换,并保持位互换,并保持 A的内容不变。的内容不变。MOV 30H,#29HXCH A,30HSWAP AXCH A,30H四、堆栈操作指令 入栈:PUSH direct ;sp sp+1 (sp)(direct)出栈:POP direct ;(direct)(sp),sp sp-1例例13 已知已知SP=39H,DPTR=0123H PUSH DPL PUSH DPH 后后 SP=-H,(3AH)=-H
36、,(3BH)=-H例例12 设设SP=30H,内部,内部RAM中中 (50H)=ABH,要求将此,要求将此 数压入堆栈,然后再弹到数压入堆栈,然后再弹到 A中。中。3B2301如:如:PUSH 30H如:如:POP BMOV SP,#30HPUSH 50HPOP ACC例例14 SP=32H,30H、31H、32H内容分别为内容分别为20H、23、01 POP DPH DPH=_H POP DPL DPL=_H POP SP 后后 SP=_H(2)PUSH ACC PUSH PSW POP PSW POP ACC(1)PUSH P0 PUSH P2 POP P0 POP P201231F例例1
37、5 堆栈的两个典型应用:堆栈的两个典型应用:将将P0与与P2内容互换内容互换子程序中用于保护现场、恢复现场子程序中用于保护现场、恢复现场2 带进位加法带进位加法 ADDC A,#data ADDC A,direct ADDC A,Rn ADDC A,Ri 第四节第四节 算术运算指令算术运算指令一、加法指令一、加法指令1 加法加法 ADD A,#data ADD A,direct ADD A,Rn ADD A,Ri 注:该类指令影响注:该类指令影响CY、AC、P、OV标志标志例例16 设内部设内部RAM 30H(低位)、(低位)、31H和和40H、41分别存放一分别存放一 16位数,试将其相加,
38、结果存入位数,试将其相加,结果存入50H、51H单元。单元。MOV A,30H ADD A,40H MOV 50H,A MOV A,31H ADDC A,41H MOV 51H,A3 加加1指令指令 INC A INC Rn INC direct INC Ri INC DPTR 例例17 编程将存放在编程将存放在31H33H中的数相加,其和放入中的数相加,其和放入30H单元单元 (设和不超过设和不超过8位)。位)。MOV R0,#31HMOV A,R0INC R0ADD A,R0INC R0ADD A,R0MOV 30H,A MOV R0,#31H MOV R7,#03H MOV A,#00H
39、LOOP:ADD A,R0 INC R0 DJNZ R7,LOOP MOV 30H,A设(设(31H)=38H,(,(32H)=2BH,(33H)=8EH,PSW=90H程序执行后,程序执行后,A=?PSW=(CY AC F0 RS1 RS0 OV-P)=?F1H51H 01100011(38H+2BH)10001110 11110001例例18设设R0=7EH,(7EH)=FFH,(7FH)=40H 执行下列程序后:执行下列程序后:INC R0 INC R0 INC R0 R0=_H,(7EH)=_H,(7FH)=_H7F0041二、减法指令二、减法指令 1 带借位的减法带借位的减法SUBB
40、 A,#data SUBB A,direct SUBB A,RnSUBB A,Ri 7BH-20H=?2 减减1指令指令 DEC A DEC Rn DEC direct DEC Ri MOV A,#7BHSUBB A,#20HCLR C ;将;将CY清清0例例19 试编写计算试编写计算1234H-0FE7H的程序,将差存入的程序,将差存入40H开始的单元。开始的单元。程序执行后,程序执行后,CY=_,AC=_,P=_,OV=_。CLR CMOV A,#34HSUBB A,#0E7HMOV 40H,AMOV A,#12HSUBB A,#0FHMOV 41H,A0110三、三、BCD调整指令调整指
41、令 DA A例:例:39+47=?39BCD=0011 100147BCD=0100 0111 1000 000080应该=86调整规则:调整规则:1、若、若A的低的低4位大于位大于9或或AC=1,则低,则低4位加位加6。2、若、若A的高的高4位大于位大于9或或CY=1,则高,则高4位加位加6如:已知如:已知A和和B的值为十的值为十 进制数,求其和。进制数,求其和。ADD A,B DA A注:注:DA A只调整组合型、加法只调整组合型、加法 如遇减法,则稍加处理。如遇减法,则稍加处理。0011 10010000 00110000 100139BCD组合型39BCD非组合型2 除法指令:除法指令
42、:DIV AB (3)A、B为为8位无符号数。位无符号数。如果如果B不等于不等于0,则则OV标志为标志为1,否则否则OV为为0.注注:(1)该指令执行时该指令执行时,使使CY请请O四、乘除运算指令四、乘除运算指令 1 乘法指令乘法指令 MUL AB ;BA A*B (2)乘积的低乘积的低8位在位在A中中,高高8位在位在B中中注:注:(1)A、B为无符号数为无符号数 (2)商在商在A中中,余数在余数在B中中(3)该指令使该指令使CY、OV清清0。如除数为如除数为0,则,则A为不定值,为不定值,OV=1一、对一、对A的操作的操作 CLR A;A清清0 CPL A;A取反取反 第五节第五节 逻辑运算
43、指令逻辑运算指令移位指令移位指令RL A RLC A RR ARRC A AD7 D0RL AAD7 D0CYRLC A注:注:A的内容左移一次等于乘以的内容左移一次等于乘以2;右移一次等于除以右移一次等于除以2例例20 指令组指令组RLC AJC NEXT 的作用是?的作用是?例例21 编程将编程将A的内容乘以的内容乘以10。或或MOV B,#0AHMUL ABRL AMOV B,ARL ARL AADD A,B如果A中为负数,则程序转NEXT。ANL A,#dataANL A,directANL A,RnANL A,RiANL direct,AANL direct,#data二、逻辑运算二
44、、逻辑运算ORL A,#dataORL A,directORL A,RnORL A,RiORL direct,AORL direct,#dataXRL A,#dataXRL A,directXRL A,RnXRL A,RiXRL direct,AXRL direct,#data注:常用该类指令对数据加工处理注:常用该类指令对数据加工处理如使如使A高高4位清位清0,低低4位不变位不变:使使A按位求反:按位求反:使内部使内部RAM30H单元低单元低4位置位置1,高,高4位不变:位不变:ANL A,#0FHORL 30H,#0FHXRL A,#0FFH例例22 设外外部数据存储器(设外外部数据存储器
45、(3000H)=B5H,编程编程 使其符号位使其符号位 变反、变反、D0位置位置1、D1和和D2位清位清0 MOV DPTR,#3000H MOV A,DPTR XRL A,#80HORL A,#01HANL A,#0F9HMOVX DPTR,A例例23 设设-32原原=10100000B=A0H,试编程求试编程求-32补。补。MOV A,#0A0HANL A,#7FHCPL AINC AXRL A,#7FH例例24 已知已知A=8AH,R1=73H,试编程将,试编程将A的高的高4位与位与 R1的低的低4位合并成一个字节放在位合并成一个字节放在R0中。中。ANL A,#0F0HMOV R0,A
46、MOV A,R1ANL A,#0FHORL A,R0MOV R0,A例例25 已知数字已知数字6和和7的的ASCII码(码(00110110B和和00110111B)分别存于分别存于40H和和41H单元,将其转换相应的单元,将其转换相应的BCD数数 (0110B和和0111B)以压缩形式存于)以压缩形式存于40H单元中,试单元中,试 编程。编程。ANL 40H,#0FH MOV A,41H ANL A,#0FH SWAP A ORL 40H,A 第六节第六节 控制转移和位操作指令控制转移和位操作指令 一、控制转移一、控制转移 LJMP addr16 ;PC PC+3 PC addr16 AJM
47、P addr11 ;PC PC+2 PC 010 addr11 PC 1115不变 SJMP rel ;PC PC+2 PC PC+rel JMP A+DPTR;PC DPTR+A LJMP 0F0F0H3000H:AJMP 30F0H6080H:AJMP 6900H是错指令是错指令等价于等价于 0100H:LJMP 0123H0100H:SJMP 21H多分支转移指令多分支转移指令 PC=0100H+2+21H=0123H0100H:SJMP 81H向上转,向上转,即目标地址小于即目标地址小于0100H1 无条件转移无条件转移注:注:SJMP rel 指令为指令为2字节指令,字节指令,80
48、rel如如:1000H:SJMP LOOP1 LOOP1为为1054H52LOOP:SJMP LOOP即:即:SJMP$80 FE80rel=1054H-1000H-2=52Hrel为为8位有符号数位有符号数-相对偏移量相对偏移量向上移向上移(小地址小地址):rel=FE-(源、目的地址差的绝对值源、目的地址差的绝对值)向下移向下移(大地址大地址):rel=(源、目的地址差的绝对值源、目的地址差的绝对值)-22 条件转移指令条件转移指令(1)JZ rel JNZ rel(2)CJNE A,direct,rel CJNE A,#data,rel CJNE Ri,#data,rel CJNE Rn
49、,#data,rel(3)DJNZ direct,rel DJNZ Rn,rel例例26 将内部将内部RAM31H开始的开始的 10个无符号数相加结果存入个无符号数相加结果存入 30H单元,设和不超过单元,设和不超过8位。位。MOV R7,#09H MOV R0,#31H MOV A,R0LOOP:INC R0 ADD A,R0 DJNZ R7,LOOP MOV 30H,A SJMP$MOV DPTR,#5500H MOV R0,#40H LOOP:MOVX A,DPTR MOV R0,A INC DPTR INC R0 CJNE R0,#50H,LOOP SJMP$例例27 将外部将外部RA
50、M5500H开始内容送至内部开始内容送至内部RAM 40H4FH3 子程序调用及返回 LCALL addr16;PC PC+3 SP SP+1 (SP)PC07 SP SP+1 (SP)PC815 PC addr015 ACALL addr11;PC PC+2 SP SP+1 (SP)PC07 SP SP+1 (SP)PC815 PC 010 addr11 PC1115不变 RET ;PC 8 15 (SP)SP SP-1 PC 07 (SP)SP SP-1 RETI ;中断返回2000H:LCALL 1000HSP33H32H31H4 空操作指令空操作指令NOP20H03H二、二、位操作指令