工作模式程序设计模型实模式存储器寻址_第1页
工作模式程序设计模型实模式存储器寻址_第2页
工作模式程序设计模型实模式存储器寻址_第3页
工作模式程序设计模型实模式存储器寻址_第4页
工作模式程序设计模型实模式存储器寻址_第5页
已阅读5页,还剩215页未读 继续免费阅读

下载本文档

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

文档简介

1、工作模式,程序设计模型实模式存储器寻址第3章教学内容及目标教学内容教学内容: : 工作模式,程序设计模型, 实模式存储器寻址, 段和偏移寄存器之间的隐含关系。堆栈及其实现、I/O口的组织。 教学目标:教学目标:了解工作模式,建立起程序设计模型的基本概念,了解实模式存储器寻址的有关问题的基本概念,以便于为进一步学习汇编语言程序设计打下基础。能够描述软件堆栈的工作原理,建立I/O空间的概念。 工作模式,程序设计模型实模式存储器寻址实践教学实践教学: 用REGISTER窗口观察CPU中各寄存器的 名称与长度,EFLAGS/FLAGS的位意义。教学设计教学设计(1): 首先介绍首先介绍“结构结构”和和

2、3.1节中三种工作模式的概念。节中三种工作模式的概念。 以以3.2节中的图节中的图3.1和图和图3.2为依据,介绍程序设计为依据,介绍程序设计模型概念:模型概念:32位寄存器、位寄存器、16位寄存器和位寄存器和8位寄存器。位寄存器。 以以chap3-1.asm为例,启动为例,启动PWB 进入进入CodeView。点。点Windows Register,打开,打开Reg窗窗口,介绍口,介绍8位寄存器、位寄存器、16位寄存器和位寄存器和32位寄存器及位寄存器及其引用方法。其引用方法。 上机时查看上机时查看EFLAGS/FLAGS的方法:在的方法:在PWB下打下打开帮助内容开帮助内容 Assembl

3、y Language Overview Processor Flag Summary。 工作模式,程序设计模型实模式存储器寻址实践教学实践教学: :用MEMORY 1窗口观察DS段中数据的存放方式。教学设计教学设计(2):(2): 首先介绍实地址模式存储器的大小的概念。首先介绍实地址模式存储器的大小的概念。 以以3.33.3节中的图节中的图3.63.6为依据,介绍字数据和双字数据在为依据,介绍字数据和双字数据在内存中的存放规律。内存中的存放规律。1.1. 以以chap3-2.asmchap3-2.asm为例,启动为例,启动PWB PWB 进入进入CodeViewCodeView。点。点Wind

4、ows Memory 1Windows Memory 1,打开,打开Memory 1Memory 1窗口,验证字窗口,验证字数据和双字数据在内存中的存放规律。数据和双字数据在内存中的存放规律。工作模式,程序设计模型实模式存储器寻址4.4.介绍内存分段管理,逻辑地址、物理地址及其变换介绍内存分段管理,逻辑地址、物理地址及其变换5.5.以以chap3-2.asmchap3-2.asm为例,启动为例,启动PWB PWB 进入进入CodeViewCodeView。点。点Windows Source 1Windows Source 1,打开,打开Source 1Source 1窗口,以窗口,以Assem

5、blyAssembly方式显示,验证逻辑地址变换为物理地址的方式显示,验证逻辑地址变换为物理地址的方法。方法。6.6.介绍介绍3.43.4节中的节中的段和偏移寄存器之间的隐含关系段和偏移寄存器之间的隐含关系的概念的概念和和3.43.4节中的保护模式存储器寻址的概念。节中的保护模式存储器寻址的概念。7.7.课堂练习:练习题课堂练习:练习题23。 工作模式,程序设计模型实模式存储器寻址 1.首先介绍堆栈的两种实现方法和操作方式的概念首先介绍堆栈的两种实现方法和操作方式的概念。 2. 以以3.6.1节中的图节中的图3.13和图和图3.14为依据,介绍硬件为依据,介绍硬件堆栈的工作过程。堆栈的工作过程

6、。 3. 介绍介绍3.6.2节中的软件堆栈的概念。节中的软件堆栈的概念。 4. 以以3.6.2节中的图节中的图3.15、图、图3.16和图和图3.17为依据,为依据,介绍软件堆栈的初始化、压栈操作和出栈操作的工作过介绍软件堆栈的初始化、压栈操作和出栈操作的工作过程。程。教学设计教学设计(3):(3):工作模式,程序设计模型实模式存储器寻址5. 以以chap3-3.asm为例,启动为例,启动PWB 进入进入CodeView。点。点Windows Register,设置为,设置为16位方式。点位方式。点Windows Memory 1,设置为,设置为SS 0。练习。练习16位数据压栈操作和出栈操作

7、的工位数据压栈操作和出栈操作的工作过程。作过程。工作模式,程序设计模型实模式存储器寻址6. 以以chap3-4.asm为例,启动为例,启动PWB 进入进入CodeView。点。点Windows Register,设置为,设置为32位方式。点位方式。点Windows Memory 1,设置为,设置为SS 0。练习。练习32位数据压栈操作和出栈操作的工位数据压栈操作和出栈操作的工作过程。作过程。7. 介绍介绍3.7节中的节中的I/O口组织的概念。口组织的概念。工作模式,程序设计模型实模式存储器寻址第3章 IA-32 Intel 系列CPU的结构 CPU的结构指的是从汇编语言程序员的角度汇编语言程序

