cpu与汇编第二章寻址方式.ppt
《cpu与汇编第二章寻址方式.ppt》由会员分享,可在线阅读,更多相关《cpu与汇编第二章寻址方式.ppt(117页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章第二章 Intel 8086/8088 CPUIntel 8086/8088 CPU的寻址方式和指令系统的寻址方式和指令系统2.1计算机组织结构运算器控制器存储器输入设备输出设备计算机系统计算机系统硬件:硬件:中央处理机中央处理机 CPU总线控制 逻辑接 口接 口存储器存储器大容量存储器I/O设备I/O子系统子系统系系统统总总线线.软件:软件:系统软件 用户软件MainmemoryI/ObridgeBusinterfaceALURegisterfileCPUSystembusMemorybusDiskcontrollerGraphicsadapterUSBcontrollerMouse
2、KeyboardDisplayDiskI/ObusExpansionslotsforotherdevicessuchasnetworkadaptersPChardwareMainmemoryI/O bridgeBusinterfaceALURegisterfileCPUSystembusMemorybusDisk controllerGraphicsadapterUSBcontrollerMouse KeyboardDisplayDiskI/ObusExpansionslotsforotherdevicessuchasnetworkadaptershello executable stored
3、 on diskPChello codehello.c汇编汇编语言语言MainmemoryI/O bridgeBusinterfaceALURegisterfileCPUSystembusMemorybusDiskcontrollerGraphicsadapterUSBcontrollerMouse KeyboardDisplayDiskI/ObusExpansionslotsforotherdevicessuchasnetworkadaptershello executable stored on diskPChello codehello,worldnhello,worldn微型计算机的工
4、作过程 微型计算机的工作过程就是执行程序的过程,而程序由指令序列组成,因此,执行程序的过程,就是执行指令序列的过程,即逐条地从存储器中取出指令并完成指令所指定的操作。由于执行每一条指令,都包括取指、译码和执行三个基本步骤,所以,微型计算机的工作过程,也就是不断地取指令、译码和执行的过程,直到遇到停机指令时才结束机器的运行。优点:处理器简单通用,把复杂问题转移到存放解释程序存储器中,即把复杂的硬件设计转化为复杂的软件设计。8086微处理器8086/8088 CPU内部的寄存器组内部的寄存器组寄存器是CPU内部存放操作数的地方,它的操作速度比内存操作数速度快。8086共有14个寄存器,它们都是16
5、位的,可以存放16位二进制数。通用寄存器:4个数据寄存器:AX、BX、CX和DX每个寄存器又可分为2个8位寄存器:AH、AL、BH、BL、CH、CL、DH、DL2个变址寄存器:DI和SI2个指针寄存器:SP和BP段寄存器4个段寄存器:ES、CS、SS和DS控制寄存器1个标志寄存器:FLAG(CF、AF、PF、ZF、OF、SF、IF、DF、TF)1个指令指针寄存器:IP通用寄存器的作用(1)数据寄存器数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。4个16位寄存器:AX:Accumulator,累加器累加器 BX:BaseRegister
6、,基址寄存器基址寄存器CX:CountRegister,计数寄存器计数寄存器DX:DataRegister,数据寄存器数据寄存器上述4个寄存器可分为8个8位寄存器,分别为AH和AL、BH和BL、CH和CL、DH和DL。每个寄存器都有自己的名称,可独立存取。程序员可利用数据寄存器“能分可合”的特性,灵活地处理双字、字和字节等信息。在32位处理器中,有4个32位寄存器:EAX、EBX、ECX和EDX。通用寄存器AX(accumulator):作为累加器,是算术运算的主要寄存器。所有I/O指令都使用它和外部设备传送信息。BX(base):除了作为一般的数据寄存器使用外,经常用做基址寄存器。CX(co
7、unt):除了作为一般的数据寄存器使用外,常用来保存计数值,如在移位指令、循环指令和串处理指令中用作隐含的计数器。DX(data):除了作为一般的数据寄存器使用外,可以在处理双字长运算时把DX和AX组合使用,DX存放高位字。通用寄存器SP(stackpointer):除了作为一般的数据寄存器使用外,用来指示栈顶的偏移地址;BP(basepointer):除了作为一般的数据寄存器使用外,可以和堆栈段寄存器SS联合使用来指示堆栈段中的存储单元地址;SI(sourceindex)和DI(destinationindex):除了作为一般的数据寄存器使用外,可以和数据段寄存器DS联合使用来确定数据段中存
8、储单元的地址注意:这四个寄存器只能以16位为单位一起使用标志寄存器(程序状态字寄存器 PSW)15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0状态标志:控制标志:OF 溢出标志 DF 方向标志 SF 符号标志 IF 中断标志ZF 零标志 TF 陷阱标志CF 进位标志AF 辅助进位标志PF 奇偶标志OF DF IF TF SF ZF AF PF CF例:例:MOV AX,1 MOV BX,2 ADD AX,BX 指令执行后,(AX)=3,OF=0,CF=0,ZF=0,SF=0例:例:MOV AX,FFFFH MOV BX,1 ADD AX,BX 指令执行后,(AX)=0
9、,OF=0,CF=1,ZF=1,SF=0Debug下的内存和寄存器下的内存和寄存器(1)PSPPSPDSDSESESSSSSCSCSEXE 程序的内存映象图装入模块文件头Debug下的内存和寄存器下的内存和寄存器(2)一个16位寄存器可以存储一个16位的数据。(数据的存放情况)一个16位寄存器所能存储的数据的最大值为多少?答案:216-1。通用寄存器通用寄存器以AX为例,8086CPU的16位寄存器分为两个8位寄存器的情况:通用寄存器的作用(2)变址寄存器)变址寄存器(IndexRegister)SI:SourceIndexRegister,源变址寄存器,源变址寄存器DI:Destinatio
10、nIndexRegister,目标变址寄存器,目标变址寄存器它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,且具有特殊的功能。(3)指针寄存器指针寄存器(PointerRegister)它们主要用于访问堆栈内的存储单元,并且规定:BP:基指针(BasePointer)寄存器,用它可直接存取堆栈中的数据SP:堆栈指针(StackPointer)寄存器,用它只可访问栈顶通用寄存器的作用寄寄 存存 器器用用 途途AX乘法指令作累加器,I/O指令作数据寄存器由累加器做立即数运算,比其他指令少占字节ALBCD码,ASCII码运算的累加器,查表指令XLAT的累加器字节乘法,
11、字节除法,字节I/O,十进制算术运算AH作为取指令标志LAHF的目的寄存器,字节乘法,字节除法BX间接寻址作基址寄存器,XLAT指令中作基址寄存器CX串操作或循环控制中的计数器,指令执行后内容会自动变化CL移位,循环计数,指令执行后内容不变DX字乘法,字除法,I/O指令中作端口间接寻址SI存储器指针(串操作中的源指针)DI存储器指针(串操作中的目的指针)BP存储器指针(存取堆栈的指针)SP堆栈指针通用寄存器的隐含使用及特殊用途通用寄存器的隐含使用及特殊用途 几条汇编指令汇编指令不区分大小写几条汇编指令CPU执行下表中的程序段的每条指令后,对寄存器中的数据进行的改变。几条汇编指令寄存器与存储器的
12、比较:寄存器与存储器的比较:寄 存 器 存 储 器 在CPU内部 在CPU外部访问速度快 访问速度慢容量小,成本高 容量大,成本低用名字表示 用地址表示RegistersOn-chipL1cache(SRAM)Mainmemory(DRAM)Localsecondarystorage(localdisks)Larger,slower,andcheaper(perbyte)storagedevicesRemotesecondarystorage(distributedfilesystems,Webservers)Localdisksholdfilesretrievedfromdisksonrem
13、otenetworkservers.Mainmemoryholdsdiskblocksretrievedfromlocaldisks.Off-chipL2cache(SRAM)L1cacheholdscachelinesretrievedfromtheL2cache.CPUregistersholdwordsretrievedfromcachememory.L2cacheholdscachelinesretrievedfrommemory.L0:L1:L2:L3:L4:L5:Smaller,faster,andcostlier(perbyte)storagedevices8086在取指令和寻找
14、内存操作数的地址时,采用了分段寻找的方式,在同一时刻可将内存分成4个段:代码段、数据段、堆栈段和特别数据段,段与段之间允许有重叠。4个段寄存器是:CS(CodeSegmentRegister,代码分段寄存器)DS(DataSegmentRegister,数据分段寄存器)SS(StackSegmentRegister,堆栈分段寄存器)ES(ExtraSegmentRegister,特别分段寄存器)。这4个寄存器都只能够作为16位寄存器使用。8086内部有20根地址线,它可以直接访问的物理空间为1M字节,其编码区间为:00000H0FFFFFH。而CPU内部存放存储单元偏移量的寄存器(如IP、SP
15、、BP、SI、DI和BX等)都是16位,它们的编码范围仅为:00000H0FFFFH。如何用16位寄存器有效地访问1MB的存储空间,8086采用了内存分段的管理模式,并引入存储器分段的概念。段寄存器的作用8086内存分段管理模式(1)存储器的分段)存储器的分段计算机的内存单元是以“字节”为最小单位进行线性编址的。为了标识每个存储单元,就给每个存储单元规定一个编号,此编号就是该存储单元的物理地址。16位微机把内存空间划分成若干个逻辑段,每个逻辑段的要求如下:逻辑段的起始地址(通常简称为:段地址)必须是16的倍数,即最低4位二进制必须全为0;逻辑段的最大容量为64K,这由16位寄存器的寻址空间所决
16、定。按上述规定,1M内存最多可分成64K个段,即65536个段(段之间相互重叠),至少可分成16个相互不重叠的段。(2)物理地址的形成方式)物理地址的形成方式存储单元的逻辑地址分为两部分:段地址和偏移量。由逻辑地址得到其物理地址(PAPhysicalAddress)的计算方法如下:物理地址物理地址PA段地址段地址16+偏移量偏移量 逻辑地址到物理地址的生成加法器 逻辑 地址191500 偏移地址 段 地 址 0 0 0 0 20-bit 物理存储器地址 150物理地址:每个存储单元唯一的 20 位地址 段地址:段起始地址的高 16 位 偏移地址:段内相对于段起始地址的偏移值(16 位)(有效地
17、址 EA)8086内存分段管理模式(3)段寄存器的引用)段寄存器的引用 段寄存器是因为对内存的分段管理而设置的。一般情况下,段寄存器及其指针寄存器的引用关系方面有如下规定:取指令所用的段寄存器和偏移量一定是用CS和IP;堆栈操作所用的段寄存器和偏移量一定是SS和SP;串操作的目标操作数所用的段寄存器和偏移量一定是ES和DI;其它情况,段寄存器除其默认段寄存器外,还可以强行改变为其它段寄存器。访问存储器方式缺省的段寄存器可选用的段寄存器偏移量取指令CSIP堆栈操作SSSP一般取操作数DSCS、ES、SS有效地址串操作源操作数DSSI目标操作数ESDI使用指针寄存器BPSSCS、DS、ES有效地址
18、CS和IPCS和IP是8086CPU中最关键的寄存器,它们指示了CPU当前要读取指令的地址。CS为代码段寄存器;IP为指令指针寄存器。8086PC工作过程的简要描述(1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;(2)IP=IP+所读取指令的长度,从而指向下一条指令;(3)执行指令。转到步骤(1),重复这个过程。8086PC工作过程的简要描述在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为CS=FFFFH,IP=0000H,即在8086PC机刚启动时,CPU从内存FFFF0H单元中读取指令执行,FFFF0H单元中的指令是8086PC机开机后执行的第一
19、条指令。CS和IP内存中指令和数据都是二进制信息,CPU在工作的时候把有的信息看作指令,有的信息看作数据。CPU根据什么将内存中的信息看作指令?CPU将CS:IP指向的内存单元中的内容看作指令。CS和IP在任何时候,CPU将CS、IP中的内容当作指令的段地址和偏移地址,用它们合成指令的物理地址,到内存中读取指令码,执行。如果说,内存中的一段信息曾被CPU执行过的话,那么,它所在的内存单元必然被CS:IP指向过。修改CS、IP的指令在CPU中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对CPU的控制。CPU从何处执行指令是由CS、IP中的内容决定的,程序员可以通过
20、改变CS、IP中的内容来控制CPU执行目标指令。我们如何改变CS、IP的值呢?修改CS、IP的指令8086CPU必须提供相应的指令mov指令不能用于设置CS、IP的值,8086CPU没有提供这样的功能。8086CPU为CS、IP提供了另外的指令来改变它们的值:转移指令修改CS、IP的指令同时修改CS、IP的内容:jmp段地址:偏移地址jmp2AE3:3jmp3:0B16功能:用指令中给出的段地址修改CS,偏移地址修改IP。修改CS、IP的指令仅修改IP的内容:jmp某一合法寄存器jmpax(类似于movIP,ax)jmpbx功能:用寄存器中的值修改IP。(4)存储单元的内容存储单元的内容 存储
21、单元中所存放的二进制信息称为该存储单元的内容或值,并且规定:一个字节的内容是该字节单元内存放的二进制信息;一个字的内容是该字地址所指向的单元及其后继一个单元的内容拼接而成;一个双字的内容是该字地址所指向的单元及其后三个单元的内容拼接而成。在拼接“字内容”时,我们按“高高低低”的原则来处理,即:高存储单元(地址大的存储单元)的值是“字内容”的高8位,低存储单元(地址小的存储单元)的值是“字内容”的低8位。在拼接“双字内容”时也是如此。8086内存分段管理模式3.存储器存储器存储单元的存储单元的地址地址和和内容内容:存储器以字节(8 bit)为单位存储信息 每个字节单元有一个地址,从 0 编号,顺
22、序加 1 地址用二进制数表示(无符号整数,写成十六进制)一个字要占用相继的两个字节 低位字节存入低地址,高位字节存入高地址 机器以偶地址访问(读/写)存储器 字单元地址用它的低地址来表示 1 0 0 1 1 1 1 1 1000H (1000H)=9F H0 0 1 0 0 1 1 0 1001H 0 0 0 1 1 1 1 0 1002H (1002H)=1E H1 1 0 1 0 1 1 1 1003H (1000H)=269F H (1002H)=D71E H (1001H)=1E26 H 访问两次存储器(1001H)=26 H(1003H)=D7 H存储器存储器的分段:存储器的分段:2
23、0 根地址线:地址范围 00000H FFFFFH机器字长16位:仅能表示地址范围 0000H FFFFH小段:每16个字节为一小段,共有64K个小段 小段的首地址小段的首地址 00000 H 0000F H 00010 H 0001F H 00020 H 0002F H FFFF0 H FFFFF H 段起始地址:小段首地址段的大小:64K 范围内的任意字节存储器的逻辑逻辑分段:存储器存储器64K代码01500H42000H1CD00H0150H4200H1CD0H段寄存器段寄存器CSDSSSES64K堆栈64K数据 64K附加数据B0000HB000H 存储器存储器 8K代码 2K数据 2
24、56堆栈02000H04800H04000H0200H0400H0480HCSDSSS例:(DS)=0400H,EA=1234H,物理地址=16d (DS)+EA =05234HCPU可以用不同的段地址和偏移地址形成同一个可以用不同的段地址和偏移地址形成同一个物理地址物理地址:物理地址物理地址 段地址段地址 偏移地址偏移地址05234H 0400H 1234H 0523H 0004H 0520H 0034H 8086/8088有两个独立的存储空间和I/O地址空间,地址空间为1MB,I/O地址空间为64KB。数据按字节、字或双字存放,存放方式可按对正的双字边界或非对正的双字为边界。逻辑地址(lo
25、gicaladdress)物理地址(physicaladdress)。物理地址=段地址*16+偏移地址地址00001H00008H00007H00006H00005H00004H00003H00002HByte 8Byte 7Byte 6Byte 5Byte 4Byte 3Byte 2Byte 1Word 6Word 4Word 2Word 0Byte 000000HWord 5Word 1物理存储器 双字对齐字对齐 Double word 0Double word 4图3.2 对正的数据字和双字Byte 8图(a)中数据5AF0H存放在对正的双字地址02000H,其中0F0H存放在低字节地址
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- cpu 汇编 第二 寻址 方式
限制150内