您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 第二章微处理器基础知识
汇编语言程序设计第二章微处理器的基础知识第2章微处理器的基础知识2.1Intel公司80x86系列微处理器简介2.2程序可见寄存器组2.3存储器2.4PC机操作系统的发展2.5DOS内存布局2.6外部设备及I/O地址空间2.7汇编语言概述2.1Intel公司80x86系列微处理器简介Intel公司80x86系列微处理器自上世纪70年代开始出现微型计算机以来,CPU经历了飞速的发展,1971年,Intel设计成功了第一片4位微处理器Intel4004;随之又设计生产了8位微处理器8008;1973年推出了8080;1974年基于8080的个人计算机(PC)问世,Microsoft公司的创始人BillGates为这种PC开发了BASIC语言解释程序;1977年Intel推出了8085。自此之后,又陆续推出了8086、80386、Pentium等80X86系列微处理器。1.16位CPU——8086、8088、802862.32位CPU——80386、804863.准64位CPU——Pentium、PⅡ、PⅢ、PⅣ4.64位CPU——ItaniumIntel陆续推出的80x86系列处理器的性能和功能越来越强。但是,从汇编语言程序设计人员面对这些CPU的软件体系结构角度来看,8086建立的实模式和80386建立的保护模式模型到目前为止一直适用。因此,后边介绍的实模式编程以8086为例说明,保护模式编程以80386为例说明。CPU数据总线宽度地址总线宽度寻址能力工作模式808616201MB字节实模式80888201MB字节实模式80286162416MB字节实模式、保护模式80386SX162416MB字节实模式、保护模式80386DX32324GB字节实模式、保护模式80486DX32324GB字节实模式、保护模式Pentium643664GB实模式、保护模式Intel80x86系列微处理器三种运行模式从80386开始,Intel的CPU具有3种运行模式:实模式、保护模式和虚拟8086模式。CPU的3种运行模式及其转换关系如图2-1所示。实模式保护模式虚拟8086模式Reset复位Reset复位、修改CR0LMSW指令、修改CR0中断或异常IRETD指令、任务转换Reset复位1.实模式CPU复位(Reset)或加电(PowerOn)的时候以实模式启动,处理器以实模式工作。在实模式下,内存寻址方式和8086相同,由16位段寄存器的内容乘以16当做基地址,加上16位偏移地址形成20位的物理地址。在实模式下,所有的段都是可以读、写和可执行的。2.保护模式在保护模式下,CPU提供了多任务、内存分段分页管理和特权级保护等功能,这些功能是Windows/Linux等现代操作系统的基石。如果没有CPU的支持,操作系统的许多功能根本无法实现。例如,在实模式下,应用程序可以执行任何的CPU指令,读写所有的内存,DOS操作系统就不能控制应用程序的行为,应用程序可以做任何事情,没有任何限制。而在保护模式下,通过设置特权级和内存的分段分页,应用程序只能读写属于它自己的内存空间,而不能破坏其他应用程序和操作系统。实模式下没有特权级的概念,相当于所有的指令都工作在特权级0,即最高的特权级。它可以执行所有特权指令,包括读写控制寄存器CR0等。Windows/Linux操作系统就是通过在实模式下初始化控制寄存器、GDTR、LDTR、IDTR、TR等寄存器以及页表,然后再通过置CR0的保护模式位(PE位)为1而进入保护模式的。实模式下不支持硬件上的多任务切换,所有的指令都在同一个环境下执行。保护模式下提供的主要功能有:段的大小可以设置为4GB,段内的偏移量为32位。特权级保护。支持内存分页机制,支持虚拟内存。支持多任务。3.虚拟86模式虚拟86模式是以任务形式在保护模式下执行的,在CPU上可以同时支持由多个真正的CPU任务和多个虚拟86任务。在虚拟86模式下,CPU支持任务切换和内存分页。2.2程序可见寄存器组程序可见寄存器组包括多个8位、16位和32位寄存器,如图所示。阴影部分只对80386(含80386)以上CPU有效。1.通用寄存器2.段寄存器3.控制寄存器8086~PentiumCPU程序可见寄存器组1615CHCL(AH)AX(AL)EAXEBX(CH)CX(CL)ECX(DH)DX(DL)EDX位08731AHALSPESPAHALBPEBPAHALSIESIDIEDIIPEIP(BH)BX(BL)FLAGS数据寄存器堆栈指针基址指针源变址目的变址指令指针标志指针寄存器变址寄存器控制寄存器通用寄存器FLAGSGSCSSSDSESFS代码段寄存器堆栈段寄存器数据段寄存器附加段寄存器段寄存器FLAGS1615CHCL(AH)AX(AL)EAXEBX(CH)CX(CL)ECX(DH)DX(DL)EDX位08731AHALSPESPAHALBPEBPAHALSIESIDIEDIIPEIP(BH)BX(BL)FLAGS数据寄存器堆栈指针基址指针源变址目的变址指令指针标志指针寄存器变址寄存器控制寄存器通用寄存器GSCSSSDSESFS代码段寄存器堆栈段寄存器数据段寄存器附加段寄存器段寄存器1.通用寄存器⑴数据寄存器·四个16位寄存器:AX、BX、CX、DX。·八个8位寄存器:AH、AL、BH、BL、CH、CL、DH、DL。·四个32位寄存器(386以上):EAX、EBX、ECX、EDX。⑵指针寄存器堆栈指针寄存器SP、ESP(386以上)功能:存放当前堆栈段栈顶偏移量,总是与SS堆栈段寄存器配合存取堆栈中的数据。说明:实模式使用SP,保护模式使用ESP。基址指针寄存器:BP、EBP(386以上)功能:存放地址的偏移量部分或数据。若存放偏移量时,缺省情况与SS配合。说明:实模式使用BP。保护模式使用EBP变址寄存器:SI、DI、ESI(386以上)、EDI(386以上)功能:存放地址的偏移量部分或数据。若存放偏移量时,缺省情况与DS配合。说明:实模式使用SI、DI。保护模式使用ESI、EDI。注意:除SP、ESP堆栈指针不能随意修改、需要慎用外,其他通用寄存器都可以直接在指令中使用,用以存放操作数,这是它们的通用之处。其他专用用途在具体指令中介绍。2.段寄存器简介:IBMPC机的存储器采用分段管理方法组织,因此一个物理地址用段基址和偏移量表示。一个程序可以由多个段组成。段寄存器功能:段寄存器存放段基址。在实模式下存放段基地址,在保护模式下存放段选择子。2.段寄存器(续)代码段寄存器CS:指定当前代码段,代码段中存放当前正在运行的程序段。堆栈段寄存器SS:指定当前堆栈段。说明:堆栈段是在内存开辟的一块特殊区域,其中的数据访问原则是后进先出(LIFO),允许插入和删除的一端叫做栈顶。IBMPC机中SP(或ESP)指向栈顶,SS指向堆栈段基地址。数据段寄存器DS:指定当前运行程序所使用的数据段。附加数据段寄存器ES:指定当前运行程序所使用的附加数据段。段寄存器FS和GS:指定当前运行程序的另外两个存放数据的存储段(只对80386以上机器有效)。说明:虽然DS、ES、FS、GS(甚至于CS、SS)所指定的段中都可以存放数据,但DS是主要的数据段寄存器,在默认情况下使用DS所指向段的数据。若要引用其他段中的数据,通常需要显式说明。3.控制寄存器控制寄存器包括指令指针寄存器和标志寄存器。注意:在程序中不能直接引用控制寄存器名。⑴指令指针寄存器IP、EIP(386以上)功能总是与CS段寄存器配合指出下一条要执行指令的地址,其中存放偏移量部分。实模式使用IP,保护模式使用EIP。⑵标志寄存器(FLAGS)标志寄存器也被称为状态寄存器,由运算结果特征标志和控制标志组成。如图所示。重点:各档CPU均有的标志。即8086拥有的9个标志。0123456789101112131415161718192021..31CFPFAFZFSFTFIFDFOFCFPFAFZFSFTFIFDFOFNTCFPFAFZFSFTFIFDFOFIOPLNTVMRFCFPFAFZFSFTFIFDFOFIOPLNTVMRFACCFPFAFZFSFTFIFDFOFIOPLNTVMRFACVIMVIPIDIOPL8086/808880286386/486DX80486SX80586①运算结果特征标志用于记录程序中运行结果的特征。8086~Pentium的标志寄存器均含有CF、PF、AF、ZF、SF、OF这6位标志。CF:进位标志,记录运算结果的最高位向前产生的进位或借位。可用于检测无符号数运算时是否发生溢出。CF=1有进位或借位CF=0无进位或借位PF:奇偶标志,记录运算结果最低8位中含1的个数。可用于检测数据传送过程中是否发生错误。PF=1个数为偶数PF=0个数为奇数AF:辅助进位标志,记录运算结果最低4位向前产生的进位或借位。只有在执行十进制运算指令时才关心此位。AF=1有进位或借位AF=0无进位或借位ZF:零标志,记录运算结果是否为0。ZF=1运算结果为零ZF=0结果非零SF:符号标志,记录运算结果的符号。SF=1运算结果为负SF=0结果非负OF:溢出标志,记录运算结果是否超出了机器所能表示的范围。可用于检测带符号数运算时是否发生溢出。OF=1运算结果超出范围OF=0结果未超出②控制标志:控制标志控制处理器的操作,要通过专门的指令才能使控制标志发生变化。控制标志包括:IF、DF、TF等以下控制标志对8086~PentiumCPU均有效:IF:中断允许标志。IF的控制只对外部可屏蔽中断请求(INTR)起作用。IF=1允许CPU响应INTRIF=0禁止响应INTRDF:方向标志。专服务于字符串操作指令,指示串操作时操作数地址的增减方向。DF=1串操作时操作数地址为自动减量DF=0串操作时操作数地址为自动增量TF:陷阱标志,用于程序调试。TF=1CPU处于单步方式TF=0CPU处于连续方式以下控制标志只对80286以上CPU有效:IOPL(I/OPrivilegeLevel):特权标志,占D13和D12两位。当在保护模式工作时,IOPL指定要求执行I/O指令的特权级。若当前任务的特权级比IOPL高则执行I/O指令;否则发生一个保护异常,导致执行程序被挂起NT:嵌套任务标志。保护模式在执行中断返回指令IRET时要测试NT值。当NT=1时,表示当前执行的任务嵌套于另一任务之中,执行完该任务后要返回到另一任务,IRET指令的执行是通过任务切换实现的。当NT=0时,用堆栈中保存的值恢复FLAGS、CST及IP寄存器的内容,以执行常规的IRET中断返回操作。以下控制标志只对80386以上CPU有效:RF:重启动标志。该标志控制是否接受调试故障。RF=0时接受,RF=1时忽略。VM:虚拟方式标志。当CPU处于保护模式时,若VM=1则切换到虚拟模式,以允许执行多个DOS程序;否则CPU工作在一般的保护模式。以下控制标志只对80486SXCPU有效:AC:地址对齐检查标志。若AC=1时进行地址对齐检查,当出现地址不对齐时会引起地址对齐异常,只有在特权级3运行的应用程序才检查引起地址对齐故障。若AC=0时不进行地址对齐检查。只有80486SX微处理器使用该位,主要用来同它配套的协处理器80487SX同步工作。所谓地址不对齐是指以下情形:一个字从奇地址开始,或一个双字不是从4的倍数的地址开始。以下控制标志只对Pentium以上CPU有效:ID:标识标志。若ID=1,则表示Pentium支持CPUID指令,CPUID指令给系统提供Pentium微处理器有关版本号及制造商等信息。VIP:虚拟中断挂起标志。与VIF配合,用于多任务环境给操作系统提供虚拟中断挂起信息。VIF:虚拟中断标志,是虚拟方式下中断标志位的映像。2.3存储器基本概念1、二进制位:存储信息的基本单位,可用小写字母b表示。2、字节:存取信息的基本单位,可用大写字母B表示。一个字节由八位二进制数组成,占用一个存储单元。其位编号自左至右为b7b6b5b4b3b2b1
本文标题:第二章微处理器基础知识
链接地址:https://www.777doc.com/doc-2186552 .html