8、员的角度所能够感受到的系统属性,所能够感受到的系统属性,诸如寄存器结构、存寄存器结构、存储器访问技术、指令系统、指令系统所支持的数储器访问技术、指令系统、指令系统所支持的数据类型、据类型、I/OI/O技术技术等。工作模式,程序设计模型实模式存储器寻址3.1 工作模式(工作模式(operating mode) IA-32 IntelIA-32 Intel系列系列CPUCPU支持支持3 3种工作模式:种工作模式: 保护模式(protected mode)、 实地址模式(real-address mode)、)、 系统管理模式(system management mode)。 工作模式,程序设计模型

9、实模式存储器寻址 Windows Windows操作系统环境下使用操作系统环境下使用CPUCPU的何种工作模式?的何种工作模式? 使用保护模式保护模式。 在这种模式下,全部的指令与结构特性全部的指令与结构特性都可以使用,处在保护模式下的Windows操作系统所使用的存储器模型是“flatflat”。 工作模式,程序设计模型实模式存储器寻址 在上电(在上电(power-uppower-up)之后,)之后,32 32 位位CPUCPU首先进入首先进入何种工作模式?何种工作模式? 通常,在上电(power-up)或者系统复位(reset)之后,IA-32 Intel系列CPU总是首先进入实地址模式实

10、地址模式,然后再切换到保护模式切换到保护模式。工作模式,程序设计模型实模式存储器寻址 在实地址模式下实地址模式下,CPU仅支持与该模式有关的存储器模型,例如“tiny”、“small”,但“flat” 存储器模型不能用。CPU仅能访问00000HFFFFFH之间的内存区域。工作模式,程序设计模型实模式存储器寻址3.2 程序设计模型(programming model) CPU所具有的程序可见寄存器的组合称之为程所具有的程序可见寄存器的组合称之为程序设计模型。序设计模型。工作模式,程序设计模型实模式存储器寻址1234ABCD4321DCBA图3.1 8086与IA-32 Intel系列CPU的程

11、序设计模型32位寄存器名16位寄存器名CSDSESSSFSGSEAXEBXECXEDXESPEBPEDIEIPEFLAGSAXBXCXDXSPBPDISIIPFLAGSESI工作模式,程序设计模型实模式存储器寻址32位寄存器:位寄存器:通用寄存器通用寄存器: EAX、EBX、ECX、EDX、 ESP、EBP、EDI、ESI,共8个。指令指针寄存器指令指针寄存器:EIP。标志寄存器标志寄存器:EFLAGS。 “E”:Extensive,因此上述寄存器称为扩展寄存器。工作模式,程序设计模型实模式存储器寻址哪些哪些CPUCPU能够寻址扩展寄存器?能够寻址扩展寄存器? 80386以上的CPU。段寄存器

12、:段寄存器:CS、DS、ES、SS、FS、GS, 共6个,每个长度为16位。工作模式,程序设计模型实模式存储器寻址1616位寄存器位寄存器: 通用寄存器通用寄存器:AX、BX、CX、DX、 SP、BP、DI、SI,共8个。指令指针寄存器指令指针寄存器:IP。标志寄存器标志寄存器:FLAGS。工作模式,程序设计模型实模式存储器寻址8 8位寄存器:位寄存器:AH、AL、BH、BL、CH、CL、DH、DL,共8个,如图3.2所示。1234ABCD4321DCBA图3.2 4个16位寄存器允许用作8个8位寄存器BLALDHCHBHAHAXBXCXDXDLCL工作模式,程序设计模型实模式存储器寻址双字(

13、双字(Double WordDouble Word)数据:)数据:32位长,如32 位寄存器的内容。字(字(WordWord)数据:)数据:16位长,如16位寄存器的 内容。字节(字节(ByteByte)数据:)数据:8位长,如8位寄存器的 内容。工作模式,程序设计模型实模式存储器寻址通用寄存器:通用寄存器:如下表所示。 工作模式,程序设计模型实模式存储器寻址寄存器操 作EAX偏移地址AX字乘,字除,字I/OAL字节乘,字节除,字节I/O,换码,10进制算术AH字节乘,字节除BP寻址堆栈区(SS段),指向栈内任意单元EBX寻址数据区(DS段)BX换码ECX在字符串和循环操作中用作计数器CX在字

14、符串和循环操作中用作计数器CL在移位和循环操作中用作计数器EDX乘,除DX字乘,字除,间接I/OESP堆栈指针寻址堆栈区(SS段),指向栈顶SP堆栈指针寻址堆栈区(SS段),指向栈顶ESI指向DS段中数据的指针,指向源字符串的指针SI指向DS段中数据的指针,指向源字符串的指针EDI指向DS段中数据的指针,指向目的字符串的指针DI指向DS段中数据的指针,指向目的字符串的指针表表3.1通用寄存器的隐含引用通用寄存器的隐含引用工作模式,程序设计模型实模式存储器寻址指令指针指令指针EIP/IPEIP/IP(Instruction Instruction PointerPointer)寄存器的用途:)寄

15、存器的用途: 工作于实地址模式下的时候,使用16位IP, 工作于保护模式下的时候,使用32位的EIP。 EIP/IP承担着指令寻址的功能,即 EIP/IPEIP/IP的内容指向将要执行的下一条指令所在的内容指向将要执行的下一条指令所在存储单元的偏移地址存储单元的偏移地址,以便于CPU可以正确地从内存CS段取指令并执行指令。 指令指针由CPU的硬件更新。 工作模式,程序设计模型实模式存储器寻址EIP/IP是控制指令(程序)流向的寄存器,下列5种情况影响着其内容的更新:1.计算机加电之后,CPU中执行复位(reset)功能的硬件会把reset向量打入IP(此时处于实地址模式下)。此后,CPU硬件就

