IBMPC汇编语言程序设计第二版第2章_第1页
IBMPC汇编语言程序设计第二版第2章_第2页
IBMPC汇编语言程序设计第二版第2章_第3页
IBMPC汇编语言程序设计第二版第2章_第4页
IBMPC汇编语言程序设计第二版第2章_第5页
已阅读5页,还剩27页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章80x86计算机组织IBM-PC汇编语言程序设计(第2版)·沈美明温冬婵编著Contents本章内容概览8086微处理器体系结构:从内部寄存器到外部总线,系统掌握核心原理。018086微处理器概述028086内部寄存器结构03存储器组织与分段管理04CPU外部引脚与总线结构05工作模式与系统配置Chapter018086微处理器概述从Intel8086的诞生背景、基本性能与体系结构特点出发,建立对x86架构的整体认知MICROPROCESSORHISTORY8086微处理器的诞生与发展Intel8086于1978年推出,是第一款16位微处理器,奠定了x86架构的基石。它不仅将微处理器从8位时代推入16位时代,更以向后兼容的设计理念影响了此后四十余年的整个PC产业生态。Intel8086微处理器芯片实物011978年Intel推出8086处理器,首次采用16位架构设计,标志着微处理器从8位向16位的跨越式发展16-bit028086采用HMOS工艺制造,集成约2.9万个晶体管,主频最初为5MHz,后续推出8MHz和10MHz版本2.9万晶体管038086奠定了x86指令集架构基础,后续80286至Core系列均保持对8086指令集的向后兼容性x86ISA04IBM于1981年选择8088(8086的8位外部总线版本)作为IBMPC的核心处理器,确立了x86在PC领域的统治地位IBMPCTECHNICALSPECIFICATIONS8086关键性能指标8086微处理器以16位数据总线、20位地址总线和1MB寻址空间为核心规格,配合6字节指令预取队列实现初步的流水线操作,其性能设计在当时代表了微处理器技术的最高水平。Intel8086核心技术参数技术参数规格值说明数据总线宽度16位CPU一次可并行传输16位数据地址总线宽度20位可直接寻址1MB(2²⁰字节)存储空间时钟频率5/8/10MHz不同版本提供不同主频选择指令预取队列6字节支持指令预取,提高执行效率通用寄存器数量14个16位包含通用、段寄存器和控制寄存器I/O端口地址空间64K端口独立I/O编址,可访问65536个端口中断类型数256种支持硬件中断、软件中断和异常8086以16位数据通路和20位地址空间为核心,奠定了PC微处理器的基本架构框架MICROPROCESSORARCHITECTURE8086内部功能结构:BIU与EU8086创造性地将CPU内部划分为总线接口单元(BIU)和执行单元(EU)两大部分,通过并行操作实现初步的指令流水线机制,这一双单元架构设计成为后续x86处理器流水线设计的思想源头。SECTION01总线接口单元BIU01负责CPU与存储器、I/O端口之间的数据传送,包括取指令、读写操作数和写回运算结果02内部包含4个段寄存器(CS/DS/SS/ES)、指令指针IP和6字节指令预取队列03通过20位地址加法器将段地址与偏移地址组合为20位物理地址,实现1MB寻址SECTION02执行单元EU01负责从BIU的指令队列中取出指令进行译码和执行,包含ALU算术逻辑单元完成运算操作02内部包含4个通用数据寄存器(AX/BX/CX/DX)、2个变址寄存器(SI/DI)和2个指针寄存器(BP/SP)03标志寄存器FLAGS记录运算结果的状态特征(如进位、零、符号、溢出等),为条件转移提供判断依据Intel8086CPU内部芯片结构显微照片8086ArchitectureBIU与EU的并行工作机制8086通过BIU预取指令与EU执行指令的并行操作,有效减少了CPU等待总线的时间开销。理解这一并行机制对于认识指令流水线的本质、以及后续理解分支预测等高级技术具有重要意义。01预取队列机制EU执行当前指令期间,BIU利用总线空闲时间自动将后续指令预取到6字节队列中,减少取指等待6字节队列02自动填充触发当指令队列出现至少2个字节的空位且EU未请求总线时,BIU自动启动取指操作填充队列≥2字节空位03分支跳转清空遇到JMP/CALL等转移指令时,队列中已预取的指令失效,BIU需从新地址重新取指并清空队列队列清空04流水线效率预取机制使得顺序执行的短指令几乎无等待延迟,但频繁的分支跳转会显著降低流水线效率顺序最优MICROPROCESSORARCHITECTURE8086与8088的异同分析8088是8086的8位外部总线版本,两者在指令集、寄存器结构和编程模型上完全一致,仅在外部数据总线宽度(8位vs16位)和指令预取队列深度(4字节vs6字节)上存在差异,8088因兼容8位外设而被IBMPC选用。8086与8088关键差异对比特性80868088内部架构16位16位外部数据总线16位8位地址总线20位20位指令预取队列6字节4字节外部存储器访问一次16位一次8位(分两次)外设兼容性需16位外设兼容8位外设IBMPC采用未采用被选用8088与8086内部完全一致,差异仅在外部数据总线宽度和预取队列深度,8088因兼容8位外设被IBMPC采用CHAPTER028086内部寄存器结构深入解析14个16位寄存器的分类、功能与编程应用,掌握汇编语言编程的核心基础MICROPROCESSORARCHITECTURE8086寄存器体系总览8086的14个16位寄存器按功能分为通用寄存器(8个)、段寄存器(4个)和控制寄存器(2个)三大类。通用寄存器8个数据寄存器AX·BX·CX·DX—均可拆分为高8位和低8位独立使用指针与变址SP·BP·SI·DI—主要用于存储器寻址AXBXCXDXSPBPSIDI段寄存器4个CS代码段DS数据段SS堆栈段ES附加段分别指向当前使用的四个逻辑段的起始地址CSDSSSES控制寄存器2个指令指针IP始终指向下一条要执行指令的偏移地址,与CS配合确定物理地址标志寄存器FLAGS包含9个状态和控制标志位,记录运算结果特征并控制CPU操作方式IP·FLAGS8086RegisterArchitecture通用数据寄存器:AX/BX/CX/DX8086的4个16位数据寄存器虽可通用,但各自有隐含的特殊用途:AX专用于I/O和乘除法、BX可作基址寻址、CX自动充当循环计数器、DX配合32位运算和端口寻址。掌握这些隐含约定是写出正确汇编程序的关键。AX累加器所有I/O指令(IN/OUT)必须通过AL(8位)或AX(16位)进行数据传送乘法MUL和除法DIV默认使用AX存放被乘数/被除数及运算结果可拆分为AH(高8位)和AL(低8位)独立使用,常用于BCD码运算和字符处理IN/OUT·MUL/DIV·AH+ALBX基址寄存器唯一可作为存储器基址寻址的数据寄存器,在[BX]、[BX+SI]等寻址方式中提供偏移地址常用于数组和表格操作的基地址存储,配合位移量实现灵活的数据访问[BX]·BaseAddressingCX计数寄存器LOOP指令自动将CX减1并判断是否为零来控制循环次数,是循环编程的核心寄存器串操作指令配合REP前缀时,CX自动作为重复操作的计数器LOOP·REPCounterDX数据寄存器16位乘除法中配合AX组成32位操作数:乘法时DX:AX存放32位积,除法时DX:AX存放32位被除数间接I/O寻址时,DX用来存放16位端口地址(端口号大于255时必须使用DX间接寻址)DX:AX32-bit·PortI/OPointer&IndexRegisters指针与变址寄存器:SP/BP/SI/DISP/BP/SI/DI四个寄存器虽然也可参与通用运算,但它们各自在堆栈操作和串操作中承担着不可替代的角色。SP自动维护栈顶位置,BP为子程序参数访问提供基址,SI/DI在串操作中分别指向源串和目的串。StackPointer−2/+2📍SP—堆栈指针始终指向当前堆栈栈顶的偏移地址,是堆栈机制的核心。PUSH操作时SP自动减2,POP操作时SP自动加2,确保栈顶位置实时更新。🔧自动维护栈顶⚡配合SS段寄存器BasePointer[BP+n]📍BP—基址指针默认与SS段寄存器配合,是子程序设计的关键寄存器。通过[BP+n]寻址方式可稳定访问调用参数和保存的寄存器值,不受栈操作影响。🔧子程序参数访问⚡配合SS段寄存器SourceIndexDS:SI📍SI—源变址寄存器在串操作中默认配合DS段指向源操作数地址。MOVS、CMPS等指令执行后SI根据方向标志位自动增量或减量,实现高效数据块传输。🔧串操作源地址⚡配合DS段寄存器DestinationIndexES:DI📍DI—目的变址寄存器在串操作中必须配合ES段指向目的操作数地址。所有串写入操作的目标地址均由ES:DI指定,与SI协同完成数据的双向流动。🔧串操作目的地址⚡配合ES段寄存器8086MemoryArchitecture段寄存器:CS/DS/SS/ES8086通过4个段寄存器实现对1MB内存空间的分段管理,每个段寄存器指向一个最大64KB的逻辑段。物理地址由段地址左移4位加偏移地址计算得到,这种段:偏移的二维寻址方式是x86架构最核心的内存管理机制。CS·代码段寄存器存放当前代码段的段地址,与IP配合确定下一条指令的物理地址:物理地址=CS×16+IPCS×16+IPDS·数据段寄存器存放当前数据段的段地址,大多数数据访问操作默认使用DS作为段基址默认段基址SS·堆栈段寄存器存放堆栈段的段地址,SP和BP的偏移地址均相对于SS段,所有堆栈操作自动使用SS:SP或SS:BPSS:SP/SS:BPES·附加段寄存器存放附加数据段的段地址,串操作指令的目的操作数必须使用ES:DI寻址,不可被其他段替代ES:DI寻址REGISTERARCHITECTURE控制寄存器:IP与FLAGSIP指令指针控制程序的执行流程,FLAGS标志寄存器记录运算状态并控制CPU行为。两者共同构成了程序执行的控制核心——IP决定"下一步做什么",FLAGS决定"根据什么条件做",是条件转移和程序控制流的底层基础。IP指令指针01IP始终指向下一条待执行指令在代码段中的偏移地址,CPU每取出一条指令后IP自动增加该指令的字节数02程序员不能直接修改IP的值,只能通过JMP/CALL/RET/INT等控制转移指令间接改变IP的内容IPFLAGS状态标志01CF(进位):无符号运算产生进位或借位时置1;OF(溢出):有符号运算结果超出表示范围时置102ZF(零):运算结果为零时置1;SF(符号):运算结果最高位为1时置1,反映有符号数的正负03PF(奇偶):结果低8位中1的个数为偶数时置1;AF(辅助进位):第3位向第4位产生进位时置1CF·OF·ZF·SF·PF·AFFLAGS控制标志01DF(方向):DF=0时串操作地址自动递增,DF=1时自动递减,通过CLD/STD指令设置02IF(中断允许):IF=1时允许响应可屏蔽中断INTR,IF=0时屏蔽,通过STI/CLI指令控制03TF(陷阱):TF=1时CPU进入单步执行模式,每执行一条指令产生内部中断,用于程序调试DF·IF·TFChapter03存储器组织与分段管理理解20位物理地址与16位逻辑地址的转换机制,掌握存储器分段原理与奇偶存储体结构PhysicalAddressSpace8086物理地址空间8086通过20位地址总线实现对1MB物理存储空间的统一编址,由于内部寄存器仅16位,必须通过段地址+偏移地址的二维逻辑地址机制间接生成20位物理地址。1MB物理寻址空间20位地址总线可寻址1MB空间,物理地址范围为00000H至FFFFFH,每个地址对应一个字节存储单元16位寄存器局限16位寄存器最大只能表示64KB地址范围(0000H~FFFFH),无法直接寻址1MB空间,必须采用分段机制物理地址唯一性物理地址是内存芯片实际接收到的地址信号,是唯一的、绝对的地址编号,与段划分方式无关小端序存储内存中的字(16位)占用连续两个字节,低字节存放在低地址、高字节存放在高地址,采用小端序存储AddressTranslation逻辑地址与物理地址的转换8086通过"物理地址=段地址×16+偏移地址"将16位逻辑地址转换为20位物理地址,同一物理地址可用多种逻辑地址表示。01逻辑地址表示为"段地址:偏移地址"形式(如1234H:5678H),段地址来自段寄存器,偏移地址由指令给出。SEG:OFF02物理地址=段地址×10H+偏移地址,即段地址左移4位后与偏移地址相加,得到20位物理地址。×10H+OFF03同一物理地址可用不同逻辑地址表示:如179B8H可以是1234H:5678H,也可以是1000H:79B8H。179B8H04段起始地址必须是16的倍数(末4位为0),段内最大64KB,各段之间可以重叠或部分重叠。64KBMemoryArchitecture8086存储器逻辑分段结构8086程序通常将1MB内存划分为代码段、数据段、堆栈段和附加段四个逻辑段,各段由对应的段寄存器指向。程序启动时必须完成段寄存器的初始化,确保CPU能正确访问代码、数据和堆栈区域。代码段存放程序指令,CS寄存器指向其段基址,CPU自动通过CS:IP取指令执行,程序员不能修改CSCS:IP数据段存放变量和常量,DS指向其段基址,大多数数据访问指令默认使用DS段,可通过段前缀覆盖DS堆栈段用于子程序调用、中断保护和临时数据保存,SS:SP指向栈顶,按后进先出原则操作SS:SP附加段用于串操作目标区域和额外数据存放,ES:DI指向目标地址,串操作的目的操作数必须用ES段ES:DI8086MemoryArchitecture奇偶存储体(Bank)结构8086将1MB存储器分为奇地址体和偶地址体两个独立的512KBBank,通过对A0和BHE信号的组合控制实现对字节、对齐字和非对齐字的灵活访问。01奇偶体结构与数据线分配偶地址体连接D7~D0由A0=0选中;奇地址体连接D15~D8由BHE=0选中,各自独立512KB空间。02对齐字访问——单次完成偶地址对齐字:A0=0且BHE=0,两Bank同时工作,一个总线周期完成16位数据读写。03非对齐字访问——分两次奇地址非对齐字需两个总线周期:先读奇地址体低字节,再读偶地址体高字节,效率减半。04单字节访问——按奇偶选Bank偶地址字节用A0=0选中低8位Bank;奇地址字节用BHE=0选中高8位Bank,精确到单字节。ADDRESSTRANSLATION物理地址计算与存储访问示例通过具体数值计算演示逻辑地址到物理地址的转换过程,并分析对齐与非对齐访问的效率差异。物理地址计算示例访问场景段地址偏移地址物理地址访问特征MOVAX,[BX]DS=2000HBX=1234H21234H偶地址对齐字,单次总线周期MOVAX,[BX]DS=2000HBX=1235H21235H奇地址非对齐字,两次总线周期MOVAL,[SI]DS=3000HSI=0001H30001H奇地址字节,访问高8位BankPUSHAXSS=1000HSP=0FFEH10FFEH堆栈操作,偶地址对齐字物理地址=段地址×16+偏移地址;对齐字访问效率最高,堆栈操作默认使用SS段地址转换公式PhysicalAddress=Segment×10H+Offset偶地址对齐字访问仅需1次总线周期奇地址非对齐字访问需2次总线周期段超越前缀可覆盖默认段寄存器选择Chapter04CPU外部引脚与总线结构解析8086的40条引脚功能、地址/数据复用总线设计以及最小/最大两种工作模式的系统配置PINCONFIGURATION8086引脚概览与总线复用8086采用40引脚DIP封装,通过地址/数据引脚分时复用技术(AD0~AD15、A16/S3~A19/S6),在有限的引脚数量内实现了20位地址总线和16位数据总线的功能。这种复用设计是早期微处理器在封装限制下的经典工程解决方案。01AD0~AD15地址/数据复用引脚T1状态输出地址低16位(通过ALE锁存),T2~T4状态传送16位数据。这是8086最核心的复用设计,有效节省了16个物理引脚。AD0–AD1502A16/S3~A19/S6地址/状态复用引脚T1状态输出地址高4位,后续状态输出总线周期状态信息S3~S6。S3、S4指示当前访问的段寄存器,S5反映中断标志位。A16–A1903A0与BHE奇偶存储体选择A0=0选偶地址体(低8位数据),BHE=0选奇地址体(高8位数据),两者可同时有效实现16位字访问,分时有效实现字节访问。A0+BHE04控制总线关键信号RD(读控制)、WR(写控制)、M/IO(存储器/IO选择)、ALE(地址锁存允许)、DEN(数据允许)、DT/R(数据收发方向)等。RD·WR·ALEBUSCYCLETIMING8086总线周期的四个T状态8086的基本总线周期由T1~T4四个时钟状态组成,各状态分工明确:T1送地址、T2准备传送、T3数据稳定、T4完成传送。当外设速度不匹配时,通过READY信号插入TW等待状态,体现了CPU与外设之间的速度协调机制。01T1状态:CPU输出20位地址信息和ALE(地址锁存允许)信号,外部锁存器在ALE下降沿锁存地址02T2状态:CPU撤消地址信息,数据总线进入高阻态准备传送;同时输出RD或WR等控制信号03T3状态:数据总线上的数据已稳定,CPU在T3的下降沿采样READY信号判断外设是否就绪04T4状态:总线周期结束,完成数据读写操作;若READY=0则在T3后插入TW等待状态直至外设就绪总线周期各T状态关键操作T1输出地址,T2起准备数据传送,T3~T4完成数据操作MICROPROCESSORBUSARCHITECTURE8086最小模式(MN/MX=1)最小模式适用于单CPU系统,8086直接产生全部总线控制信号,系统结构简单、硬件开销小。核心控制信号RD/WR:分别指示当前总线周期为读操作或写操作,低电平有效M/IO:高电平访问存储器,低电平访问I/O端口,与RD/WR组合形成4种基本总线操作ALE:地址锁存允许,T1状态输出正脉冲,下降沿触发外部锁存器锁存地址信息系统构成地址锁存器(8282×3片):锁存T1状态输出的20位地址和BHE信号,供整个总线周期使用数据总线收发器(8286×2片):增强数据总线驱动能力,DEN控制使能、DT/R控制传送方向时钟发生器(8284):为8086提供稳定的时钟信号和复位信号,保证系统同步运行MICROPROCESSOR·BUSARCHITECTURE8086最大模式(MN/MX=0)最大模式通过外部总线控制器8288产生控制信号,支持多处理器协同工作。8086仅输出S0/S1/S2三条状态线指示当前总线周期类型,8288据此译码产生完整的读写和控制信号。最大模式状态输出S2·S1·S0三条状态线组合表示8种总线周期类型,如001=IO读、101=存储器读。状态线在每个总线周期的T2状态开始输出,8288据此译码产生控制信号。S2·S1·S08288总线控制器接收S0~S2状态信号,输出MRDC、MWTC、IORC、IOWC等读写控制命令。还输出DEN、DT/R、ALE等总线管理信号,替代最小模式下8086的直接输出。MRDC·MWTC多处理器总线仲裁RQ0/GT0和RQ1/GT1两对引脚支持外部总线主控设备的总线请求。采用菊花链优先级机制,RQ0优先级高于RQ1,通过单线双向分时传送。RQ·GT仲裁8086InterruptSystem8086中断引脚与中断机制8086通过INTR和NMI两条中断引脚接收外部中断请求,支持256种中断类型。可屏蔽中断INTR受IF标志控制,不可屏蔽中断NMI始终响应。中断向量表存放在内存0段最低1KB空间,每个中断类型对应4字节的入口地址(CS:IP)。01INTR(可屏蔽中断):高电平有效,CPU在指令执行结束后检测INTR,仅当IF=1时在下一个总线周期响应02NMI(不可屏蔽中断):上升沿触发,不受IF标志控制,CPU在当前指令结束后立即响应,常用于电源故障等紧急事件03INTA(中断响应):CPU响应INTR后连续输出两个INTA脉冲,外设在中断响应期间将中断类型号送上数据总线04中断向量表:位于物理地址00000H~003FFH,共256个表项,每项4字节(IP低字+CS高字),NMI固定为类型2Intel8259A可编程中断控制器芯片CHAPTER05工作模式与系统配置了解8086典型系统的硬件构成、关键配套芯片以及x86架构从实模式到保护模式的技术演进MICROPROCESSORSYSTEM8086最小模式系统硬件构成8086最小模式系统以CPU为核心,通过地址锁存器(8282)、数据收发器(8286)和时钟发生器(8284)构建基本的总线系统,再配合存储器芯片和I/O接口芯片构成完整的微型计算机。系统结构简洁,适合单处理器应用场景。总线接口芯片8282地址锁存器(×3片):在ALE信号控制下锁存T1状态的20位地址(A0~A19)和BHE信号A0~A19+BHE8286数据总线收发器(×2片):双向数据缓冲,DEN控制使能、DT/R控制方向,增强总线驱动能力DEN+DT/R8284时钟发生器:提供CLK系统时钟、RESET复位信号和READY同步信号,是系统时序的基准源CLK/RESET/READY存储器与I/O接口ROM存放BIOS固件和系统引导程序,通常映射在高地址区域(如FE000H~FFFFFH),断电不丢失FE000H~FFFFFHRAM存放用户程序和数据,包括堆栈空间,容量根据应用需求配置,映射在低地址区域低地址区域I/O接口芯片(8255/8253/8259等)通过I/O端口地址与CPU通信,独立编址与存储器地址空间分离8255/8253/8259Architecture·8086最小模式与最大模式对比最小模式和最大模式的核心差异在于控制信号的产生方式:最小模式由8086直接输出控制信号,最大模式通过8288总线控制器译码产生。两种模式各有适用场景,选择依据是系统是否需要多处理器协同工作。8086最小模式与最大模式对比对比维度最小模式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论