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 80
2、186/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、所谓、所谓“代代”:功能增强:功能增强速度提高速度提高体积缩小体积缩小一、一、几个概念几个概念I/O接口
3、 MALUCU计算步骤,计算步骤,原始数据原始数据结果计算机组成及工作过程计算机组成及工作过程将计算步骤、原始数据通过输入接口存入内存M,需运算时送入运算器ALU,运算结果存入M,需输出时由输出接口输出。第二节 微型计算机组成原理3.MCS(MicroComputerSysterm)1.CPU(CentralProcessingUnit)2.MC(MicroComputer)=ALU(ArithmeticLogicUnit)+CU(ControlUnit)又叫又叫MP(MicroProcesser)=CPU+M(MainMemory)+I/O接口接口(Input/OutputInterface
4、)+BUS(总线)总线)=MC+I/OD(device)+E(电源)电源)+Program5.软件软件(程序程序)4.硬件硬件6.单板机单板机7.单片机单片机8.MCS=软件软件+硬件硬件系统软件系统软件用户程序用户程序应用软件数据库应用软件数据库计算机、外部设备、电源计算机、外部设备、电源十进制十进制-D,可省略,可省略二进制二进制-B十六进制十六进制-H第二节第二节微型机中常用的数制与码制微型机中常用的数制与码制一、一、微型机中常用的数制微型机中常用的数制(1)整数)整数:反复除以反复除以2,每次所得余数每次所得余数排列起来排列起来.38=_B38219292224210110100110
5、0201二、不同数制间转换二、不同数制间转换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=-用于表示字母、符号用于表示字母、符号码制码制BCDASCII8421BCD2421BCD余余3
6、码码三、微型机中常用的编码三、微型机中常用的编码1.8421BCD(十进制数的二进制编码)(十进制数的二进制编码)000001000120010300114010050101601107011180100910011000010000378D=_BCD0011011110002.ASCII码码-美国标准信息交换码美国标准信息交换码表:表:P290注:注:(1)会查表会查表(2)b7常用于奇偶校验常用于奇偶校验F=_B100011011000110第三节第三节微型计算机运算基础微型计算机运算基础一、一、机器数与真值机器数与真值+78二、二、原码、反码、补码原码、反码、补码1.原码原码(TrueF
7、orm)0-正正1-负负机器数机器数真值真值01001110B+1100101B其余其余7位位b6-b0直接表示数值大小直接表示数值大小最高位最高位b7表示符号表示符号.x1=+10101Bx2=-10101B真值真值X1原码原码=_B=_HX2=原码原码_B=_H000101011510010101952.反码反码(onescomplement)正数的反码与原码相同,即:符号位为正数的反码与原码相同,即:符号位为0,数值位照写。,数值位照写。负数的反码负数的反码:符号位为符号位为1,数值位按位求反。,数值位按位求反。3.补码补码(twocomplement)正数的补码与原码相同。正数的补码与
8、原码相同。负数的补码负数的补码:符号位为符号位为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注注:(1)如何求如何求16位数补码位数补码?(2)8位补码表示的数的范围位补码表示的数的范围:-128+127(3)如果已
9、知某数如果已知某数X的补码的补码,来求来求X.只要对这个补码再求一次补即可只要对这个补码再求一次补即可.如如:X补补=10101001BX=-1010111B三、三、补码的运算补码的运算用补码表示的二进制数,在进行加、减运算时,用补码表示的二进制数,在进行加、减运算时,符号位与数值位一起参加运算,所得数是运算符号位与数值位一起参加运算,所得数是运算结果的补码。结果的补码。例例199-58=?99D=1100011B58D=111010B例例258-99=?11000110+100111011.0110001101100011110001101.00101001=+0101001B0011101
10、01001110111010111B=-0101001B=-41例例3-58-99=?两负数相加结果是正,两负数相加结果是正,溢出溢出=25+23+20=41溢出的判别溢出的判别(双高位判别法双高位判别法)设设D7的进位为的进位为CS,有进位有进位CS=1,否否CS=0D7、D6间进位为间进位为CP,CP=1,CP=0补码的运算中,当补码的运算中,当CS=CP时时,不会有溢出不会有溢出CSCP时时有溢出有溢出.本章基本要求本章基本要求 :掌握:掌握MCS-51MCS-51的组成、工作原理及引脚的含义的组成、工作原理及引脚的含义教学重点难点:教学重点难点:重点重点 MCS-51MCS-51单片机
11、的内部结构及工作原理单片机的内部结构及工作原理难点难点 MCS-51MCS-51单片机内部单片机内部RAMRAM区的划分及区的划分及RiRi的应用。的应用。第二章第二章MCS-51单片机单片机结构和时序结构和时序第一节第一节MCS-51单片机内部结构单片机内部结构对图对图2-1按这个定义对号入座按这个定义对号入座MC=CPU+M+I/OP一、一、MCS-51单片机的基本组成如图单片机的基本组成如图2-1时钟电路ROMRAM定时/计数器CPU并行接口串行接口中断系统 P0 P1 P2 P3TXD RXDINT0 INT1T0 T1图2-1 8051基本组成框图1.中央处理器中央处理器(CPU)2
12、.内部存储器(内部存储器(RAM、ROM)3.定时定时/计数器计数器(T/C)4.并行并行I/O接口(接口(P0、P1、P2、P3)5.串行口串行口(S0)6.中断控制系统(中断控制系统(5个中断源)个中断源)7.时钟电路时钟电路RAM-RandomAccessMemoryROM-ReadOnlyMemory图2-1概括如下:二、中央处理单元二、中央处理单元CPU(图(图2-2所示)所示)三部分组成:三部分组成:定时控制部件定时控制部件-定时控制逻辑、指令寄存器(定时控制逻辑、指令寄存器(IR)、)、振荡器振荡器(OSCOSCillator)。算术逻辑部件算术逻辑部件-ALU(运算器)(运算器
13、)专用寄存器组专用寄存器组1.PC(ProgramCounter)-程序计数器,程序计数器,16位位2000H用于存放程序存储器地址,用于存放程序存储器地址,比如右图中的比如右图中的2000H。运算器有运算器有8位和位和1位两个,位两个,1位运算器又叫布尔处理器。位运算器又叫布尔处理器。布尔处布尔处理器是理器是CPUCPU的重要组成部分,图中没有画出,是一个独立的位的重要组成部分,图中没有画出,是一个独立的位处理器。处理器。图2-2 8051内部结构图P0驱动器P0锁存器程序地址寄存器缓冲器PC增1PCDPTR指令寄存器指令译码器定时控制RAM地址寄存器128RAM4EPROMROMB暂存器1
14、暂存器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(GeneralPurposeRegister)-数据通用寄存器,数据通用寄存器,8位位乘除法时存放乘数或除数乘除法时存放乘数或除数4.PSW(ProgramStatusWord)-程序状态字,程序状态字,8位位ACRS1
15、OVCyF0RS0PPSW.7=Cy(Carry)PSW.6=ACPSW.5=F0(Flagzero)PSW.2=OV(Overflow)PSW.0=P(Parity)RS1RS0000区区011区区102区区113区区PSW.4,PSW.3=RS1,RS0-进位标志。进位标志。CY=1:有。有。-辅助进位标志(半进位标志)。辅助进位标志(半进位标志)。AC=1:有:有-用户标志。用户标志。-溢出标志。溢出标志。OV=1:有:有-奇偶标志。奇偶标志。P=1:A中中1的个数为奇数个的个数为奇数个。DPTR=2000H即:即:DPH=20H,DPL=00H5.DPTR(DataPointer)-数
16、据指针数据指针DPTR亦可拆成两个亦可拆成两个8位使用位使用-DPH、DPL2000H6堆栈及堆栈指针堆栈及堆栈指针54H53H52H51H50H22H33H22H33HSP堆栈指针堆栈指针SP(StackPointer)-始终指向栈顶始终指向栈顶堆栈性质:堆栈性质:入栈入栈出栈出栈先进后出先进后出FILO54H53H52H51H50H22H33H队列队列FIFOMCS-51存储器存储器M分:分:又分内和外又分内和外MCS-51存储器分成了四类:存储器分成了四类:内部程序存储器内部程序存储器内部数据存储器内部数据存储器外部程序存储器外部程序存储器外部数据存储器外部数据存储器三、存储器结构三、存
17、储器结构RAM和和ROM数据存储器:数据存储器:内、外无联系,外部根据需要扩充,内、外无联系,外部根据需要扩充,内部已固定分配内部已固定分配程序存储器:内、外之和不超过程序存储器:内、外之和不超过64K;内部如有,编排小地址。内部如有,编排小地址。0FFFH1000HSFR数据缓冲区位寻址区工作寄存器(03组)外部RAMFFFFH0000H00HFFH外部ROM片内ROMEA=1片外ROMEA=00000HFFFFH图2-5 8051存储器配置图程序存储器片内数据存储器片外数据存储器2.片内片内RAM存储器存储器8位地址:位地址:00H-FFH分以下四个区:分以下四个区:注:注:1.片内片内R
18、OM存储器存储器8031:无,:无,8051:4KROM,8751:4KEPROM8032:无,:无,8052:8KROM,8752:8KEPROM寄存器区寄存器区位寻址区位寻址区数据缓冲区数据缓冲区特殊功能寄存器区特殊功能寄存器区其地址范围如图其地址范围如图2-6所示。所示。08H18H10Hbank0bank1bank2bank300H20H1FH30H2FH80H7FHFFH特殊功能寄存器区数据缓冲区位寻址区寄存器区图2-6 8051内部数据存储器配置图1寄存器区(寄存器区(00H1FH)2位寻址区(位寻址区(20H2FH)3数据缓冲区(数据缓冲区(30H-7FH)堆栈区、数据单元堆栈区
19、、数据单元R0、R1、R7,PSW.4、PSW.3决定哪一组决定哪一组表表2-3(20H.5)的位地址的位地址?20H2FH32个单元个单元4组组=8个单元个单元/组组8bit*16个单元个单元=128位位4特殊功能寄存器特殊功能寄存器SFR(SpecialFunctionRegister)区区21个特殊功能寄存器有些可位寻址,图个特殊功能寄存器有些可位寻址,图2-7。80HFFH,共,共128个单元,只开发了个单元,只开发了其中其中21个单元,表个单元,表2-4四、四、I/O端口(并行)端口(并行)4个个:P0P3P0和和P2口通常用作地址、数据总口通常用作地址、数据总线线P2P0AB:*D
20、B:*0011101020HP3口有第二功能(口有第二功能(CB):):P3.0-RXD串行输入通道串行输入通道P3.1-TXD串行输入通道串行输入通道P3.2-/INT0外部中断外部中断0P3.3-/INT1外部中断外部中断1P3.4-T0定时定时/计数器计数器0外部输入外部输入P3.5-T1定时定时/计数器计数器1外部输入外部输入P3.6-/WR外部数据存储器写选通外部数据存储器写选通P3.7-/RD外部数据存储器读选通外部数据存储器读选通五、五、定时定时/计数器计数器(2个):个):T0、T1六、串行口六、串行口(1个):个):S0第二节第二节8051单片机引脚功能单片机引脚功能Vss:
21、接地接地,Vcc:电源线电源线XTAL1,XTAL2:接外部晶体的二个引脚接外部晶体的二个引脚图图2-10所示,所示,8051共共40管脚,去掉管脚,去掉4个个P口(口(4*8=32根),剩根),剩8根,如下:根,如下:图2-17XTAL1XTAL2RST/Vpd:Vpd-RAM备用电源。备用电源。Vcc掉电时用掉电时用RST-复位复位ALE-地址锁存允许低地址锁存允许低8位地址位地址ALE/PROG:PROG-编程脉冲编程脉冲EA/Vpp:Vpp-编程电源,编程电源,21V(EPROM芯片)芯片)EA-区别区别CPU访问内、外程序存储器访问内、外程序存储器.PSEN:外部程序存储器读选通。(
22、类似于:外部程序存储器读选通。(类似于/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=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
23、S4 S5 S6 S1 S2 S3 S4 S5 S6 读操作码读操作码(无效)(c)单字节双周期图 2-141M周期读操作码第三章第三章MCS-51MCS-51单片机指令系统单片机指令系统 基本要求:基本要求:熟记熟记MCS-51MCS-51的主要指令及简单程序的编程方法。的主要指令及简单程序的编程方法。难点及处理:难点及处理:MCS-51MCS-51的的111111条指令比较枯燥条指令比较枯燥 ,需要记忆,可,需要记忆,可多读一些例题并动手编一编。多读一些例题并动手编一编。第一节第一节指令及其表示方式指令及其表示方式一、指令的基本概念一、指令的基本概念指令让计算机做某操作所发命令指令让计算机
24、做某操作所发命令指令系统指令系统一台计算机所有指令的集合。一台计算机所有指令的集合。MCS-51单片机共单片机共111条指令条指令,分为五大类分为五大类二、指令格式二、指令格式1.汇编语言指令格式汇编语言指令格式:标号字母打头的字母、数字、下划线串;一般不超过标号字母打头的字母、数字、下划线串;一般不超过8个;个;不与指令助记符相同;可有可无。不与指令助记符相同;可有可无。操作码必不可少操作码必不可少,不可更改不可更改.操作数可有、可无,可一可二,可是寄存器、地址、数据操作数可有、可无,可一可二,可是寄存器、地址、数据可用十、二、十六、可用十、二、十六、BCD、ASCII表示。表示。注释可有、
25、可无,分号打头,注释可有、可无,分号打头,可用汉字、英文及简单的符号表示。可用汉字、英文及简单的符号表示。标号标号:操作码操作码操作数操作数;注释注释;B00HLOOP:MOV B,#00H2.机器语言格式机器语言格式:单字节:单字节:双字节:双字节:NOP;空操作;空操作操作码操作码 操作数INC00H;00H单元内容加单元内容加1三字节:三字节:操作码 操作数 操作数MOVDPTR,#2233HMOV20H,#30H;30H送送20H单元单元每条指令字节数可从附表中查出,每条指令字节数可从附表中查出,操作码可从附录中查出。操作码可从附录中查出。单字节、单字节、双字节、双字节、三字节指令三字
26、节指令76H05H00H75H20H30H90H22H33H第二第二节节寻址方式寻址方式(后移)后移)建议学完本章后再来学本节建议学完本章后再来学本节#立即数标志立即数标志#data8、#data168位、位、16位立即数位立即数间接寻址符号间接寻址符号几个符号说明几个符号说明AACCDirect8位片内位片内RAM地址地址addr11、addr1611位、位、16位地址位地址Rel8位,补码位,补码-128+127Bit8位片内位片内RAM位地址位地址Rn工作寄存器工作寄存器n=0,7Ri可间接寻址的工作寄存器可间接寻址的工作寄存器i=0、1传送类指令分:传送类指令分:内部传送内部传送外部传
27、送外部传送堆栈操作堆栈操作数据交换数据交换将源操作数所指定的内容传送至目的将源操作数所指定的内容传送至目的操作数指定的单元去,源字节内容保操作数指定的单元去,源字节内容保持不变持不变.一、内部数据传送指令一、内部数据传送指令格式格式:MOV,功能功能第三节第三节数据传送指令数据传送指令1以累加器以累加器A为为目的操作数目的操作数MOVA,#dataMOVA,directMOVA,RnMOVA,Ri2以以direct为目的操作数为目的操作数MOVdirect,AMOVdirect,#dataMOVdirect1,direct2MOVdirect,RnMOVdirect,RiMOVA,#33HMO
28、VA,#4050HMOVA,60HMOVA,R0MOVA,R0MOV20H,AMOV20H,#10HMOV20H,10HMOV7FH,R7MOV00H,R13以以Rn为目的操作数为目的操作数MOVRn,AMOVRn,#dataMOVRn,direct4以以Ri为目的操作数为目的操作数MOVRi,AMOVRi,#dataMOVRi,direct注注:(:(1)MOV后,源内容不变。后,源内容不变。(2)Ri寻址范围寻址范围0127因此,上例中30H如换成80H就错了例:例:MOVR0,A该类指令之前要给该类指令之前要给R0送一地址送一地址MOVR0,#30HMOVR0,#80H5MOVDPTR,
29、#data16例例1.下列指令是否正确下列指令是否正确.MOVA,00HMOVB,#0F0HMOVR4,#0AAHMOVR4,#0AAHMOV80H,#80HMOVP0,#80HMOVR2,77HMOV0C3H,#00HMOVR9,#7FHMOVR0,R1MOV#30H,80HMOVDPH,#30HMOVDPL,#20H例例2.将数将数3AH送内部送内部RAM20H单元单元,试编程试编程MOV20H,#3AH或或MOVR1,#20HMOVR1,#3AH4,7,8,9,10,11,行错,行错MOV0F0H,#0F0HMOVDPTR,#3020HMOVA,30HMOV30H,20HMOV20H,A
30、例例3将将30H与与20H内容互换内容互换例例4分别将(分别将(1)00H单元单元(2)30H单元单元(3)80H单元单元置全置全“1”,分别编程。,分别编程。(1)MOV00H,#0FFH或(或(1)MOVR0,#00HMOVR0,#0FFH或(或(1)MOVPSW,#00HMOVR0,#0FFH(2)MOV30H,#0FFH或或(2)MOVR0,#30HMOVR0,#0FFH(3)MOV80H,#0FFH例例5设(设(70H)=60H,(,(60H)=30H,P1口为口为输入口,其值为输入口,其值为7BH,下列程序后:下列程序后:MOVR0,#70HMOVA,R0MOVR1,AMOVA,R
31、1MOVR0,P1MOV60H,#40H(70H)=H,(60H)=H,A=H,R0=H,R1=H7B40307060例例6将内部将内部RAM30H开始的开始的20个数送至个数送至50H开始的区域去。开始的区域去。MOVR7,#14HMOVR0,#30HMOVR1,#50HLOOP:MOVA,R0MOVR1,AINCR0INCR1DJNZR7,LOOPRET编程三步骤:编程三步骤:1、初始化、初始化2、数据处理、数据处理3、修改地址指针,控制程序是否结束。、修改地址指针,控制程序是否结束。二、外部数据传送指令二、外部数据传送指令1外部外部RAM与与A的传送的传送MOVXA,DPTRMOVXA,
32、RiMOVXDPTR,AMOVXRi,A例例7将内部将内部RAM30H的内容传送到的内容传送到外部外部RAM3000H单元。单元。MOVA,30HMOVDPTR,#3000HMOVXDPTR,A例例8将外部将外部RAM30H内容传送内容传送到外部到外部RAM2000H单元单元MOVR0,#30HMOVDPTR,#3000HMOVXA,DPTRMOVDPTR,#2000HMOVXDPTR,A或或MOVP2,#30HMOVR0,#00HMOVXA,R0MOVDPTR,#2000HMOVXDPTR,AMOVXA,R0MOVDPTR,#2000HMOVXDPTR,A例例9将外部将外部RAM3000H内
33、容传送内容传送到外部到外部RAM2000H单元单元2ROM与与A的传送的传送MOVCMOVCA,A+PCMOVCA,A+DPTR例例10已知数已知数0-9的平方表如下的平方表如下8000H:08001H:18002H:48009H:81试根据试根据A的内容查其平方值。的内容查其平方值。MOVDPTR,#8000HMOVCA,A+DPTRRET8000HDB00H,01H,04H,09H,10H,19H,24H,31H,40H,51H三、数据交换指令三、数据交换指令1字节交换字节交换XCHA,RnXCHA,RiXCHA,direct2半字节交换半字节交换XCHDA,RiSWAPA例例11将内部将
34、内部RAM单元单元30H的低的低4位与高位与高4位互换,并保持位互换,并保持A的内容不变。的内容不变。MOV30H,#29HXCHA,30HSWAPAXCHA,30H四、堆栈操作指令 入栈:PUSH direct ;sp sp+1 (sp)(direct)出栈:POP direct ;(direct)(sp),sp sp-1例例13已知已知SP=39H,DPTR=0123HPUSHDPLPUSHDPH后后SP=-H,(3AH)=-H,(3BH)=-H例例12设设SP=30H,内部,内部RAM中中(50H)=ABH,要求将此,要求将此数压入堆栈,然后再弹到数压入堆栈,然后再弹到A中。中。3B23
35、01如:如:PUSH30H如:如:POPBMOVSP,#30HPUSH50HPOPACC例例14SP=32H,30H、31H、32H内容分别为内容分别为20H、23、01POPDPHDPH=_HPOPDPLDPL=_HPOPSP后后SP=_H(2)PUSHACCPUSHPSWPOPPSWPOPACC(1)PUSHP0PUSHP2POPP0POPP201231F例例15堆栈的两个典型应用:堆栈的两个典型应用:将将P0与与P2内容互换内容互换子程序中用于保护现场、恢复现场子程序中用于保护现场、恢复现场2带进位加法带进位加法ADDCA,#dataADDCA,directADDCA,RnADDCA,R
36、i第四节第四节算术运算指令算术运算指令一、加法指令一、加法指令1加法加法ADDA,#dataADDA,directADDA,RnADDA,Ri注:该类指令影响注:该类指令影响CY、AC、P、OV标志标志例例16设内部设内部RAM30H(低位)、(低位)、31H和和40H、41分别存放一分别存放一16位数,试将其相加,结果存入位数,试将其相加,结果存入50H、51H单元。单元。MOVA,30HADDA,40HMOV50H,AMOVA,31HADDCA,41HMOV51H,A3加加1指令指令INCAINCRnINCdirectINCRiINCDPTR例例17编程将存放在编程将存放在31H33H中的
37、数相加,其和放入中的数相加,其和放入30H单元单元(设和不超过设和不超过8位)。位)。MOVR0,#31HMOVA,R0INCR0ADDA,R0INCR0ADDA,R0MOV30H,AMOVR0,#31HMOVR7,#03HMOVA,#00HLOOP:ADDA,R0INCR0DJNZR7,LOOPMOV30H,A设(设(31H)=38H,(,(32H)=2BH,(33H)=8EH,PSW=90H程序执行后,程序执行后,A=?PSW=(CYACF0RS1RS0OV-P)=?F1H51H01100011(38H+2BH)1000111011110001例例18设设R0=7EH,(7EH)=FFH,
38、(7FH)=40H执行下列程序后:执行下列程序后:INCR0INCR0INCR0R0=_H,(7EH)=_H,(7FH)=_H7F0041二、减法指令二、减法指令1带借位的减法带借位的减法SUBBA,#dataSUBBA,directSUBBA,RnSUBBA,Ri7BH-20H=?2减减1指令指令DECADECRnDECdirectDECRiMOVA,#7BHSUBBA,#20HCLRC;将;将CY清清0例例19试编写计算试编写计算1234H-0FE7H的程序,将差存入的程序,将差存入40H开始的单元。程序执行后,开始的单元。程序执行后,CY=_,AC=_,P=_,OV=_。CLRCMOVA
39、,#34HSUBBA,#0E7HMOV40H,AMOVA,#12HSUBBA,#0FHMOV41H,A0110三、三、BCD调整指令调整指令DAA例:例:39+47=?39BCD=0011100147BCD=010001111000000080应该=86调整规则:调整规则:1、若、若A的低的低4位大于位大于9或或AC=1,则低,则低4位加位加6。2、若、若A的高的高4位大于位大于9或或CY=1,则高,则高4位加位加6如:已知如:已知A和和B的值为十的值为十进制数,求其和。进制数,求其和。ADDA,BDAA注:注:DAA只调整组合型、加法只调整组合型、加法如遇减法,则稍加处理。如遇减法,则稍加处
40、理。0011 10010000 00110000 100139BCD组合型39BCD非组合型2除法指令:除法指令:DIVAB(3)A、B为为8位无符号数。位无符号数。如果如果B不等于不等于0,则则OV标志为标志为1,否则否则OV为为0.注注:(1)该指令执行时该指令执行时,使使CY请请O四、乘除运算指令四、乘除运算指令1乘法指令乘法指令MULAB;BAA*B(2)乘积的低乘积的低8位在位在A中中,高高8位在位在B中中注:注:(1)A、B为无符号数为无符号数(2)商在商在A中中,余数在余数在B中中(3)该指令使该指令使CY、OV清清0。如除数为如除数为0,则,则A为不定值,为不定值,OV=1一、
41、对一、对A的操作的操作CLRA;A清清0CPLA;A取反取反第五节第五节逻辑运算指令逻辑运算指令移位指令移位指令RLARLCARRARRCAAD7D0RLAAD7D0CYRLCA注:注:A的内容左移一次等于乘以的内容左移一次等于乘以2;右移一次等于除以右移一次等于除以2例例20指令组指令组RLCAJCNEXT的作用是?的作用是?例例21编程将编程将A的内容乘以的内容乘以10。或或MOVB,#0AHMULABRLAMOVB,ARLARLAADDA,B如果A中为负数,则程序转NEXT。ANLA,#dataANLA,directANLA,RnANLA,RiANLdirect,AANLdirect,#
42、data二、逻辑运算二、逻辑运算ORLA,#dataORLA,directORLA,RnORLA,RiORLdirect,AORLdirect,#dataXRLA,#dataXRLA,directXRLA,RnXRLA,RiXRLdirect,AXRLdirect,#data注:常用该类指令对数据加工处理注:常用该类指令对数据加工处理如使如使A高高4位清位清0,低低4位不变位不变:使使A按位求反:按位求反:使内部使内部RAM30H单元低单元低4位置位置1,高,高4位不变:位不变:ANLA,#0FHORL30H,#0FHXRLA,#0FFH例例22设外外部数据存储器(设外外部数据存储器(3000
43、H)=B5H,编程编程使其符号位使其符号位变反、变反、D0位置位置1、D1和和D2位清位清0MOVDPTR,#3000HMOVA,DPTRXRLA,#80HORLA,#01HANLA,#0F9HMOVXDPTR,A例例23设设-32原原=10100000B=A0H,试编程求试编程求-32补。补。MOVA,#0A0HANLA,#7FHCPLAINCAXRLA,#7FH例例24已知已知A=8AH,R1=73H,试编程将,试编程将A的高的高4位与位与R1的低的低4位合并成一个字节放在位合并成一个字节放在R0中。中。ANLA,#0F0HMOVR0,AMOVA,R1ANLA,#0FHORLA,R0MOV
44、R0,A例例25已知数字已知数字6和和7的的ASCII码(码(00110110B和和00110111B)分别存于分别存于40H和和41H单元,将其转换相应的单元,将其转换相应的BCD数数(0110B和和0111B)以压缩形式存于)以压缩形式存于40H单元中,试单元中,试编程。编程。ANL40H,#0FHMOVA,41HANLA,#0FHSWAPAORL40H,A第六节第六节控制转移和位操作指令控制转移和位操作指令一、控制转移一、控制转移 LJMP addr16 ;PC PC+3 PC addr16 AJMP addr11 ;PC PC+2 PC 010 addr11 PC 1115不变 SJM
45、P rel ;PC PC+2 PC PC+rel JMP A+DPTR;PC DPTR+A LJMP0F0F0H3000H:AJMP30F0H6080H:AJMP6900H是错指令是错指令等价于等价于0100H:LJMP0123H0100H:SJMP21H多分支转移指令多分支转移指令PC=0100H+2+21H=0123H0100H:SJMP81H向上转,向上转,即目标地址小于即目标地址小于0100H1无条件转移无条件转移注:注:SJMPrel指令为指令为2字节指令,字节指令,80rel如如:1000H:SJMPLOOP1LOOP1为为1054H52LOOP:SJMPLOOP即:即:SJMP$
46、80FE80rel=1054H-1000H-2=52Hrel为为8位有符号数位有符号数-相对偏移量相对偏移量向上移向上移(小地址小地址):rel=FE-(源、目的地址差的绝对值源、目的地址差的绝对值)向下移向下移(大地址大地址):rel=(源、目的地址差的绝对值源、目的地址差的绝对值)-22条件转移指令条件转移指令(1)JZrelJNZrel(2)CJNEA,direct,relCJNEA,#data,relCJNERi,#data,relCJNERn,#data,rel(3)DJNZdirect,relDJNZRn,rel例例26将内部将内部RAM31H开始的开始的10个无符号数相加结果存入
47、个无符号数相加结果存入30H单元,设和不超过单元,设和不超过8位。位。MOVR7,#09HMOVR0,#31HMOVA,R0LOOP:INCR0ADDA,R0DJNZR7,LOOPMOV30H,ASJMP$MOVDPTR,#5500HMOVR0,#40HLOOP:MOVXA,DPTRMOVR0,AINCDPTRINCR0CJNER0,#50H,LOOPSJMP$例例27将外部将外部RAM5500H开始内容送至内部开始内容送至内部RAM40H4FH3 子程序调用及返回 LCALL addr16;PC PC+3 SP SP+1 (SP)PC07 SP SP+1 (SP)PC815 PC addr0
48、15 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:LCALL1000HSP33H32H31H4空操作指令空操作指令NOP20H03H二、二、位操作指令位操作指令4位条件转移位条件转移JCrelJNCrelJBbit,relJNBbit,relJBCbit,rel注注:3、5条区别条区别3位逻辑运算位逻辑运算:ANLC,bitANLC,/bitORLC,bitORLC
49、,/bitCPLCCPLbit2位控制:位控制:CLRCCLRbitSETBCSETBbitMOVC,20HMOVC,PSW.5SETB0A0HSETBP2.0ANLC,/80HJC70HJNB99H,99H1位传送:位传送:MOVC,bitMOVbit,CC又叫位累加器又叫位累加器例例28按图示编程按图示编程D7 D0D7 D031H30HMOVA,31HMOVC,ACC.7MOVA,30HRLCAMOV30H,AMOVA,31HRLCAMOV31H,A例例29内部内部RAM40H单元中有单元中有ASCII码码(b7=0),编程,编程,给该数的最给该数的最高位加上奇校验,送回原单元高位加上奇
50、校验,送回原单元.例例30编程序实现以下逻辑操作编程序实现以下逻辑操作如果如果P1.1=1,ACC.0=1且且OV=0则将则将CY置置1MOVA,40HJBP,KSETBACC.7k:MOV40H,AMOVC,P1.1ANLC,ACC.0ANLC,/OV+P1.7P2.0P2.1P2.7P2.3例例31编程:编程:根据下列逻辑电路图求根据下列逻辑电路图求P1.7。MOVC,P2.1ORLC,/P2.0CPLCMOVF0,CMOVC,P2.7ANLC,P2.3ORLC,F0MOVP1.7,C例例32判断判断A与与30H单元的内容,若单元的内容,若A=(30H),转向),转向LOOP1;若若A(3
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100