16、会从此单元取出第1条指令执行。这第1条指令往往是一条无条件转移指令JMP,转向系统初始化程序段去执行。2.在顺序执行指令期间,CPU硬件会自动增量EIP/IP的内容,以便使其指向下条指令的偏移地址。工作模式,程序设计模型实模式存储器寻址3. 在转移执行指令期间,转移类指令会更新EIP/IP的内容,使其指向转移目标地址,以便从转移目标处执行。4. 过程调用的时候,指令CALL可以更新EIP/IP的内容,使其指向过程的入口地址,以便执行被调用的过程。过程执行完之后,返回地址(CALL指令的后续指令的地址)打入EIP/IP,以便接着从返回地址处继续执行。5. 当发生中断请求的时候,CPU的中断管理硬

17、件会把中断向量(中断服务程序的入口地址)打入IP,以便执行中断服务程序。中断服务程序执行完之后,断点(返回)地址打入IP,以便接着从断点处继续执行。 工作模式,程序设计模型实模式存储器寻址标志寄存器标志寄存器EFLAGS/FLAGSEFLAGS/FLAGS的功能:的功能: 用来指示CPU的状态,同时也可以控制它的操作。 当CPU工作于保护模式下的时候,使用EFLAGS;当CPU工作于实地址模式下的时候,使用FLAGS。图3.3示出了标志寄存器EFLAGS和FLAGS及其各个二进制位所代表的意义 。工作模式,程序设计模型实模式存储器寻址1234ABCD4321DCBA图3.3 FLAGS寄存器和

18、EFLAGS寄存器01234567891011121314151617181920212231FLAGSEFLAGSCF1PF0AF0ZFSFTFIFDFOFIOPLNT0RFVMACVIFVIPID00工作模式,程序设计模型实模式存储器寻址状态标志:状态标志: CF、PF、AF、ZF、SF、OF共6个, 这些状态标志位指示着CPU执行算术和逻辑指令操作结果的相应属性。 工作模式,程序设计模型实模式存储器寻址各个状态标志的功能如下:CFCF(Carry FlagCarry Flag):进位标志):进位标志。 当执行算术指令操作结果的最高有效位输出了进位或借位时,CF为1。否则,CF为0。 该标

19、志在多字节加法和减法中使用。该标志也可以指示无符号数算术操作的溢出状态。循环指令也可以通过把某个内存或寄存器中的位放入CF而隔离它。工作模式,程序设计模型实模式存储器寻址 PF PF(Parity FlagParity Flag):奇偶校验标志):奇偶校验标志。 如果PF1,说明结果的低低8 8位位中含有偶数个1。否则,PF0。 该标志可以用来检查数据传送错误。该标志在现代程序设计中已很少使用,它是早期Intel CPU在数据通信环境中校验数据的一种手段。今天,奇偶校验常常由数据通信设备完成,不再需要由CPU完成。 工作模式,程序设计模型实模式存储器寻址AFAF(Auxiliary FlagA

20、uxiliary Flag):辅助标志或半进位标志。):辅助标志或半进位标志。 当使用BCD码进行算术操作的时候,如果AL寄存器的位3向高位输出了进位或借位,AF为1。否则,AF为0。 使用BCD码进行算术操作的指令DAA和DAS要测试此标志位。工作模式,程序设计模型实模式存储器寻址 ZFZF(Zero FlagZero Flag):零标志位):零标志位。 当执行算术或逻辑指令操作的结果为0时,ZF为1。否则,ZF为0。 条件转移类指令常常需要测试此标志位的状态,以决定是否改变程序的流向。 工作模式,程序设计模型实模式存储器寻址SFSF(Sign FlagSign Flag):符号标志。):符

21、号标志。 该标志位的状态与操作结果最高有效位的状态相同,即当操作结果最高有效位为1时,SF为1。否则,SF为0。 该标志位可以用来指出带符号整数(用补码表示)运算结果的正/负情况(最高有效位为0时,表示该数为正;最高有效位为1时,表示该数为负)。工作模式,程序设计模型实模式存储器寻址OFOF(Overflow FlagOverflow Flag):溢出标志):溢出标志。 溢出标志在带符号整数进行加或减操作时可能出现。如果OF为1,说明产生了算术溢出。此种情况意味着有效数字已丢失了,因为计算结果的长度已超出了硬件的表示能力。如果结果为正数太大,或者结果为负数太小时,均会发生溢出。在这种情况下,可

22、利用INTO指令产生一个内部中断来处理。工作模式,程序设计模型实模式存储器寻址字符串操作控制标志:字符串操作控制标志:1个。DFDF(Direction FlagDirection Flag):方向标志):方向标志。 当DF为1时,字符串操作指令(MOVS、CMPS、SCAS、LODS、STOS)对DI和SI的内容执行自动减量操作,以便于字符串处理从高地址到低地址。当DF为0时,字符串操作指令对DI和SI的内容执行自动增量操作,以便于字符串处理从低地址到高地址。 STD指令可以置“1”DF,CLD指令可以置“0”DF。 工作模式,程序设计模型实模式存储器寻址系统控制标志:TF、IF共2个。TF

