资源描述
微机原理与接口技术,*,微机原理与接口技术,第,2,章 微处理器结构,微机原理与接口技术,主要内容,2.1,微处理器功能结构,2.2,寄存器,2.3,存储器组织,2.4,汇编语言基础,2.5,数据寻址方式,3,标志寄存器,累加器,内部数据总线,暂存器,通用,寄存器组,专用,寄存器组,指令寄存,指令译码,时序,和,控制,逻辑,控制总线,地址总线,数据总线,地址,总线控制,数据,总线控制,ALU,2.1.1,处理器基本结构,算术逻辑单元,寄存器,指令处理单元,2.1,微处理器功能结构,微机原理与接口技术,4,计算机的运算器,,,负责处理器所能进行的各种运算,,主要就是算术运算和逻辑运算,累加器结构的处理器,累加器(,Accumulator,),提供一个操作数,保存运算结果,标志(,Flag,)寄存器,反映运算结果的辅助信息,例如,:,有无进借位、是否为零、是否为负等,也称为程序状态字(,PSW,),1.,算术逻辑单元,ALU,2.1,微处理器功能结构,微机原理与接口技术,5,2.,寄存器(,Register,),处理器内部需要高速存储单元,,用于暂时存放程序执行过程中的代码和数据,透明寄存器,对应用人员不可见、不能直接控制的寄存器,可编程(,Programmable,)寄存器,具有引用名称、供编程使用,通用寄存器,数量较多、使用频度较高,具有多种用途,专用寄存器,只用于特定目的,2.1,微处理器功能结构,微机原理与接口技术,6,3.,指令处理单元,处理器的控制单元,,它控制指令的执行和信息的传输,指令执行的过程,取指,:指令处理单元将指令从,主存取出,,并通过总线传输到处理器内部的,指令寄存器,译码,:指令处理单元通过,指令译码,电路获得该指令的功能,执行,:指令处理单元的时序和控制逻辑,按一定的时间顺序发出和接收相应信号,,完成指令所要求的操作,取指,译码,执行,2.1,微处理器功能结构,16,微机原理与接口技术,7,2.1.2 8086,的功能结构,2.1,微处理器功能结构,执行单元,(EU),总线接口单元,(BIU),8,总线接口单元,负责管理与系统总线的接口,负责对存储器和外设访问,包括指令队列、指令指针、段寄存器、地址加法器和总线控制逻辑,执行单元,包括,ALU,、通用寄存器、标志寄存器和控制电路,负责指令译码、数据运算和指令执行,指令执行的两个主要阶段:,取指,和,执行,取指:从主存取出指令代码进入指令队列,执行:译码指令、并发出有关控制信号实现指令功能,1.,总线接口单元和执行单元,2.1,微处理器功能结构,微机原理与接口技术,9,2.,指令预取(,Prefetch,),8086,处理器的指令读取,实际上是,指令预取,8086,处理器维护着长度为,6,个字节的指令队列,EU,单元译码、执行指令,同时,BIU,单元读取后续指令,BIU,和,EU,两个单元相互独立,可以,并行操作,最简单的,指令流水线技术,节省许多取指时间,提高了工作效率,2.1,微处理器功能结构,微机原理与接口技术,10,8088,的指令执行过程,返回,微机原理与接口技术,11,2.1,微处理器功能结构,2.1.3 80386,的功能结构,微机原理与接口技术,12,总线接口单元:,为处理器提供同外部的接口,指令预取单元:,先行读取指令,指令译码单元:,从预取队列中取来指令,译码,成微指令代码,执行单元:,ALU,、乘法器、除法器和移位器等,分段单元:,逻辑地址变换成线性地址,分页单元:,将线性地址变换成物理地址,各功能部件可以并行工作,进行流水线处理,2.1,微处理器功能结构,微机原理与接口技术,13,2.1,微处理器功能结构,2.1.4 Pentium,的功能结构,微机原理与接口技术,14,超标量流水线:,2,条指令流水线,分离,Cache,:,指令,Cache,和数据,Cache,动态分支预测:,预测程序执行顺序,其他,性能增强的浮点处理单元,FPU,常用指令固化,改进复杂指令的微代码算法,节能特性,电源电压:,3.3V,2.1,微处理器功能结构,微机原理与接口技术,15,2.1,微处理器功能结构,2.2,寄存器,2.3,存储器组织,2.4,汇编语言基础,2.5,数据寻址方式,主要内容,2.2.1,通用寄存器,最常用,保存,整数数据、地址,等,8,个,32,位通用寄存器,EAX,,,EBX,,,ECX,,,EDX,,,ESI,,,EDI,,,EBP,,,ESP,8,个,16,位通用寄存器,AX,,,BX,,,CX,,,DX,,,SI,,,DI,,,BP,,,SP,8,个,8,位通用寄存器,AH,,,AL,,,BH,,,BL,,,CH,,,CL,,,DH,,,DL,存取,16,位寄存器,高,16,位不受影响,存取,8,位寄存器,,16/32,位寄存器其他位不受影响,2.2,寄存器,通用寄存器的名称,EAX,:,累加器,(Accumulator),EBX,:,基址寄存器,(Base),ECX,:,计数器,(Counter),EDX,:,数据寄存器,(Data),ESI,:,源变址寄存器,(Source Index),EDI,:,目的变址寄存器,(Destination Index),EBP,:,基址指针,(Base Pointer),ESP,:,堆栈指针,(Stack Pointer),ESP(SP),应该作为专用寄存器对待,2.2,寄存器,2.2.2,标志寄存器,标志(,Flag,),反映,指令执行结果,或,控制指令执行形式,用一个或多个二进制位表示一种标志,0,或,1,的不同组合表达标志的不同状态,8086,支持,16,位标志寄存器,FLAGS,IA-32,处理器形成,32,位,EFLAGS,标志寄存器,状态标志,:记录指令执行结果的辅助信息,控制标志,:方向标志,DF,,仅用于串操作指令,系统标志,:控制操作系统或核心管理程序的操作方式,2.2,寄存器,标志寄存器,EFLAGS,2.2,寄存器,1.,状态,标志,记录程序运行结果的状态信息,OF,11,DF,10,IF,9,TF,8,SF,7,ZF,6,0,5,AF,4,0,3,PF,2,1,1,CF,0,最基本的标志,有,6,个,用来记录,指令执行结果的辅助信息,主要由,加减运算和逻辑运算指令,设置,处理器主要使用其中,5,个,构成各种条件,,分支指令判断这些条件实现程序分支,2.2,寄存器,进位标志,CF,(,Carry Flag,),当加减,运算的,最高有效位,有,进位(加法)或借位(减法),时,,,CF,1,,否则,CF,0,2.2,寄存器,例,1,:,00111010,01111100,最高位无进位,,,CF,0,例,2,:,10101010,01111100,最高位有进位,,CF=1,10110110,1,00100110,针对,无符号整数,,判断加减结果是否超出表达范围,N,个二进制位表达无符号整数的范围:,0,2,N,-1,8,位:,0,255,16,位:,0,65535,32,位:,0,2,32,1,2.2,寄存器,溢出标志,OF,(,Overflow Flag,),有符号数加减结果有,溢出则,OF,1,,,否则,OF,0,2.2,寄存器,例,1,:,00111010,01111100,超出表达范围,,,OF,1,例,2,:,10101010,01111100,未超出表达范围,,,OF=0,10110110,1,00100110,针对,有符号整数,,判断加减结果是否超出表达范围,N,个二进制位表达有符号整数的范围:,-2,N,-,1,2,N-1,-1,8,位:,128,127,16,位:,32768,32767,32,位:,2,31,2,31,1,2.2,寄存器,进位和溢出的区别,CF,反映,无符号整数,运算结果是否超出范围,有进位,加上进位或借位后运算结果仍然正确,OF,反映,有符号整数,运算结果是否超出范围,有溢出,运算结果已经,不正确,处理器按照,无符号整数,求得,结果,设置进位标志,CF,设置,溢出标志,OF,程序员决定,操作数是无符号数,关心进位,操作数是有符号数,注意溢出,2.2,寄存器,溢出标志的判断,处理器硬件判断规则,最高位和次高位同时有进位或同时无进位,无溢出;最高位和次高位进位状态不同,有溢出,人工判断的简单规则,只有当两个相同符号数相加(含两个不同符号数相减),而运算结果的符号与原数据符号相反时,产生溢出;其他情况下,不会产生溢出,0,0,111010,0,1,111100,1,0,110110,正数,正数,负数,最高位,次高位,2.2,寄存器,零,标志,ZF,(,Zero Flag,),运算结果为,0,则,ZF,1,,否则,ZF,0,2.2,寄存器,例,1,:,00111010,01111100,结果不是,0,,,Z,F,0,例,2,:,10000100,01111100,结果是,0,,,ZF=1,10110110,1,00000000,符号标志,SF,(,Sign,Flag,),运算结果最高位为,1,则,SF,1,,否则,SF,0,2.2,寄存器,例,1,:,00111010,01111100,最高位为,1,,,SF,1,例,2,:,10000100,01111100,最高位为,0,,,SF=0,1,0110110,10,0000000,进位,奇偶标志,PF,(,Parity,Flag,),当运算结果最低字节中“,1”,的个数为零或偶数时,,PF,1,;否则,PF,0,2.2,寄存器,例,1,:,00111010,01111100,“,1,”的个数为,5,个,,,PF,0,例,2,:,10000100,01111100,“,1,”的个数为,0,个,,PF=1,1,0,11,0,11,0,1,00000000,微机原理与接口技术,30,CF,PF,AF,ZF,SF,OF,0000H,8000H,8000H,+,8000H,C000H,C000H,+,8010H,4008H,4008H,+,C808H,0808H,C000H,+,1,1,0,1,0,1,1,1,0,0,1,0,0,0,1,0,1,1,0,0,0,0,1,0,练习:,下列十六进制数相加会如何影响标志位?,2.2,寄存器,2.,控制,标志,方向标志,DF(Direction Flag,),仅用于串操作指令,控制地址的变化方向,设置,DF,0,,每次串操作后的,存储器地址就自动增加,,即从低地址向高地址处理数据串,设置,DF,1,,每次串操作后的,存储器地址就自动减少,,即从高地址向低地址处理数据串,执行,CLD,指令设置,DF,0,执行,STD,指令设置,DF,1,2.2,寄存器,3.,系统标志,控制操作系统或核心管理程序的操作方式,中断允许标志,IF,(,Interrupt-enable Flag,),陷阱标志,TF,(,Trap Flag,),单步标志,I/O,特权层标志,IOPL,(,I/O Privilege Level,),任务嵌套标志,NT,虚拟,8086,方式标志,VM,恢复标志,RF,对齐检测标志,AC,CPU,识别标志,ID,(,Identification Flag,),虚拟中断标志,VIF,虚拟中断挂起标志,VIP,2.2,寄存器,2.2.3,专用寄存器,专用寄存器往往只用于,特定指令或场合,1.,指令指针寄存器,EIP,保存,将要执行的指令在主存的地址,不能由指令直接修改,发生程序转移、中断、异常时由处理器自动改变,2.,段寄存器,段是安排相关代码或数据的主存区域,段寄存器表明,段在主存中的位置,6,个,16,位段寄存器:,CS DS SS ES FS GS,2.2,寄存器,3,.,其他寄存器,浮点寄存器、多媒体寄存器,系统专用寄存器,2.2,寄存器,微机原理与接口技术,35,2.1,微处理器功能结构,2.2,寄存器,2.3,存储器组织,2.4,汇编语言基础,2.5,数据寻址方式,主要内容,物理存储器以,字节,为基本存储单位,每个存储单元被分配一个唯一的,地址,即,物理,地址,物理地址空间从,0,开始顺序编排,直到处理器支持的最大存储单元,8086,处理器支持,1MB,存储器,:,IA-32,处理器支持,4GB,存储器,:,操作系统利用,存储管理单元,进行存储管理,,程序并不直接寻址物理存储器,IA-32,处理器提供,3,种存储模型,,用于程序访问存储器,00000H,FFFFFH,00000000H,FFFFFFFFH,2.3,存储器组织,2.3.1,存储模型,1.,平展存储模型(,Flat memory model,),存储器是一个连续的地址空间线性地址空间,IA-32,处理器支持,4GB,容量线性地址空间,2.,段式存储,模型(,Segmented memory model,),存储器由一组独立的地址空间段(,Segment,),每个段都可以达到,4GB,容量,在处理器内部,所有的段都被映射到线性地址空间,3.,实地址存储,模型(,Real-address memory model,),8086,处理器的存储模型,段式存储模型的特例,线性地址空间最大为,1MB,容量,段最大为,64KB,2.3,存储器组织,2.3.2,工作方式,1.,保护方式(,Protected mode,),IA-32,处理器固有的工作状态,具有强大的段页式存储管理和特权与保护能力,使用全部,32,条地址总线,可寻址,4GB,物理存储器,使用平展或段式存储模型,利用虚拟,8086,方式支持实地址,8086,软件,2.,实地址方式(,Real-address mode,),可以进行,32,位处理的快速,8086,只能寻址,1MB,物理存储器空间,每个段不超过,64KB,可以使用,32,位寄存器、,32,位操作数和,32,位寻址方式,只能支持实地址存储模型,3.,系统管理,方式(,System Management mode,),实现节能和系统安全管理,2.3,存储器组织,2.3.3,逻辑,地址,在处理器内部、,程序员编程时采用的地址,逻辑地址,段基地址,偏移地址,段基地址,段在,主存中的起始地址,偏移地址,距离段基地址的位移量,某个存储单元可以有多个逻辑地址,但只有一个唯一的物理地址,逻辑地址,线性地址,物理地址,编程使用,处理器转换,地址总线输出,2.3,存储器组织,逻辑地址与物理地址,108,208,308,106,206,306,107,207,307,109,209,309,110,105,104,103,102,101,210,205,204,203,202,201,310,305,304,303,302,301,08,18,28,06,16,26,07,17,27,09,19,29,10,05,04,03,02,01,20,15,14,13,12,11,30,25,24,23,22,21,逻辑地址相对地址:,205,(,2,层,05,号房间),物理地址绝对地址:,15,(第,15,号房间),2.3,存储器组织,1.,基本段,编写,应用程序时,涉及三类基本段:,代码段(,Code Segment,):存放指令代码,程序的指令代码必须安排在代码段,数据段(,Data Segment,):存放数据,程序的数据默认存放在,数据段,数据也可放在其他段,堆栈段(,Stack Segment,):堆栈区域,程序使用的堆栈一定在,堆栈段,2.3,存储器组织,基本段的逻辑地址,代码段(,Code Segment,),段基地址:代码段寄存器,CS,指示,偏移地址:指令指针寄存器,EIP,保存,数据段(,Data Segment,),段基地址:数据段寄存器,DS,指示,有时也用附加段寄存器,ES,,段寄存器,FS,和,GS,指示,偏移地址:各种存储器寻址方式,计算出来,堆栈段(,Stack Segment,),段基地址:堆栈段寄存器,SS,指示,偏移地址:堆栈指针寄存器,ESP,保存,2.3,存储器组织,2.,段选择器,16,位段寄存器保存,16,位段选择器,段选择器指向,64,位段描述符,(,Descriptor,),段描述符包括,段基地址,平展存储模型:指向地址,0,位置,段式存储模型:指向线性地址空间不同的段,实地址存储模型:保存段基地址的高,16,位,段选择器,16,位段寄存器,64,位段描述符,主存储器空间,段基地址,数据或指令,2.3,存储器组织,3.,保护方式的地址转换,平展存储模型,段基地址为,0,,偏移地址等于,线性地址,段式存储管理,段基地址和偏移地址都是,32,位,段基地址加上偏移地址,形成线性地址,线性地址映射到物理地址,不使用,分页机制,:线性地址与物理地址对应,使用分页机制:硬件支持下由操作系统或核心程序管理,构成,虚拟存储器,,转换成物理地址,2.3,存储器组织,4.,实地址方式的地址转换,主存空间,1MB,(,2,20,B,):,00000H,FFFFFH,程序设计时分段管理,但有两个限制:,每个段最大为,64KB,(,2,16,B,),段,只能开始于低,4,位地址全为,0,的物理地址处,逻辑地址段地址,偏移地址,16,位段寄存器,保存,20,位段起始地址的高,16,位,偏移地址也用,16,位数据表示,物理地址段地址,16,偏移地址,左移二进制,4,位(十六进制,1,位),2.3,存储器组织,微机原理与接口技术,46,0,段基址,偏移量,0 1 0 0,6 4 2 0 0,6 4 1 0,物理地址,例:,存储单元位于起始地址为,6410H,的逻辑段,中,偏移量为,0100H,,则该存储单元的逻,辑地址为,6410H:0100H,物理地址为:,段基址,2.3,存储器组织,2.3,存储器组织,实地址存储模型的逻辑地址和物理地址,微机原理与接口技术,48,作 业,2.1,简答题(,1,6,),2.2,判断题(,1,3,、,6,、,8,、,10,),2.3,填空题(,1,7,),2.6 2.8 2.9,微机原理与接口技术,49,2.1,微处理器功能结构,2.2,寄存器,2.3,存储器组织,2.4,汇编语言基础,2.5,数据寻址方式,主要内容,微机原理与接口技术,50,2.4.1,指令代码格式,MOV EAX,EBX,例:,指示计算机执,行什么操作,操作数,指明参加操作的数,或者它所在的地址,指 令,操作码,将寄存器,EBX,的数据传送到寄存器,EAX,微机原理与接口技术,51,微机原理与接口技术,52,微机原理与接口技术,53,2.4.2,语句格式,执行性语句,(,处理器指令、硬指令,),例,even:,shr,ax,1,;ax,2,ax,说明性语句,(,汇编程序命令、伪指令,),标号,:,处理器指令助记符,操作数,操作数,;,注释,名字,伪指令助记符,参数,参数,,;,注释,微机原理与接口技术,54,1.,标号与名字,标号:执行性语句中,冒号分隔,表示处理器指令在主存中的,逻辑地址,指示分支、循环等程序的,目的地址,名字:说明性语句中,空格或制表符分隔,变量名、段名、子程序名等,反映变量、段和子程序等的逻辑地址,标号和名字是用户自定义的标识符,微机原理与接口技术,55,标识符,最多由,31,个字母、数字及规定的特殊符号(如,_,、,$,、,?,、,)组成,,不能以数字开头,一个源程序中,用户定义的每个,标识符必须唯一,不能是汇编程序采用的,保留字,默认不区分大小写,除非用伪指令,OPTION CASEMAP,:,NONE,告知,MASM,区别用户定义标识符的大小写,微机原理与接口技术,56,2.,助记符,帮助记忆指令功能的符号,硬指令助记符对应处理器指令,表示一种处理器操作,伪指令助记符表达一个汇编命令,例,硬指令助记符:,MOV,、,CALL,伪指令助记符:,BYTE,msg,byte,Hello,Assembly!,13,10,0,微机原理与接口技术,57,3.,操作数和参数,处理器指令的操作数表示,参与操作的对象,具体的常量,保存在寄存器的数据,保存在存储器中的变量,逗号前常是目的操作数,逗号后常是源操作数,伪指令的参数,常量、变量名、表达式等,可以有多个,参数之间用逗号分隔,mov eax,offset msg,msg,byte,Hello,Assembly!,13,10,0,微机原理与接口技术,58,4.,注释,语句中分号后的内容是注释,对指令或程序进行说明,汇编程序不对它们做任何处理,注释利于阅读,应养成书写注释的好习惯,语句的,4,个组成部分要用分隔符分开,标号后的冒号,注释前的分号,操作数间和参数间的逗号,分隔其他部分采用一个或多个空格或制表符,注释使用英文或中文均可,微机原理与接口技术,59,2.4.3,汇编源程序框架,微机原理与接口技术,60,将常用的常量定义、过程说明、共享的子程序库等内容进行声明(相当于,C,和,C+,语言中,包含头文件的作用),IO32.INC,是配合本书的包含文件,其中前,3,个语句:,.686,;,处理器选择伪指令,采用,80686,处理器支持的指令,.model flat,stdcall,;,选择平展存储模型,标准调用规范,option casemap:none,;,告知,MASM,区分用户定义标识符的大小写,1.,包含伪指令,include,微机原理与接口技术,61,2.,段的简化定义,数据段定义伪指令,.DATA,创建一个数据段,代码段定义伪指令,.CODE,创建一个代码段,堆栈段由,Windows,维护,用户不必设置,程序开始执行的位置,应用一个标号(例如:,START,),汇编结束,END,指令的参数,应用程序执行结束,语句“,EXIT 0”,将控制权交还操作系统,提供给操作系统一个返回代码,通常用,0,表示执行正确,源程序汇编结束,END,语句,微机原理与接口技术,62,例,2-1,:,在屏幕上显示“,hello,assembly!”,微机原理与接口技术,63,3.,输入输出子程序库,键盘输入和显示器输出的,I/O,子程序,含,IO32.INC,和,IO32.LIB,,需要包含文件声明,源程序文件开始使用包含命令声明,INCLUDE IO32.INC,子程序调用方法,MOV EAX,入口参数,CALL,子程序名,宏调用方法,宏名 入口参数,宏名,WriteString,子程序名,DISPMSG,入口参数,EAX,字符串地址,功能说明,显示字符串(以,0,结尾),微机原理与接口技术,64,子程序名,功能说明,DISPMSG,显示字符串(以,0,结尾),DISPC,显示一个字符,DISPCRLF,光标回车换行,到下一行首个位置,DISPRD,显示,8,个,32,位通用寄存器内容,DISPRF,显示,6,个状态标志的状态,DISPHD,以十六进制形式显示,8,位数据,DISPUID,显示无符号十进制整数,DISPSID,显示有符号十进制整数,常用输出子程序,微机原理与接口技术,65,常用输入子程序,子程序名,功能说明,READMSG,输入一个字符串(回车结束),READC,输入一个字符(回显),READHD,输入,8,位十六进制数据,READUID,输入无符号十进制整数(,2,32,1,),READSID,输入有符号十进制整数,(,2,31,2,31,1,),微机原理与接口技术,66,2.4.4,程序开发过程,源程序,.asm,目标程序,.obj,可执行程序,.exe,应用程序,MASM,汇编,LINK,连接,DEBUG,调试,EDIT,编辑,微机原理与接口技术,67,1.,开发软件,MASM6.15,微机原理与接口技术,68,2.,源程序的,编辑,文件保存在,MASM,目录,微机原理与接口技术,69,3.,源程序的,汇编,MASM 6.x,的汇编程序是,ML.EXE,汇编后生成,目标模块文件(,.OBJ,),汇编命令:,ML,/c /coff,eg0201.asm,参数“,/c,”,(小写)实现源程序的汇编,参数,“,/coff,”,(,小写,),表示生成,COFF,格式的目标模块文件,将源文件放在,MASM,目录,ML.EXE的参数,区别,大小写,微机原理与接口技术,70,4.,目标文件的,连接,32,位连接程序被更名为,LINK32.EXE,把一个或多个目标文件和库文件合成一个可执行文件,连接命令,LINK32,/subsystem:console,eg0201.obj,“,/subsystem:console,”,表示生成,Windows,控制台环境的可执行文件,“,/subsystem:windows,”,生成,Windows,图形窗口的可执行文件,汇编程序只指出语法错误,微机原理与接口技术,71,5.,可执行文件的运行,进入控制台(或模拟,DOS,)环境,在命令行提示符下输入文件名(可以省略扩展名)、按下回车键运行,eg0201.exe,运行错误,就需要,静态排错:阅读分析源程序,动态排错:利用调试程序,不要在,Windows,下双击运行,微机原理与接口技术,72,源程序的编辑,微机原理与接口技术,73,源程序的汇编和目标文件的连接,可执行文件的执行,上下方向键可以调出原来输入的命令,微机原理与接口技术,74,微机原理与接口技术,75,6.,列表文件,列表文件(,.LST,)含有源程序和目标代码,ML,/c /coff /Fl,eg0201.asm,“,/Fl,”,创建列表文件,(大写,F,、小写,l,,不是数字,1,),列表文件有两部分内容,第一部分:源程序及其代码,第二部分:各种标识符,错误,Error,:比较严重的语法错误,警告,Warning,:不太关键的语法错误,微机原理与接口技术,76,生成列表文件,微机原理与接口技术,77,汇编语言语句,指令或数据的机器代码,相对偏移地址,源程序及代码,微机原理与接口技术,78,标识符,宏,微机原理与接口技术,79,标识符,段和组,符号,微机原理与接口技术,80,标识符,错误和警告,微机原理与接口技术,81,2.1,微处理器功能结构,2.2,寄存器,2.3,存储器组织,2.4,汇编语言基础,2.5,数据寻址方式,主要内容,微机原理与接口技术,82,寻址要解决的问题,(,1,)去哪寻找指令?,(,2,)去哪寻找参加操作的数?,按顺序寻址,由,IP+1,IP,完成,跳跃式寻址,根据,标志位的变化,跳跃,操作数包含在,指令,中,操作数在,CPU,的某个,寄存器,中,操作数在,存储单元,中,微机原理与接口技术,83,数据寻址方式,(1),操作数包含在,指令,中,立即数寻址,(2),操作数在,CPU,的,内部寄存器,中,寄存器寻址,(3),操作数在,存储器,中,存储器寻址,微机原理与接口技术,84,2.5.1,立即数寻址,操作数紧跟操作码,是机器代码的一部分,操作数从,指令代码中立即得到,即立即数,(,Immediate,),用,常量形式,直接表达,立即数寻址方式只用于,源操作数,,常用来给寄存器和存储单元赋值,例,:,MOV EAX,33221100H,机器代码:,B8 00 11 22 33,操作码:,B8,立即数:,33221100,微机原理与接口技术,85,AH,AL,EAX,11H,代码段,B8H,00H,高地址,低地址,操作码,立即数低字节,立即数高字节,00H,11H,MOV,EAX,33221100H,22H,33H,立即数,3322H,86,2.5.2,寄存器寻址,操作数存放在处理器的,内部寄存器,中,用寄存器名表示它的内容,绝大多数指令采用,通用寄存器,寻址,部分指令支持专用寄存器,例如,段寄存器,寄存器寻址方式简单快捷,最常使用,例,:,MOV EBX,EAX,EBX,EAX,BH,BL,AH,AL,微机原理与接口技术,87,例:,设,AX=0506H,BL=C2H,MOV,AH,BL,AH=,MOV,DS,AX,DS=,MOV,SI,AX,SI=,C2H,C206H,C206H,说明,:,立即数和寄存器寻址方式不需访问存储器即可得到操作数,速度快,微机原理与接口技术,88,2.5.3,存储器寻址,操作数存放在,CPU,外部的,存储器,中,用所在,存储单元的地址,表示,编程时,存储器地址使用包含,段选择器和偏移地址,的,逻辑地址,段选择器(段寄存器),指示段基地址,偏移地址由各种寻址方式计算,常被称为,有效地址,EA,(,Effective Address,),一般情况下存储器地址由,有效地址,表示,段寄存器不用显式说明,,数据在默认的段中,。如果不使用默认段寄存器,则要用,段超越指令前缀,加以说明,微机原理与接口技术,89,1.,段寄存器的默认和超越,微机原理与接口技术,90,2.,偏移地址的组成,32,位有效地址,基址寄存器(变址寄存器,比例)位移量,基址寄存器:任何,8,个,32,位通用寄存器之一,变址寄存器:除,ESP,之外的任何,32,位通用寄存器之一,比例:,1,,,2,,,4,或,8,位移量:,8,或,32,位有符号值,16,位有效地址,基址寄存器变址寄存器位移量,基址寄存器:,BX,或,BP,变址寄存器:,SI,或,DI,位移量:,8,或,16,位有符号值,微机原理与接口技术,91,直接寻址,寄存器间接寻址,寄存器相对寻址,变址寻址,带比例的变址寻址,3.,存储器寻址的,5,种方式,微机原理与接口技术,92,指令中直接包含了,操作数的有效地址,EA,,在指令操作码之后,默认的段地址在,DS,寄存器中,即操作数的实际地址是,DS:EA,常用于存取变量,直接寻址,例:,指令,MOV,ECX,,,COUNT,机器代码:,8B 0D 00 50 40 00,操作码:,8B 0D,操作数:有效地址,00405000H,微机原理与接口技术,93,00405000H,高地址,低地址,DS,00000000H,CH,CL,ECX,操作码,+,00405000H,56H,78H,00405000H,00000000H,00H,40H,50H,00H,0DH,8BH,12H,34H,56H,78H,1234H,操作数的有效地址,EA,数据段,MOV,ECX,,,405000H,微机原理与接口技术,94,操作数的有效地址,EA,存放在,寄存器,,寄存器内容等于偏移地址,MASM,用,中括号,括起寄存器,可以方便地对数组的元素或字符串的字符进行操作,寄存器间接寻址没有说明存储单元类型,寄存器间接寻址,例:,MOV,EDX,,,EBX,MOV,ESI,,,ECX,微机原理与接口技术,95,例:,指令,MOV,AX,,,SI,DS,21000H,21000H,AH,AL,AX,数据段,代码段,操作码,A0H,50H,SI,2000H,1000H,+,2.2 8088/8086,的寻址方式,-,寄存器间接寻址,A0H,50H,物理地址,20000H,微机原理与接口技术,96,有效地址是寄存器内容与位移量之和,也可以方便地对数组的元素或字符串的字符进行操作,寄存器相对寻址,例:,mov esi,ebx+4;,位移量:,4,mov edi,ebp-08h,;,位移量:,-08H,mov esi,countebx;,位移量:,COUNT,微机原理与接口技术,97,例:,指令,MOV,AX,SI+06H,DS,21006H,21006H,AH,AL,AX,数据段,代码段,操作码,45H,38H,06H,SI,2000H,1000H,+,45H,38H,物理地址,Disp,06H,20000H,微机原理与接口技术,98,变址寻址,使用变址寄存器寻址操作数,便于支持两维数组等数据结构,例如:,mov edi,ebx+esi,mov edi,ebxesi,;,基址变址寻址,,,功能,:,EDI,DS:EBX+ESI,mov eax,ebx+edx+80h,mov eax,80hebx+edx,mov eax,80hebxedx,;,相对,基址变址寻址,功能,:,EAX,DS:EBX+EDX+80H,微机原理与接口技术,99,例:,指令,MOV,AX,BX+SI,DS,25000H,25000H,AH,AL,AX,数据段,代码段,操作码,61H,79H,06H,BX,2000H,1000H,+,61H,79H,物理地址,SI,20000H,4000H,2.2 8088/8086,的寻址方式,-,基址变址寻址,微机原理与接口技术,100,带比例的变址寻址,变址寄存器内容乘以比例,1,(可省略),,2,,,4,或,8,的变址寻址,比例,1,、,2,、,4,和,8,对应,8,、,16,、,32,和,64,位数据的字节个数,便于以数组元素为单位寻址相应数据,例如:,mov eax,ebx*4;,带比例的变址寻址,mov eax,esi*2+80h,;,带比例的相对变址寻址,mov eax,ebx+esi*4,;,带比例的基址变址寻址,mov eax,ebx+esi*8-80h,;,带比例的相对基址变址寻址,微机原理与接口技术,101,2.5.4,数据寻址的组合,立即数,imm,通用寄存器,reg,存储器操作数,mem,微机原理与接口技术,102,例,2-2,:,数据寻址程序,.data,count,dword,12345678h,9abcdef0h,0,0,3721h,.code,mov eax,33221100h ;EAX=,mov ebx,eax ;EBX=,mov ecx,count,;ECX=,mov ebx,offset count;EBX=,mov edx,ebx ;EDX=,mov esi,ebx+4 ;ESI=,33221100H,33221100H,12345678H,00000000H,12345678H,9abcdef0H,微机原理与接口技术,103,mov esi,4 ;ESI=,mov edi,countesi,;EDI=,mov edi,ebx+esi ;EDI=,mov ecx,ebx+esi*4 ;ECX=,mov edx,ebx+esi*4-4 ;EDX=,mov ebp,esp ;EBP=,call disprd,4,9abcdef0H,ESP,3721H,0,9abcdef0H,数据寻址程序,数据寻址程序,了解处理器的基本结构,熟悉,8086,、,80386,和,Pentium,处理器的结构,掌握,IA-32,常用寄存器的名称和作用,掌握状态标志和控制标志的意义,理解,IA-32,的存储器模型和工作方式,掌握基本段、逻辑地址和物理地址,掌握逻辑地址转换为物理地址的方法,理解汇编语言的语句格式和程序格式,掌握汇编语言程序的开发方法,掌握数据寻址方式及其应用,第,2,章 总结,
展开阅读全文