《80x86汇编语言程序设计 第2版 教学课件 ppt 作者 王成耀 第2章》由会员分享,可在线阅读,更多相关《80x86汇编语言程序设计 第2版 教学课件 ppt 作者 王成耀 第2章(23页珍藏版)》请在金锄头文库上搜索。
1、本章要点,了解80x86计算机系统的基本结构:CPU、内存、I/O与系统总线 了解80x86 CPU的3种工作模式 掌握80x86 CPU的寄存器组 掌握实模式下的内存分段与编程要点 熟练掌握4个常用标志位(CF、OF、SF和)的含义及判断方法,第2章 80x86计算机系统组织,第2章 80x86计算机系统组织,2.1 80x86计算机的基本结构 2.2 80x86 CPU的寄存器组 2.3 80x86 CPU的工作模式 2.4 标志位 2.5 本章小结,2.1 80x86计算机的基本结构,80x86计算机的组成: CPU 内存 I/O子系统 各部分以系统总线相连,2.1 80x86计算机的基
2、本结构,计算机执行程序时,首先要将其装入内存,然后由CPU执行程序指令。 CPU的作用: 执行算术与逻辑运算。 控制指令的执行。 通常,将Intel公司生产的8086/8088、80286、80386、80486、Pentium、Pentium Pro、Pentium II、Pentium III、Pentium 4 及其兼容的CPU,统称为80x86 CPU或x86 CPU,将基于这些CPU的计算机,称为80x86计算机或x86计算机。,1.CPU,2.1 80x86计算机的基本结构,(1)数据总线 数据总线是用来传递数据的,定义了CPU在每个内存周期所能存取数据的位数。 80x86系列CP
3、U的数据总线为8位、16位、32位或64位。这就是“为什么通常的数据存取是以8位、16位、32位或64位进行的”。 数据总线越宽,处理能力越强。 具有N位数据总线并不意味着CPU只能处理N位数据。,2.系统总线,2.1 80x86计算机的基本结构,(2)地址总线 地址总线用来指出数据的地址(内存或I/O)。 地址总线的位数决定了最大可编址的内存与I/O空间。 对于N位地址总线,CPU可以提供2N个不同地址:02N -1。 地址总线由内存与I/O子系统共享使用(I/O只用低16位)。,2.系统总线,2.1 80x86计算机的基本结构,(3)控制总线 控制CPU与内存和I/O设备之间的数据传送方式
4、 (如传送方向)。,2.系统总线,2.1 80x86计算机的基本结构,内存是存放指令和数据的部件,由若干内存单元构成。 80x86的内存以字节编址:每个内存单元有惟一的地址,可存放1个字节。 要正确理解内存单元的2个要素:地址(编号)与值(内容)。 1个字占据2个相邻的内存单元;低字节在低地址单元,高字节在高地址单元;字的地址由其低地址来表示。双字也类似。 同一地址可以看作是字节、字或双字单元的地址,取决于具体的使用方式。,3.内存,2.1 80x86计算机的基本结构,每个I/O设备必须通过专门的I/O接口电路与主机(CPU和内存)相连。 I/O端口:即I/O地址,是区分I/O设备及其寄存器的
5、编号。 80x86 的I/O端口为16位。 I/O端口类似于内存单元,只是对应于I/O设备。 大多数设备使用多个I/O端口(数据端口、状态端口等)。 CPU是通过端口与I/O设备通信的。,4.I/O子系统,2.2 80x86 CPU的寄存器组,8位通用寄存器8个:AL、AH、BL、BH、CL、CH、DL、DH。 16位通用寄存器8个:AX、BX、CX、DX、SI、DI、BP、SP。 32位通用寄存器8个:EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。 AL与AH、BL与BH、CL与CH、DL与DH分别对应于AX、BX、CX和DX的低8位与高8位。AX、BX、CX、DX、SI、
6、DI、BP和SP分别对应于EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP的低16位。,1.通用寄存器,2.2 80x86 CPU的寄存器组,指令指针:EIP(32位)、IP(16位)。IP是EIP的低16位。 标志寄存器:EFLAGS(32位)、FLAGS(16位)。FLAGS是EFLAGS的低16位。,2.专用寄存器,2.2 80x86 CPU的寄存器组,3.段寄存器,6个16位的段寄存器: CS、DS、ES、SS、FS和GS FS、GS以及所有32位寄存器是从80386 CPU开始引入的。,2.3 80x86 CPU的工作模式,(1)实模式 与8086兼容的工作模式,只有低
7、20位地址线起作用,仅能寻址第一个1MB的内存空间。MS DOS运行在实模式下。 (2)保护模式 32位80x86 CPU的主要工作模式,提供对程序和数据进行安全检查的保护机制。Windows 9x/NT/2000运行在该模式下。 (3)虚拟8086模式 在Windows 9x下,若打开一个MS DOS窗口,运行一个DOS应用程序,那么该程序就运行在虚拟8086模式下。,1.3种工作模式,2.3 80x86 CPU的工作模式,(1)内存分段 采用分段内存管理机制,主要包括下列几种类型的段: 代码段:用来存放程序的指令序列。 数据段:用来存放程序的数据。 堆栈段:作为堆栈使用的内存区域,用来存放
8、过程返回地址、过程参数等。 一个程序可以有多个代码段、多个数据段甚至多个堆栈段。,2.实模式,2.3 80x86 CPU的工作模式,(2)逻辑地址与物理地址 物理地址:内存单元的实际地址,也就是出现在地址总线上的地址。 逻辑地址:或称分段地址,记作 段地址: 段内偏移地址 段地址表示段在内存中的起始位置,通常被保存在段寄存器中。段内偏移地址表示内存单元相对于段起始位置的位移,简称偏移地址,也叫有效地址EA。 段地址与偏移地址都是16位。 系统采用下列方法将逻辑地址自动转换为20位的物理地址: 物理地址 = 段地址 16 + 偏移地址 每个内存单元具有惟一的物理地址,但可由不同的逻辑地址描述。,
9、2.实模式,2.3 80x86 CPU的工作模式,(3)实模式的编程要点 采用16位段,段地址与偏移地址均为16位,即使32位80x86 CPU(80386及更高)也只能寻址1MB的内存空间。 CPU总是从地址CS:IP处取指令,EIP的高16位为0。 SS:SP指向堆栈段的栈顶地址,ESP的高16位为0。 在32位80x86 CPU下,程序可以使用32位寄存器和32位操作数,但采用32位寄存器表示偏移地址时,只使用低16位,高16位为0。,2.实模式,2.4 标志位,状态标志通常由CPU根据指令执行结果自动设置,以反映指令执行结果的特征。 80x86 CPU将状态标志作为条件判断的依据,以控
10、制程序的执行流程。 最常用的状态标志是CF、OF、SF和,应熟练掌握。,1.状态标志,2.4 标志位,(1)状态标志取值的一般规则 (Zero Flag):零标志。若运算结果为0,则 = 1,否则 = 0。 SF(Sign Flag):符号标志。若运算结果为负数,则SF = 1,否则SF = 0。 CF(Carry Flag):进位标志。若加法时结果最高位向前有进位或减法时最高位向前有借位,则CF = 1,否则CF = 0。 OF(Overflow Flag):溢出标志。若带符号数的运算结果超出了补码表示的范围,则OF = 1,否则OF = 0。 AF(Auxiliary Carry Flag
11、):辅助进位标志。若加法时结果低4位向前有进位或减法时结果低4位向前有借位,则AF = 1,否则AF = 0。 PF(Parity Flag):奇偶标志。若结果最低字节中1的个数为偶数,则PF = 1,否则PF = 0。,1.状态标志,2.4 标志位,(2)深入认识CF和OF CF和OF本质上均表示溢出。 CF表示无符号溢出,即运算结果超出了无符号数的表示范围。对于n位二进制数来说,无符号数表示范围为02n -1,例如,n = 8和16时分别为0255和065535。 OF表示带符号溢出,即运算结果超出了带符号数的表示范围。对于n位二进制数来说,带符号数表示范围为-2n-12n-1-1,例如,
12、n = 8和16时,分别为-128127和-3276832767。,1.状态标志,2.4 标志位,控制标志是由程序根据需要用指令来设置的,以控制某些指令的执行方式。 控制标志包括: DF(Direction Flag):方向标志 IF(Interrupt Flag):中断标志 TF(Trace Flag):跟踪标志,2.控制标志,2.5 本章小结,80x86计算机由CPU、内存和I/O子系统三部分组成,各部分之间由系统总线相连。 数据总线决定了CPU每次存取数据的最大宽度(位数);地址总线决定了最大可编址空间;控制总线控制CPU与内存和I/O设备之间的数据传送方式。 80x86系统的I/O地址
13、为16位,可寻址65536个不同的I/O端口。 80x86程序可以存取的最小数据单位是字节。例如,若要读取的位数不足8位,则只能先读出一个完整字节,再屏蔽掉其它位。 字的存储采取“低字节在低地址,高字节在高地址,字的地址由低地址表示”的小端方式,双字也类似。 要正确理解内存单元的地址和值,地址表示位置,值是相应位置处的内容。同一地址既可以看作字节单元地址,也可以看作字甚至双字单元地址,取决于具体的使用方式。,2.5 本章小结,80x86 CPU具有8位、16位和32位寄存器,主要包括: 8位通用寄存器8个:AH、AL、BH、BL、CH、CL、DH、DL。 16位通用寄存器8个:AX、BX、CX
14、、DX、SI、DI、BP、SP。 32位通用寄存器8个:EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。 16位段寄存器6个:CS、DS、SS、ES、FS、GS。 32位/16位指令指针1个:EIP/IP。 32位/16位标志寄存器1个:EFLAGS/FLAGS。 其中,32位寄存器是80386 CPU开始引入的。,2.5 本章小结,80x86 CPU有3种工作模式:实模式、保护模式和虚拟8086模式。 在实模式下,段地址和偏移地址均为16位。20位物理地址由16位段地址左移4位加16位偏移地址得到,只能寻址1MB的内存空间,且每段64KB。 在实模式下,32位CPU下的程序可以使用32位寄存器和32位操作数,但采用32位寄存器表示偏移地址时,只使用低16位,高16位为0。CS:IP总是指向下一条要执行的指令,EIP的高16位为0。SS:SP指向堆栈段的栈顶,ESP的高16位为0。 状态标志是CPU进行条件判断和控制程序执行流程的依据,最常用的是4个:CF、OF、SF和。其中,CF表示无符号溢出,OF表示带符号溢出。,