23、TF(Trap FlagTrap Flag):陷阱标志):陷阱标志。 陷阱标志能够激活芯片上调试功能,以便对程序进行查错和改错。当TF为1时,会使CPU进入单步方式,以进行调试。当TF为0时,则禁止陷阱特性。 在单步方式下,CPU每执行完一条指令之后,就自动产生一个内中断。此时,中断服务程序会显示出CPU各寄存器的内容,程序员通过查看CPU各寄存器以及相关内存变量的内容,可判断出各条指令的执行结果是否正确,从而达到调试的目的。工作模式,程序设计模型实模式存储器寻址 在MASM6.1x中内嵌的CodeView中就有这样的功能。 没有指令能够对TF进行置1和清0操作。 置1的方法是:首先用PUSH

24、F指令把(FLAGS)推入堆栈,然后把栈上的TF置1,即执行 (SP)OR 0100H 操作,然后用POPF指令再弹回FLAGS。 TF清0由中断服务程序负责,方法与置1类似,只是清0执行 (SP)AND FEFFH 操作。工作模式,程序设计模型实模式存储器寻址IFIF(Interrupt-enable FlagInterrupt-enable Flag):中断开放标志):中断开放标志。 当IF为1时,允许CPU识别并响应可屏蔽的外部中断请求(从CPU的INTR引脚进入)。当IF为0时,禁止这些中断。 IF位的状态不影响非屏蔽外部中断和内中断。指令STI可以对IF进行置1操作,指令CLI可以对

25、IF进行清除操作。 工作模式,程序设计模型实模式存储器寻址段寄存器:段寄存器:段寄存器,段寄存器,1 16位长,共有6个,它们指定了6个当前可寻址的存储器段。8086 CPU可以使用代码段寄存器CSCS(Code Segment)、数据段寄存器DSDS(Data Segment)、堆栈段寄存器SSSS(Stack Segment)、附加段寄存器ESES(Extra Segment)4个段寄存器。80386以上的CPU还可以使用另外2个附加段寄存器 FSFS和和GSGS。工作模式,程序设计模型实模式存储器寻址代码段CS: 代码段是一个存储器区域,这里保存CPU所使用的程序代码。 全部指令都从当前

26、代码段中取出,偏移量由指令指针EIP/IP提供。 工作模式,程序设计模型实模式存储器寻址 实地址模式下,CS定义一个64KB存储器段的起点,即CS的内容指向代码段的起始地址,也称代码段的基地址; 保护模式下,CS的内容是一个指针,称之为选择字选择字(selector)。选择字可以选择一个描述代码段起始地址和长度的描述符描述符(descriptor)。 实地址模式下,代码段限制为64KB长;保护模式下,代码段可以达到4GB长。工作模式,程序设计模型实模式存储器寻址数据段数据段DSDS: 数据段是包含指令使用的大部分数据的存储区域。其段内偏移地址按指令的寻址方式的指定,再经计算后得到。 实地址模式

27、下,数据段限制为64KB长; 保护模式下时,数据段可以达到4GB长。 工作模式,程序设计模型实模式存储器寻址 大部分操作数通常是从当前数据段取出,这取决于偏移地址的来源所涉及到的指针。 对于操作数寻址来说,DS是默认段。如果需要从ES、FS、GS中寻址操作数时,可以在指令前面加上跨段前缀。工作模式,程序设计模型实模式存储器寻址堆栈段SS: 堆栈段寄存器定义堆栈用的存储区。 其段内偏移地址由ESP/SP、EBP/BP提供。 使用ESP/SP只能寻址栈顶数据,使用EBP/BP可以寻址堆栈段内任意位置上的数据。 在过程调用中,常常利用堆栈传递参数。工作模式,程序设计模型实模式存储器寻址附加段ES:

28、附加段是为字符串操作指令存放目的操作数而附加的一个数据段,也可以用来存放一般的操作数。工作模式,程序设计模型实模式存储器寻址 FS和和GS: 这两个段寄存器与DS、ES一样,可以用来确定数据段,以便把数据段的数量扩展到4个。 因此,CPU可以访问4种不同类型的数据结构。FS和GS仅在80386以上的CPU中才能使用。 工作模式,程序设计模型实模式存储器寻址实践教学实践教学: :用MEMORY 1窗口观察DS段中数据的存放方式。教学设计教学设计(2):(2): 首先介绍实地址模式存储器的大小的概念。首先介绍实地址模式存储器的大小的概念。 以以3.33.3节中的图节中的图3.63.6为依据,介绍字

29、数据和双字数据在为依据,介绍字数据和双字数据在内存中的存放规律。内存中的存放规律。1.1. 以以chap3-2.asmchap3-2.asm为例,启动为例,启动PWB PWB 进入进入CodeViewCodeView。点。点Windows Memory 1Windows Memory 1,打开,打开Memory 1Memory 1窗口,验证字窗口,验证字数据和双字数据在内存中的存放规律。数据和双字数据在内存中的存放规律。工作模式,程序设计模型实模式存储器寻址4.4.介绍内存分段管理,逻辑地址、物理地址及其变换介绍内存分段管理,逻辑地址、物理地址及其变换5.5.以以chap3-2.asmchap

