《汇编语言ch028086计算机组织.ppt》由会员分享,可在线阅读,更多相关《汇编语言ch028086计算机组织.ppt(64页珍藏版)》请在三一办公上搜索。
1、第2章 8086计算机组织,2.1 80 x86微处理器 2.2 基于微处理器的计算机系统构成 2.3 中央处理机 2.4 存储器,课前思考,微计算机系统一般包括哪两部分?8086微处理器主要由哪几部分组成?它们的功能是什么?一个字节和一个字分别由几个二进制位组成?在Intel系列微型机中是如何编址的?一个字节和一个字在存储器中是如何存储的?字单元的地址是偶数或是奇数时,访问存储器有什么不同?8086微型机可以访问的最大存储空间是多少?应用几位地址来表示?,在8086微机中,如何提供20位的地址?如何形成物理地址?8086微机中,存储器空间可分为几种逻辑段?每段的可寻址空间是多大?段地址存放在
2、哪些寄存器中?CPU中有哪几类寄存器,它们各自的专门用途是什么?条件码标志和控制标志各包含几位?它们每位所表示的意义是什么?什么是DOS和BIOS功能调用?,学习目标,了解计算机系统的主要组成部分;掌握存储器地址分段的方法以及存储单元物理地址的形成方法;熟悉8086各类寄存器的用途;熟悉标志寄存器各标志位的意义。,学习指南,本章内容是汇编语言程序设计所需要了解的硬件知识,已熟悉计算机基本原理的学员可直接学习后面的章节。,重点与难点,存储器分段;存储器单元物理地址的形成;各寄存器的用途。,本章知识点,基于8086的微计算机系统8086寄存器通用寄存器专用寄存器段寄存器8086微处理器的存储器管理
3、存储单元的地址和内容存储器分段管理外部设备I/O端口DOS和BIOS功能调用,2.1 80 x86微处理器,80386,80486,奔腾,奔腾II,奔腾4,80286,8086,奔腾III,IA-64(安腾),4004,不是我不明白,这世界变化太快。扎扎实实掌握知识,以不变应万变!,IA-32,8086,16位结构的微处理器:数据总线为16位主存容量1MB:地址总线为20位时钟频率5MHz(IBM PC使用4.77MHz)准16位微处理器8088:外部数据总线为8位IBM PC和PC/XT机使用Intel 8088 CPU8086的16位指令系统:Intel 80 x86基本指令集80186/
4、80188的核心是8086/8088,配以支持电路80186/80188指令系统比8086指令系统新增了若干条实用的指令,涉及堆栈操作、移位指令、输入输出指令、过程指令和边界检测及乘法指令,80286,16位数据总线,24位地址总线(16MB主存)实方式(Real Mode),与8086工作方式一样保护方式(Protected Mode)存储管理、保护机制和多任务管理的硬件支持IBM PC/AT机使用Intel 80286 CPU80286指令系统新增15条保护方式指令,16位Intel 80 x86 CPU:8086/80186/8028632位Intel 80 x86 CPU(IA-32微
5、处理器):80386,80486,Pentium系列英特尔32位结构:IA-32(Intel Architecture-32),80386,32位结构数据总线32位,地址总线32位,寻址4GB主存虚拟8086方式(Virtual 8086 Mode)保护方式下的8086工作方式系统管理方式(System Management Mode)低功耗节能状态80386指令系统全面升级为32位兼容原来16位指令系统新增有关位操作、条件设置指令以及对控制、调试和测试寄存器的传送指令等,80486,8048680386803878KB Cache浮点处理单元FPU8086/8088:808780286:80
6、28780386:80387高速缓冲存储器Cache复杂指令集计算机CISC融合精简指令集计算机RISC的技术特点80486指令系统新增用于多处理器和内部Cache操作的6条指令,Pentium,俗称的80586微处理器,奔腾微处理器32位结构,连接主存的数据总线是64位超标量(Superscalar)技术Pentium指令系统新增一条8字节比较交换指令一条处理器识别指令4条系统专用指令,Pentium Pro,原称P6,中文名称为“高能奔腾”两个芯片组成扩展的超标量技术动态执行技术Pentium Pro新增3条指令,Pentium II,多媒体扩展指令(MMX指令)MMX(MutliMedi
7、a eXtension)整数运算多媒体指令优化图像、音频、视频和通信方面的程序进行提升微机对多媒体的处理能力Pentium MMX(多能奔腾):MMX指令应用于Pentium处理器Pentium II:MMX指令应用于Pentium Pro,Pentium III,数据流SIMD扩展指令(SSE指令)SSE(Streaming SIMD Extensions)浮点单精度多媒体运算指令提高浮点3D数据的处理能力。SSE指令类似于AMD公司发布的3D Now!指令Pentium III:SSE指令应用于Pentium II 单指令多数据SIMDSingle Instruction Multiple
8、 Data表示一条指令具有同时处理多组数据的能力,Pentium 4,NetBurst的微结构(Microarchitecture)进一步发掘指令之间可以同时执行的能力超线程HT(Hyper Threading)发掘程序中的并行性一个物理处理器形成两个逻辑处理器SSE2指令增强浮点双精度多媒体运算能力SSE3指令增强和完善MMX,SSE和SSE2指令,Celeron和Xeon,Celeron(赛扬)微处理器面向低端(低价位)PC机Xeon(至强)微处理器面向高端服务器、工作站AMD微处理器AMD公司生产的IA-32微处理器兼容芯片Intel公司最主要的竞争对手,双核微处理器单芯片多处理器SMP
9、技术Intel的Pentium D:单芯片双Pentium 4核心64位微处理器AMD的K8核心:兼容IA-32的64位微处理器Intel的EM64T(扩展64位技术):IA-32的64位扩展,2.2 基于微处理器的计算机系统构成,硬件(Hardware)中央处理机(CPU)存储器(memory)输入输出(I/O)软件(Software)系统软件应用软件,计算机结构,系统总线,数据总线DB传送信息地址总线AB指出信息的来源和目的地控制总线CB规定总线的动作,如方向等,汇编语言程序员看到的硬件,中央处理单元 CPU(Intel 80 x86)对汇编语言程序员,最关心其中的寄存器存储器(主存储器)
10、呈现给汇编语言程序员的,是存储器地址外部设备(接口电路)汇编语言程序员看到的是端口(I/O地址),2.3 中央处理机,2.3.1 中央处理机CPU的组成2.3.2 80 x86寄存器组,2.3.1 中央处理机CPU的组成,算术逻辑部件(arithmetic logic unit,ALU)用来进行算术和逻辑运算控制逻辑部件负责对全机的控制工作工作寄存器存放计算过程中的操作数、操作数地址及运算的中间结果存取速度比存储器要快的多,2.3.2 80 x86寄存器组,通用寄存器,专用寄存器,段寄存器,1、通用寄存器,AX(accumulator)累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息
11、等。BX(base)基址寄存器,常存放存储器地址。CX(count)计数器,循环和串操作等指令中的隐含计数器。DX(data)数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。,SP(stack pointer)堆栈指针寄存器,指示堆栈段顶的偏移地址。BP(base pointer)基址指针寄存器,表示数据在堆栈段中的基地址。SI(source index)源变址寄存器DI(destination index)目的变址寄存器,2、专用寄存器,IP(instruction pointer)指令指针寄存器。存放代码段中的偏移地址。它与代码段寄存器CS联用,确定下一条指令的物理地址,计
12、算机通过CS:IP寄存器来控制指令序列的执行流程。FLAGS标志寄存器,又称程序状态字寄存器PSW。存放条件码标志、控制标志和系统标志。,标志位的符号表示,进位标志CF(Carry Flag),当运算结果的最高有效位有进位(加法)或借位(减法)时,CF=1;否则CF=0。如:3AH+7CHB6H,没有进位:CF=0AAH+7CH(1)26H,有进位:CF=1,零标志ZF(Zero Flag),若运算结果为0,则ZF=1;否则ZF=0如:3AH+7CHB6H,结果不是零:ZF=084H+7CH(1)00H,结果是零:ZF=1,注意:ZF为1表示的结果是0!,符号标志SF(Sign Flag),运
13、算结果最高位为1,则SF=1;否则SF=0有符号数据用最高有效位表示数据的符号。所以,最高有效位就是符号标志的状态。如:3AH+7CHB6H,最高位D71:SF=184H+7CH(1)00H,最高位D70:SF=0,奇偶标志PF(Parity Flag),当运算结果最低字节中“1”的个数为零或偶数时,PF=1;否则PF=0如:3AH+7CHB6H10110110B结果中有5个1,是奇数:PF=0,PF标志仅反映最低8位中“1”的个数是偶或奇,即使是进行16位字操作!,溢出标志OF(Overflow Flag),算术运算的结果有溢出,则OF1;否则OF0。如:3AH+7CHB6H,产生溢出:OF
14、=1AAH+7CH(1)26H,没有溢出:OF=0,问题什么是溢出?溢出和进位有什么区别?处理器怎么处理,程序员如何运用?如何判断是否溢出?,什么是溢出,处理器内部以补码表示有符号数8位表达的整数范围是:12712816位表达的范围是:32767 32768如果运算结果超出这个范围,就产生了溢出有溢出,说明有符号数的运算结果不正确,3AH7CHB6H,就是58124182,已经超出128127范围,产生溢出,故OF1;另一方面,补码B6H表达真值是-74,显然运算结果也不正确,溢出和进位,溢出标志OF和进位标志CF是两个意义不同的标志进位标志表示无符号数运算结果是否超出范围,超出范围后加上进位
15、或借位运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,超出范围后运算结果不正确。,溢出和进位的对比,例1:3AH+7CHB6H无符号数运算:58124182范围内,无进位有符号数运算:58124182范围外,有溢出例2:AAH+7CH(1)26H无符号数运算:170124294范围外,有进位有符号数运算:8612438范围内,无溢出,如何运用溢出和进位,处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志CF;同时,根据是否超出有符号数的范围设置溢出标志OF应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有
16、符号数,则要注意是否溢出,溢出的判断,判断运算结果是否溢出的简单规则:只有当两个相同符号数相加(包括不同符号数相减),而运算结果的符号与原数据符号相反时,产生溢出;因为,此时的运算结果显然不正确其他情况下,则不会产生溢出,辅助进位标志AF(Auxiliary Carry Flag),运算时D3位(低半字节)有进位或借位时,AF=1;否则AF=0。如:3AH+7CHB6H,D3有进位:AF=1这个标志主要由处理器内部使用,用于十进制算术运算调整指令中,用户一般不必关心!,方向标志DF(Direction Flag),用于串操作指令,控制地址的变化方向:设置DF0,存储器地址自动增加;设置DF1,
17、存储器地址自动减少。CLD指令复位方向标志:DF0STD指令置位方向标志:DF1,中断允许标志IF(Interrupt-enable Flag),用于控制外部可屏蔽中断是否可以被处理器响应:设置IF1,则允许中断;设置IF0,则禁止中断。CLI指令复位中断标志:IF0STI指令置位中断标志:IF1,陷阱标志TF(Trap Flag),用于控制处理器进入单步操作方式:设置TF0,处理器正常工作;设置TF1,处理器单步执行指令。单步执行指令处理器在每条指令执行结束时,便产生一个编号为1的内部中断,这种内部中断称为单步中断所以TF也称为单步标志利用单步中断可对程序进行逐条指令的调试这种逐条指令调试程
18、序的方法就是单步调试,3、段寄存器,CS(code segment)代码段,存放当前正运行的程序。DS(data segment)数据段,存放当前正运行程序所用的数据。SS(stack segment)堆栈段,定义了椎栈的所在区域。ES(extra segment)附加段,附加的一个辅助的数据区。,2.4 存储器,2.4.1 存储单元的地址和内容2.4.2 实模式存储器寻址,2.4.1 存储单元的地址和内容,计算机中信息的单位二进制位bit:存储一位二进制数:0或1字节Byte:8个二进制位,D7D0字Word:16位,2个字节,D15D0双字DWord:32位,4个字节,D31D0最低有效位
19、LSB:数据的最低位,D0位最高有效位MSB:数据的最高位,对应字节、字、双字分别指D7、D15、D31位,数据的存储格式,低地址,存储单元及其存储内容,主存储器需要利用地址区别每个存储单元都有一个编号;被称为存储器地址每个存储单元存放一个字节(8bit)的内容如:0002H单元存放有一个数据34H表达为:(0002H)34H,多字节数据存放方式,多字节数据在存储器中占连续的多个存储单元。存放:低字节存入低地址,高字节存入高地址表达:用低地址表示多字节数据占据的地址空间例如:2号“字”单元的内容为:(0002H)=1234H2号“双字”单元的内容为:(0002H)=78561234H,80 x
20、86处理器采用“低对低、高对高”:小端方式Little Endian,数据的地址对齐,同一个存储器地址可以是字节单元地址、字单元地址、双字单元地址等等字单元安排在偶地址(xxx0B)、双字单元安排在模4地址(xx00B)等,被称为“地址对齐(Align)”对于不对齐地址的数据,处理器访问时,需要额外的访问存储器时间应该将数据的地址对齐,以取得较高的存取速度,2.4.2 实模式存储器寻址,1、存储器的分段管理8086 CPU有20条地址线最大可寻址空间为2201MB物理地址范围从00000HFFFFFH8086CPU将1MB空间分成许多逻辑段(Segment)每个段最大限制为64KB段地址的低4
21、位为0000B这样,一个存储单元除具有一个唯一的物理地址外,还具有多个逻辑地址,物理地址和逻辑地址,每个物理存储单元有一个唯一的20位编号,即物理地址:00000HFFFFFH分段后用户编程时,采用逻辑地址:段基地址:段内偏移地址,分隔符,逻辑地址,段地址说明逻辑段在主存中的起始位置8086规定段地址必须是模16地址:xxxx0H省略低4位0000B,段地址就可以用16位数据表示,就能用16位段寄存器表达段地址偏移地址说明主存单元距离段起始位置的偏移量每段不超过64KB,偏移地址也可用16位数据表示,物理地址和逻辑地址的转换,将逻辑地址中的段地址左移4位,加上偏移地址就得到20位物理地址一个物
22、理地址可以有多个逻辑地址,逻辑地址1460:100、1380:F00物理地址14700H、14700H,课堂练习,段地址:偏移地址为4018H:0009H,则物理地址?段地址:偏移地址为3125H:05C3H,则物理地址?,2、段寄存器,一般情况下,各段存储器的分配是由操作系统负责的,每段可独立占64KB,各段也可以重叠。,存储器,80 x86的段寄存器和相应存放偏移地址的寄存器之间的默认组合,本章小结,1、计算机系统计算机系统包括硬件和软件两部分。硬件结构包括80X86微处理器、存储器和I/O子系统,这三个主要部分由系统总线连接在一起。软件分为系统软件和应用软件。操作系统是系统软件的核心,主
23、要对系统的硬、软件资源进行管理,其中汇编程序是将汇编语言程序翻译成机器语言程序的一种系统程序。,2、存储器存储器以字节为单位存储信息,一个字节单元对应一个地址编码,地址码用无符号整数来表示。8086微型机既能处理8位数据(字节),也能处理16位数据(字),字数据存储在连续的两个字节单元中。存储空间在逻辑上分为代码段、数据段、附加段和堆栈段,每个段可寻址64KB,段的起始地址分别由段寄存器CS、DS、ES、SS给出,段内地址称为偏移地址。,存储器单元的物理地址(20位)的计算:物理地址=段地址24+偏移地址。存储器的分段是很灵活的,各段之间可以相互独立,也可以互相重叠。,3、8086寄存器组通用数据寄存器(AX、BX、CX、DX、AH、AL、BH、BL、CH、CL、DH、DL)指针及变址寄存器(SP、BP、SI、DI)段寄存器(CS、DS、ES、SS)专用寄存器(IP、FLAGS),作业,教材Page33T2.4、2.7、2.9,