您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 8086和51单片机对比
一、硬件结构单一+5V电源时钟频率:5MHz~10MHz16位外部数据总线20位外部地址总线可寻址1MB地址空间256个中断向量(前1KB)(与8259A可编程中断控制器)(与8253可编程定时/计数器)(与8255A可编程并行I/O接口)并行流水线处理结构8086CPU支持多处理器系统+5V电源(CMOS版可接+3.3V)时钟频率:1.2MHz~12MHz16位地址总线64KB程序存储器寻址空间64KB片外数据存储器寻址空间4KB片内程序存储器128字节片内数据存储器;32根双向、可独立寻址的I/O线2个16位定时/计数器1个全双工UART串口6个中断源/5个中断向量扩展的布尔处理能力(位处理)12345678910111213141516171819204039383736353433323130292827262524232221GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDVCCAD15A16/S3A17/S4A18/S5A19/S6BHE/S7MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET8086CPU8086的引脚信号双列直插40引脚VccP0.0P0.1P0.2P0.3P0.4P0.6P0.7P0.5EA/VDDALE/PROGPSENP2.7P2.6P2.5P2.3P2.2P2.4P2.1P2.0P1.0P1.0P1.1P1.2P1.3P1.4P1.6P1.7P1.5RSTVPDRXDP3.0TXDP3.1INT0P3.2INT1P3.3T0P3.4WRP3.6RDP3.7T1P3.5XTAL2XTAL1Vss1220403921............MCS-51引脚8051引脚8086是微处理器而8051应被称为微控制器。8086处理的程序和数据是存储在同一个物理存储器上(冯-诺依曼结构)8051处理的程序和数据的存储是分开的(哈佛结构)8086逻辑功能强大而片内资源有限,单个不足以构成系统,8051则不然,可以简单输入或显示就可以构成最小系统。如果说8086是脑子的话,那么8051就是基本完整的脑袋。在8086能直接存储结果的仅是寄存器,必须连接/扩展外部存储器;而对于8051内部不但包含特殊功能寄存器还有一定的RAM,内部RAM与特殊功能寄存器的存取速度无异。二、指令及寻址1、指令数量两者都是操作码占一个字节00~0FFH,按排列来说共有256条指令实际8086有297条指令(操作码中的特征位、方式字段和寄存器字段来区分操作数的位置、字长等),还有很多未用到的编码8051有255条指令,仅十六进制数0A5H不是操作码,如果用Ri替代R0、R1和Rn替代R0~R7则指令可精简至111条。不难看出,8086指令容量大,易实现复杂操作,但指令占用存储资源多;8051指令容量有限,但占用资源少。2、寻址方式①立即(数)寻址第一,虽然两者的源操作数都可以是8/16位,但是8051仅MOVDPTR,#data16这一条是16位的(其实质是完成2条8位的立即数的传送指令MOVDPH/DPL,#data8,因为特殊功能寄存器除PC外,都仅在内部RAM上占有一个地址,)而8086可以有很多,所以从本质上讲8051没有16位的立即方式,8086的寄存器都是16位,只是其中一些可以拆成8位的而已。第二,对于8051立即寻址方式仅涉及程序存储器,而与数据存储器无关。②直接寻址第一,8051用#来区分是立即数还是内存单元,而8086用[]来区分是内存单元还是立即数。第二,8051的直接寻址范围是内部RAM的低128字节,高128字节是特殊功能寄存器所在区域(8052高128字节RAM与特殊功能寄存器区域重叠),而8086在合理设置的段寄存器的基础上可以遍寻外部1MRAM的任意存储单元。第三,对于8051源和目的操作数可为直接寻址,但对于8086则不可以。③寄存器寻址两者都可实现寄存器寻址,使用寄存器寻址可简化程序(特别适用于有规律的递增或递减)。第一,8086寄存器寻址是速度最快的,MCS-51则体现不出来。第二,除PC外,8086寄存器都可被寻址,而MCS-51可寻址的寄存器有特殊功能寄存器还包含Rn。第三,MCS-51不允许Rn之间彼此赋值;8086寄存器寻址限制较多,不允许对段寄存器直接赋值,不允许段寄存器彼此赋值等等。④寄存器间接寻址由直接寻址和寄存器寻址的优点结合而产生。对于MCS-51而言是访问高128位内部RAM唯一的方法对8086来说同直接寻址方式一样,不允许源和目的操作数都是寄存器间接寻址,也就是说任何一条8086指令最多只能有一个操作数处理对象是存储器另一个必然是寄存器。⑤相对寻址第一,对于8086是基址寄存器+相对偏移量形成的,对取数据和程序转移都可以执行;对于8051则仅是针对程序转移用的,很明显8051跳转及程序调用都是在程序存储器范围内而不可能跳转到数据存储器上的。第二,二者的转移范围也是不同的,8051的转移范围是一个字节有符号数补码的表示范围-128~+127,8086的转移范围要大的多。⑥基址变址寻址是最复杂的寻址方式,也是查表时最好用的方式。对于8086既可以查数据表,也可以用来作为程序散转的入口;而对于8051仅是用于访问程序存储器中的数据表格,有两条,值得注意的仅能向地址增大的方向移动。⑦位寻址是8051特有的,在其内部RAM中开辟了一些区域可以进行位操作;而8086则不行。比如8086在清/设置D7位的时候可能的方式有:1)ANDAL,7FH;清02)ORAL,80H;置11)CLRC;清02)SETBC;置13、小结从使用的角度看寻址方式的优缺点:①立即方式非常直观清晰,但同时也非常呆板,缺乏活力。②寄存器寻址方式具有一定的活力,但限于寄存器本身的容量,仅能完成有限的运算,通常在复杂运算时要借助于寄存器的组合。③直接寻址是探索大容量空间的最基本手段。④其他寻址都是在前三种寻址方式优点的继承和变革。8051CYACF0RS1RS0OV-P(MSB)(LSB)程序状态字(PSW)/标志寄存器(FR)TFSFZFAFPFOFDFIFCF15141312111098765432108086CPUOF/DF/IF/TF/SF/ZF/AF/PF/CFDF控制字符串处理的方向为增址或减址IF中断允许标志位,控制8086是否允许接收外部中断请求。TF跟踪标志位。用于单步设置。SF符号标志位。它和运算结果的最高位相同。ZF零标志位。若A当前的运算结果为零,则ZF=1,否则为0。AF辅助半进位CF无符号溢出位若结果的最高位向更高位有进位则此标志为1否则为08086CPU51单片机标志寄存器Cy/Ac/F0/RS1/RS0/OV/PF0用户自定义位RS1/RS0用来选择4组工作寄存器区中的哪一组作为当前工作寄存器区Ac辅助半进位Cy无符号溢出位若结果的最高位向更高位有进位则此标志为1否则为0OF有符号溢出位加减法:若结果最高位向更高位进位(借位)次高位向更高位进位(借位)以上二者一有一无,则无溢出以上二者两有或两无,则有溢出乘法:对无符号数:若MUL积的高一半为0,则此标志为0,否则为1。对有符号数:若IMUL积的高一半是低一半的符号的扩展,则此标志为0,否则为1。除法:对所有标志位无定义。(这些位是不定的)PF奇校验标志寄存器OV有符号溢出位加减法:(不含INCDEC)若结果最高位向更高位进位(借位)次高位向更高位进位(借位)以上二者一有一无,则无溢出以上二者两有或两无,则有溢出乘法:若积的高一半为0,则此标志为0,否则为1。除法:若除数B为0则为1,否则为0INC和DEC对OV无影响P偶校验片内无定时器。片外常用8253。8253含3个定时器/计数器。属于减法计数器。减到0再根据各种方式的不同进行不同的处理。对CLK上的脉冲计数。入栈、出栈都是双字节操作符合高地址高字节,低地址低字节用DW定义则高地址高字节,低地址低字节。定时器/计数器节数据存取存储器双字片内自带2个定时器/计数器。属于加法计数器。加到0则溢出。对内部计数时每12个时钟周期加1。对外计数时对P3.4或P3.5上的脉冲计数。执行LCALL/ACALL、RET/RETI指令时符合高地址高字节,低地址低字节。用DW定义则高地址低字节,低地址高字节。习惯画法存储器地址上边小地址下边大地址80x86处理的程序和数据是存储在同一个物理存储器上(冯-诺依曼结构)8086片内无ROM、片内无RAM。8086片外可外扩ROM、RAM。Pentium芯片内含程序缓存Pentium芯片内含数据缓存存储器组成上边大地址下边小地址MCS-51处理的程序和数据的存储是分开的(哈佛结构)片内RAM存数据片内ROM存程序片外RAM存数据片外ROM存程序以上四部分地址重叠。以命令和控制线来区分。IO端口编址IO端口和存储器单元独立编址。访问存储器用MOV。访问IO端口用IN或OUTCPU内的寄存器只给名称,不给地址。若访问那些可以被访问的寄存器,只能用名称寄存器访问方式IO端口和片外RAM统一编址。访问IO端口用MOVX。访问片外RAM存储器用MOVX。21个特殊功能寄存器地址是显示的,若访问21个特殊功能寄存器,用寄存器名或地址都可以。
本文标题:8086和51单片机对比
链接地址:https://www.777doc.com/doc-4513606 .html