30、3-2.asm为例,启动为例,启动PWB PWB 进入进入CodeViewCodeView。点。点Windows Source 1Windows Source 1,打开,打开Source 1Source 1窗口,以窗口,以AssemblyAssembly方式显示,验证逻辑地址变换为物理地址的方式显示,验证逻辑地址变换为物理地址的方法。方法。6.6.介绍介绍3.43.4节中的节中的段和偏移寄存器之间的隐含关系段和偏移寄存器之间的隐含关系的概念的概念和和3.43.4节中的保护模式存储器寻址的概念。节中的保护模式存储器寻址的概念。7.7.课堂练习:练习题课堂练习:练习题23。 工作模式,程序设计模型

31、实模式存储器寻址3.3 实地址模式存储器寻址memory addressing in real address mode 实地址模式存储器寻址操作方式只允许实地址模式存储器寻址操作方式只允许CPUCPU寻址寻址第一个第一个1MB1MB的存储器空间。的存储器空间。 其物理地址范围是:其物理地址范围是:00000HFFFFFH。工作模式,程序设计模型实模式存储器寻址3.3.1 3.3.1 实地址模式存储器组织实地址模式存储器组织(memory organization in real address mode)字数据的高位字节高位字节总是存放在高地址高地址存储器单元中,字数据的低位字节低位字节总是

32、存放在低地址低地址存储器单元中,如图3.6所示。1234ABCD4321DCBA图3.6 字数据5502H存储在内存地址724H中724H725H55H02H工作模式,程序设计模型实模式存储器寻址3.3.2 内存的分段管理技术(segment management technology of memory) 在实地址模式下,段基地址的低在实地址模式下,段基地址的低4 4位全为位全为0 0。 在任意时刻,程序可以访问如下四个段的在任意时刻,程序可以访问如下四个段的 内容:内容: 当前代码段当前代码段CSCS、当前数据段、当前数据段DSDS、 当前堆栈段当前堆栈段SSSS、当前附加段、当前附加段E

33、SES。 每个段都会由操作系统指派一个基地址,每个段都会由操作系统指派一个基地址, 基地址是该段在内存空间的起始单元的地址;基地址是该段在内存空间的起始单元的地址;工作模式,程序设计模型实模式存储器寻址1234ABCD4321DCBA图3.8 物理存储器中段的分布50000H40000H30000H20000H10000H离散完全重迭部分重迭邻接段 E段 B段 A段 C段 D工作模式,程序设计模型实模式存储器寻址3.3.3 逻辑地址与物理地址物理地址(物理地址(physical addressphysical address):):指物理内存所能够接收的地址信息,CPU和存储器单元之间的所有信

34、息交换都必须使用物理地址。逻辑地址(逻辑地址(logical addresslogical address):):所谓逻辑地址是指人们在程序设计时所使用的地址。工作模式,程序设计模型实模式存储器寻址逻辑地址的书写格式:逻辑地址的书写格式:段基地址偏移量偏移量(偏移量(offsetoffset):):是目标单元距离段首址的字节距离。段基地址和偏移量都是无符号的16位(二进制)数,段内第一个单元所对应的偏移量为0H。 逻辑地址变换为物理地址的方法:逻辑地址变换为物理地址的方法: 物理地址=(段基地址)10H 偏移量工作模式,程序设计模型实模式存储器寻址1234ABCD4321DCBA图3.12 逻

35、辑地址变换为物理地址的寻址方法10000H1F000H1FFFFH10000H1000HF000H偏移量段基地址段寄存器20位物理地址1F000H工作模式,程序设计模型实模式存储器寻址 在实地址模式下,由于偏移量的长度为在实地址模式下,由于偏移量的长度为1616位,所以位,所以存储器段长为存储器段长为64KB64KB。因此,一旦知道段的起始地址,。因此,一旦知道段的起始地址,再加上再加上FFFFHFFFFH就可以得到段的结束地址。就可以得到段的结束地址。 表表3.23.2给出了几个段寄存器的内容及由每个段基地给出了几个段寄存器的内容及由每个段基地址选择的存储器段的起始地址和结束地址。址选择的存

36、储器段的起始地址和结束地址。工作模式,程序设计模型实模式存储器寻址段寄存器的内容段起始地址段结束地址2000H20000H2FFFFH2001H20010H3000FH2100H21000H30FFFHAB00HAB000HBAFFFH1234H12340H2233FH表3.2 段寄存器的内容及其所能选择的存储器段的起始地址和结束地址 工作模式,程序设计模型实模式存储器寻址3.4 段和偏移寄存器之间的隐含关系(implied relationship between segments and offset registers) 隐含:隐含:指的是无须在指令中显式地指明使用何 种组合方式,CPU

37、的硬件可以自动地按系 统设定的组合方式实现所要求的功能。工作模式,程序设计模型实模式存储器寻址 代码段寄存器代码段寄存器CSCS总是和指令指针总是和指令指针EIP/IPEIP/IP隐隐含组合,用于寻址程序中的下一条指令含组合,用于寻址程序中的下一条指令。 代码段寄存器CS的内容定义代码段的起点,指令指针EIP/IP指示代码段内下条指令的偏移量。 组合CSEIPCSEIP或CSIPCSIP寻址CPU欲执行的下条指令。 例如,如果CS=1400H,IP=1200H,则CPU从存储器的14000H+1200H单元,即15200H单元取下一条指令。 工作模式,程序设计模型实模式存储器寻址 堆栈指令PU

38、SH/POP总是在当前堆栈段SS进行操作,堆栈指针ESP/SP含有栈顶的偏移量。 因此,当使用PUSH/POP指令访问堆栈的时候,总是使用隐含组合隐含组合SSESPSSESP或或SSSPSSSP。工作模式,程序设计模型实模式存储器寻址另外一类用来访问当前堆栈段SS的隐含组合是隐含组合是 SSSS:EBP EBP 或或 SSSS:BPBP,但此时不能使用PUSH/POP指令,而要使用MOV指令。例,如SS=2000H,BP=3000H,则如下的MOV指令MOV AX,BP可以寻址堆栈段SS中的23000H号存储器单元。工作模式,程序设计模型实模式存储器寻址操作数的有效地址操作数的有效地址EAEA

39、(Effective AddressEffective Address):): 是指存储器操作数对当前数据段的偏移量。跨段前缀的用法:跨段前缀的用法:告知CPU哪个段寄存器可用来 访问后续指令中所引用的变量。例如: MOV ESBX,AX注意,在实地址模式下,只能使用扩展寄存器的最右注意,在实地址模式下,只能使用扩展寄存器的最右1616位寻址存储器段内的某个单元。不能将大于位寻址存储器段内的某个单元。不能将大于FFFFHFFFFH的的数放入到偏移寄存器中。数放入到偏移寄存器中。 工作模式,程序设计模型实模式存储器寻址访问存储器的类型隐含段基址可替代的段基址偏移量取指令CS无IPPUSH/POP

40、堆栈操作SS无SP存储器变量DSCS、ES、SSEA(8/16位数)源字符串DSCS、ES、SSSI目标字符串ES无DIMOV堆栈操作SSCS、DS、ESEA:BP、8/16位数表3.3实地址模式下段寄存器与偏移量之间的组合方式 工作模式,程序设计模型实模式存储器寻址访问存储器的类型隐含段基址可替代的段基址偏移量取指令CS无EIP堆栈操作SS无ESP存储器变量DSCS、ES、SSEA(8/32位数)源字符串DSCS、ES、SSESI目标字符串ES无EDIMOV堆栈操作SSCS、DS、ESEA:EBP、8/32位数一般数据FS无EA一般数据GS无EA表3.4 保护模式下段寄存器与偏移量之间的组合

41、方式 工作模式,程序设计模型实模式存储器寻址3.5 保护模式存储器寻址(memory addressing in protected mode) 对于保护模式存储器寻址操作方式来说,对于保护模式存储器寻址操作方式来说,其物理地址范围是: 00000000HFFFFFFFFH, 其存储容量为4GB。 工作模式,程序设计模型实模式存储器寻址保护模式与实地址模式之间的主要区别有两点:保护模式与实地址模式之间的主要区别有两点: 一是访问段内存储单元所使用的偏移量的长度不同。实地址模式使用16位的段内偏移量,因此最大段长为64KB。保护模式使用32位的段内偏移量,因此最大段长可达4GB。 二是段寄存器的

42、使用不同。保护模式下的段基段基地址地址不再像实地址模式那样由段寄存器段寄存器提供,而是改由段描述符描述符(descriptor)提供。工作模式,程序设计模型实模式存储器寻址作业:23. CPU工作于实地址模式下时,对于下列寄存器组合,试计算出要寻址的操作数所在的存储单元地址。(a)DSDI=210DH000AH(b)DSSI=3D61H0F01H(c)SSSP=4D1BH00BFH(d)SSBP=6359H036BH工作模式,程序设计模型实模式存储器寻址 1.首先介绍堆栈的两种实现方法和操作方式的概念首先介绍堆栈的两种实现方法和操作方式的概念。 2. 以以3.6.1节中的图节中的图3.13和图

43、和图3.14为依据,介绍硬件为依据,介绍硬件堆栈的工作过程。堆栈的工作过程。 3. 介绍介绍3.6.2节中的软件堆栈的概念。节中的软件堆栈的概念。 4. 以以3.6.2节中的图节中的图3.15、图、图3.16和图和图3.17为依据,为依据,介绍软件堆栈的初始化、压栈操作和出栈操作的工作过介绍软件堆栈的初始化、压栈操作和出栈操作的工作过程。程。教学设计教学设计(3):(3):工作模式,程序设计模型实模式存储器寻址5. 以以chap3-3.asm为例,启动为例,启动PWB 进入进入CodeView。点。点Windows Register,设置为,设置为16位方式。点位方式。点Windows Mem

44、ory 1,设置为,设置为SS 0。练习。练习16位数据压栈操作和出栈操作的工位数据压栈操作和出栈操作的工作过程。作过程。工作模式,程序设计模型实模式存储器寻址6. 以以chap3-4.asm为例,启动为例,启动PWB 进入进入CodeView。点。点Windows Register,设置为,设置为32位方式。点位方式。点Windows Memory 1,设置为,设置为SS 0。练习。练习32位数据压栈操作和出栈操作的工位数据压栈操作和出栈操作的工作过程。作过程。7. 介绍介绍3.7节中的节中的I/O口组织的概念。口组织的概念。工作模式,程序设计模型实模式存储器寻址3.6 堆栈及其实现(sta

45、ck and its implementation) 堆栈的实现有两种方法堆栈的实现有两种方法:一种是硬件堆栈, 另一种是软件堆栈。 堆栈最主要的操作方式是堆栈最主要的操作方式是: 按“后进先出LIFO(Last In First Out)”的原则,进行存取操作。工作模式,程序设计模型实模式存储器寻址3.6.1 硬件堆栈(hardware stack) 硬件堆栈的实现是:硬件堆栈的实现是: 利用CPU中一组专门的寄存器寄存器作为堆栈存储区。 工作模式,程序设计模型实模式存储器寻址1234ABCD4321DCBA图3.13 硬件堆栈的入栈操作堆栈累加器111221233887654321栈顶栈底

46、第一次入栈后第二次入栈后第三次入栈后第八次入栈后工作模式,程序设计模型实模式存储器寻址1234ABCD4321DCBA图3.14 硬件堆栈的出栈操作堆栈累加器5673456187654321栈顶栈底第一次出栈后第二次出栈后第三次出栈后第八次出栈后432112工作模式,程序设计模型实模式存储器寻址3.6.2 软件堆栈(software stack) 软件堆栈软件堆栈:位于内存中内存中。 软件堆栈的特点:软件堆栈的特点: 软件堆栈的栈顶地址是浮动栈顶地址是浮动的,即栈顶相对于数据移动,而不采用数据移动的方法。 工作模式,程序设计模型实模式存储器寻址段寄存器段寄存器SS的功能:的功能: 存放堆栈段的

47、基地址。栈指针栈指针SP的功能:的功能: 堆栈指针SP指向栈顶单元,即SP中含有堆栈的栈顶地址偏移量,换句话说,SP中含有栈顶距离堆栈段基地址之间的字节距离。工作模式,程序设计模型实模式存储器寻址IA-32 Intel系列系列CPU中软件堆栈的生成方法:中软件堆栈的生成方法: 按自底向上的方式生成,此时栈底地址大于栈顶地址。堆栈的初始化操作:堆栈的初始化操作: 以图3.15为例。在应用程序装入内存之后,堆栈初始化操作即完成。 此时,(SP)=000AH,(SS)=1D7AH。 堆栈的状态如图3.15所示。 (设置好了10个字节大的堆栈区。此时,堆栈中还没压入内容,此时,栈顶与栈底重合)。工作模

48、式,程序设计模型实模式存储器寻址1234ABCD4321DCBA注:图中逻辑地址、物理地址、存储单元中的内容一律为十六进制图3.15 初始化后的堆栈状态逻辑地址物理(SP)栈顶地址=栈底地址1D7A:000A1D7A:00091D7A:00081D7A:00071D7A:00061D7A:00051D7A:00041D7A:00031D7A:00021D7A:00011D7A:00001D7AA1D7A91D7A81D7A71D7A61D7A51D7A41D7A21D7A31D7A11D7A0堆栈长度10个单元高地址低地址地址堆栈基址(SS)X XX XX XX XX XX XX XX XX

49、XX XX X工作模式,程序设计模型实模式存储器寻址入栈操作:入栈操作: 先把SP的内容减2,然后写一个字数据到新的栈顶。 此处假设有10A0H、20B0H、30C0H、40D0H等4个字数据,使用PUSH指令把它们压入堆栈之后,SP的内容由原来的0AH减小到了02H,堆栈的状态如图3.16所示。 工作模式,程序设计模型实模式存储器寻址1234ABCD4321DCBA注:图中逻辑地址、物理地址、存储单元中的内容一律为十六进制图3.16 压入4个字数据后的堆栈状态逻辑地址物理(SP)栈底地址1D7A:000A1D7A:00091D7A:00081D7A:00071D7A:00061D7A:000

50、51D7A:00041D7A:00031D7A:00021D7A:00011D7A:00001D7AA1D7A91D7A81D7A71D7A61D7A51D7A41D7A21D7A31D7A11D7A04个字数据高地址低地址地址堆栈基址(SS)X X1 0A 02 0B 03 0C 04 0D 0X XX X栈顶地址工作模式,程序设计模型实模式存储器寻址 出栈操作出栈操作: 先把栈顶的字复制到寄存器中,然后再把SP的内容加2。 此处假设使用POP指令,把已在堆栈中的字数据40D0H和30C0H弹出堆栈之后,SP的内容由原来的02H增加到了06H,堆栈的状态如图3.17所示。 工作模式,程序设计

51、模型实模式存储器寻址1234ABCD4321DCBA注:图中逻辑地址、物理地址、存储单元中的内容一律为十六进制图3.17 弹出2个字数据后的堆栈状态逻辑地址物理(SP)栈底地址1D7A:000A1D7A:00091D7A:00081D7A:00071D7A:00061D7A:00051D7A:00041D7A:00031D7A:00021D7A:00011D7A:00001D7AA1D7A91D7A81D7A71D7A61D7A51D7A41D7A21D7A31D7A11D7A02个字数据高地址低地址地址堆栈基址(SS)X X1 0A 02 0B 0X XX XX XX XX XX X栈顶地址

52、工作模式,程序设计模型实模式存储器寻址 软件堆栈的四种应用软件堆栈的四种应用: 一是当需要利用堆栈临时保存某些数据的时候,程序员可以在程序中设置PUSH和POP指令,以实现对堆栈的操作; 二是当调用过程的时候,需要利用堆栈保存返回地址,此操作由调用过程的指令CALL和返回指令RET共同完成; 工作模式,程序设计模型实模式存储器寻址 三是在调用过程以前,用PUSH指令把过程所需要的参数压入堆栈,进入过程后用BP的内容通过寄存器相对寻址取出参数; 四是当有中断请求发生并被CPU响应之后,CPU中的中断管理硬件会自动地把现场信息(即CPU中寄存器的内容)压入堆栈,中断服务完成之后,用IRET指令恢复

53、现场信息。工作模式,程序设计模型实模式存储器寻址3.7 I/O口的组织(I/O port organization) 计算机中对计算机中对I/O端口的编址一般有两种方端口的编址一般有两种方式:式:I/O口与内存单元统一编址;口与内存单元统一编址;I/O口与内存单元编址独立。口与内存单元编址独立。IA-32计算机中采用后者。计算机中采用后者。 工作模式,程序设计模型实模式存储器寻址I/O口与内存单元统一编址口与内存单元统一编址: 把每个I/O口都看作一个内存单元,每个I/O口都有一个唯一的存储地址。 在采用统一编址的计算机系统中,不需要设置专门的I/O指令,使用访问内存的指令也可以访问I/O口。

54、 统一编址的好处是I/O速度相对较快,缺点是I/O口地址要占用内存地址空间。POWER PC采用统一编址的方法。工作模式,程序设计模型实模式存储器寻址 I/O口与内存单元独立编址口与内存单元独立编址: 把存储空间与I/O口空间完全分离,既有存储空间又有I/O空间。 在采用独立编址的计算机系统中,通常都设有专门的I/O指令。这样,访问内存单元时,使用访问内存的指令;访问I/O口时,使用访问I/O口的指令。 IA32 Intel计算机采用独立编址的方法。工作模式,程序设计模型实模式存储器寻址I/O空间可以容纳空间可以容纳 64K的的8位口或位口或32K的的16位口。位口。I/O指令包括IN和OUT

55、指令两类: IN指令数据传送方向:指令数据传送方向: 数据从外围设备传送到CPU。 OUT指令数据传送方向:指令数据传送方向: 数据从CPU传送到外围设备。 工作模式,程序设计模型实模式存储器寻址 IN指令和指令和OUT指令及其寻址方式列于表指令及其寻址方式列于表3.5中。中。表3.5 IN指令和OUT指令及其寻址方式直接寻址(1字节直接地址)DX寄存器间接寻址IN AL,0EAHIN AX,DXOUT 44,AXOUT DX,AL工作模式,程序设计模型实模式存储器寻址 1、以、以chap3-3.asm为例,启动为例,启动PWB 进入进入CodeView。点。点Windows Register

56、,设置为,设置为16位方式。点位方式。点Windows Memory 1,设置为,设置为SS 0。练习。练习16位数据压栈操作和出栈操作的工位数据压栈操作和出栈操作的工作过程。作过程。上机验证:上机验证:工作模式,程序设计模型实模式存储器寻址2. 以以chap3-4.asm为例,启动为例,启动PWB 进入进入CodeView。点。点Windows Register,设置为,设置为32位方式。点位方式。点Windows Memory 1,设置为,设置为SS 0。练习。练习32位数据压栈操作和出栈操作的工位数据压栈操作和出栈操作的工作过程。作过程。工作模式,程序设计模型实模式存储器寻址上机实践:以

57、以chap3-2.asmchap3-2.asm为例,启动为例,启动PWB PWB 进入进入CodeViewCodeView。点。点Windows Memory 1Windows Memory 1,打开,打开Memory 1Memory 1窗口,验证字数据和双字数据在内存窗口,验证字数据和双字数据在内存中的存放规律。中的存放规律。以以chap3-2.asmchap3-2.asm为例,启动为例,启动PWB PWB 进入进入CodeViewCodeView。点。点Windows Source 1Windows Source 1,打开,打开Source 1Source 1窗口,以窗口,以Assembl

58、yAssembly方式显示,验证逻方式显示,验证逻辑地址变换为物理地址的方法。辑地址变换为物理地址的方法。工作模式,程序设计模型实模式存储器寻址本课程特点及学习方法特点:本课程知识点前后交叉,学习前面的内:本课程知识点前后交叉,学习前面的内容时,有时要涉及到后面未学习到的知识,可容时,有时要涉及到后面未学习到的知识,可先作基本了解,到学习了后面的知识后就会更先作基本了解,到学习了后面的知识后就会更加深入地理解了。加深入地理解了。方法:理解与记忆硬件理论,用汇编语言观察方法:理解与记忆硬件理论,用汇编语言观察硬件动作行为以帮助理解硬件理论。硬件动作行为以帮助理解硬件理论。 工作模式,程序设计模型

59、实模式存储器寻址课程内容(约两次课完成)3.1.2 汇编语言源程序的结构(P36)3.1.3 伪指令(P39)作业:P68: 1-24题。(除操作题要会操作外,其它题写到作业本上)工作模式,程序设计模型实模式存储器寻址汇编语言源程序的结构汇编语言源程序的结构1、 三种指令:三种指令:可执行指令(符号指令);可执行指令(符号指令);伪指令;伪指令;宏指令。宏指令。实质上:可执行指令、实质上:可执行指令、伪指令伪指令 。(看书看书5分钟,找答案,回答、讨论。分钟,找答案,回答、讨论。)工作模式,程序设计模型实模式存储器寻址 .model small;select the model for mem

60、ory .386 ;select 80386 cpu .stack 20h;define the size of stack .data data1 dword01020300dh,0h data2 byte10h dup(0) .code start: mov ax, data;initialize data segment mov ds, ax lea si, data1 lea di, data2 transfer: mov ebx, si mov di, ebx add si, 4;add 4 to si add di, 4 cmp bl, 0dh jz finished jmp tr

温馨提示

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

评论

0/150

提交评论