第二章微机中的微处理器.ppt_第1页
第二章微机中的微处理器.ppt_第2页
第二章微机中的微处理器.ppt_第3页
第二章微机中的微处理器.ppt_第4页
第二章微机中的微处理器.ppt_第5页
已阅读5页,还剩104页未读, 继续免费阅读

下载本文档

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

文档简介

2010.2.25,1,第二章微机中的微处理器,引言微处理器是组成微计算机系统的核心部件。本章重点讲解8086微处理器,因为它体现了简单微处理器的一般原理,也是学习汇编语言程序设计的基础。主要讨论:微处理器的内部结构、与之配合的存储器组织、I/O组织和寻址方式。,2010.2.25,2,第二章微机中的微处理器,2.18086微处理器的内部结构2.28086的寄存器结构2.38086的存储器组织2.38086的I/O组织2.58086的寻址方式,2010.2.25,3,微处理器的功能:MPU是组成计算机系统的核心部件,它具有运算和控制的功能。具体来讲,它有以下基本功能,支持功能完善的指令系统,进行各种算术逻辑运算,通过程序完成复杂的科学计算。支持各种结构的程序的执行,如程序的分支、循环、嵌套、子程序的调用和返回、中断服务程序等。控制与存储器、外部设备等相连,组成完整的微机系统。,2.1微处理器的内部结构,2.1微处理器的一般结构,2010.2.25,4,微处理器的功能:具体来讲,它有以下基本功能,进行算术运算和逻辑运算;接收存储器和I/O接口送来的数据和发送数据给存储器和I/O接口;暂存少量数据;对指令进行寄存、译码并执行指令所规定的操作;提供整个系统所需的定时和控制信号;响应I/O设备发出的中断请求。,2.1微处理器的内部结构,2.1微处理器的一般结构,2010.2.25,5,微处理器的功能:,从程序设计的角度考虑,CPU必须便于处理:赋值和算术表达式无条件转移条件转移以及关系和逻辑表达式循环数组和其它数据结构子程序输入/输出,2.1微处理器的内部结构,2010.2.25,6,CPU的实际工作就是执行每一条指令。执行每一条指令都可分为三个阶段,即:1.取指令2.分析指令3.执行指令,2.1微处理器的内部结构,取指令:从存储器中读出现行指令,把指令送入CPU中。分析指令:对指令进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。执行指令:进行相应的操作。,2010.2.25,7,3.1.1微处理器的内部结构,串行处理,指令的执行过程:取指令取操作数(如需要)执行指令写入存储器(如需要)。,取指令1,译码1,取数据1,执行1,存结果1,取指令2,译码2,执行2,取指令1,译码1,取数据1,执行1,存结果1,取指令2,译码2,执行2,取指令3,译码3,执行3,存结果3,并行处理,2010.2.25,8,2.18086微处理器的功能结构,2010.2.25,9,总线接口单元(BIU),总线接口单元由下列各部分组成:(1)4个段地址寄存器;CS16位的代码段寄存器;DS16位的数据段寄存器;ES16位的扩展段寄存器;SS16位的堆栈段寄存器;(2)16位的指令指针寄存器IP;(3)6字节的指令队列寄存器;(4)20位的地址加法器;(5)完成与EU通讯的内部寄存器;(6)总线控制逻辑。,取指令时:从存储器指定地址取出指令送入指令队列排队;执行指令时:根据EU命令对指定存储器单元或者I/O端口存取数据。,2010.2.25,10,执行单元(EU),执行单元由下列各部分组成:(1)算术逻辑运算单元(ALU);(2)标志寄存器(FR):(3)通用寄存器组-AX,BX,CX,DX,SP,BP,DI,SI;(4)EU控制器;(5)暂存器。,工作:执行指令,进行全部的算术逻辑运算、完成偏移地址的计算,向BIU提供指令执行结果的数据和偏移地址,并对通用寄存器和标志寄存器进行管理。,2010.2.25,11,2.18086的内部结构,指令和程序执行过程如下图:,取指令1,执行1,取指令2,取数据2,执行2,取指令3,执行3,BIU,EU,2010.2.25,12,2.28086的寄存器结构,2010.2.25,13,2.2.1通用寄存器组,4个16位数据寄存器(存在于EU中):,包括AX,BX,CX,DX。主要功能:(见P14表2.1)1.存放数据2.存放地址,每一个寄存器又可分为两个8位的数据寄存器:AX-AHALBX-BHBLCX-CHCLDX-DHDL16位数据寄存器可存放数据和地址,而8位寄存器只能存放数据,2010.2.25,14,2.2.1数据寄存器,AX累加器,使用频度最高,用于算术、逻辑运算,以及与外设传送信息等;,累加器一般用来存放参加运算的数据和结果。尤其在乘、除法运算、I/O操作中有不可替代的作用。乘法运算:存放结果除法运算:存放商I/O操作:AX(或AL)与I/O端口进行数据通信。,2010.2.25,15,2.2.1数据寄存器,BX基址寄存器,基址寄存器可作数据寄存器还可放内存的逻辑偏移地址,而AX,CX,DX则不能。如:MOVAX,BX但是,如果写成:MOVAX,CX是错误的,2010.2.25,16,2.2.1数据寄存器,CX计数寄存器,计数寄存器做数据寄存器还可以在循环操作中和移位操作中做计数器用。,如:MOVCX,15(循环程序中);给cx赋值为15.循环操作15次,2010.2.25,17,2.2.1数据寄存器,DX,DX做通用数据寄存器还在乘、除法运算、带符号数的扩展指令中有特殊用途。,2010.2.25,18,2.2.1通用寄存器组,地址指针和变址寄存器:,变址寄存器,用于在某些间接寻址方式中存放段内偏移地址的全部或一部分:SI源变址寄存器DI目的变址寄存器串操作类指令中,SI和DI具有特别的功能,指针寄存器用于寻址内存堆栈内的数据:SP堆栈指针,指示栈顶的偏移地址。SP不能再用于其他目的,具有专用目的。BP基址指针,用于在某些间接寻址方式中存放段内偏移地址的一部分。SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址。,2010.2.25,19,BIU设有4个16位段寄存器(可见P18的2.2.3内容),2.2.2段寄存器组,段寄存器用来存放段地址,cpu可通过4个段寄存器访问存储器中4个不同的段(每段64k)。,CS代码段寄存器,存放代码段的段地址SS堆栈段寄存器,存放堆栈段的段地址DS数据段寄存器,存放数据段的段地址ES附加段寄存器,存放附加段的段地址,2010.2.25,20,2.2.3控制寄存器组,指令指针寄存器IP:保存下一条要执行的指令的偏移地址,它与代码段寄存器CS联用,确定下一条指令的物理地址。计算机通过CS:IP寄存器来控制指令序列的执行流程。IP寄存器是一个专用寄存器。,2010.2.25,21,补充内容,无符号数和有符号数原码、反吗、和补码,2010.2.25,22,有符号数的表示方法,二进制数分为:无符号数有符号数,2010.2.25,23,有符号数的表示方法,二进制数分为:无符号数和有符号数,无符号数:所有的二进制数位均为数值位。例如:10000111=135,有符号数:最高位为符号位,后面的所有位为数值位。例如:10000111=-7,2010.2.25,24,有符号数的表示方法,无符号数:所有的二进制数位均为数值位。例如:10000111=135,有符号数:最高位为符号位,后面的所有位为数值位。例如:10000111=-7,2010.2.25,25,有符号数的表示方法,有符号数:,+:用0表示(正数)-:用1表示(负数),用0表示“+”,用1表示“-”。这样的表示方法就是符号数字化。即用数字来表示正负数的符号。,2010.2.25,26,有符号数的表示方法,8位无符号数范围:所有的二进制数位均为数值位。0X25500000000到11111111,8位有符号数的范围:最高位为符号位,后面的所有位为数值位。-128X12710000000到01111111,2010.2.25,27,有符号数的表示方法,有符号数的表示方法:,原码反码补码,2010.2.25,28,有符号数的表示方法,原码,正数的符号用“0”表示,负数的符号用“1”表示,绝对值的编码规则与无符号数编码规则相同。这样的表示方法称为原码表示法。一个数X的原码记作x原,例如:用8位二进制表示:19的原码是:19原=00010011(最高位是符号位)-19的原码是:-19原=10010011,2010.2.25,29,0Xn-2Xn-3X1X0 x0x原=1Xn-2Xn-3X1X0 x0,1.原码,+0原=00000000-0原=10000000+1原=00000001-1原=10000001+127原=01111111=28-1-1-127原=11111111=-(28-1-1),有符号数的表示方法,2010.2.25,30,2.反码,正数的反码:与原码相同;负数的反码:原码的符号位不变,其它各位求反。,例如:用8位二进制表示:19的反码是:19原=00010011,19反=01101100-19的反码是:-19原=10010011,-19反=11101100,2010.2.25,31,2.反码,+0反=00000000-0反=11111111+1反=00000001-1反=11111110+127反=01111111-127反=10000000,2010.2.25,32,3.补码,正数的补码:与原码相同;负数的补码:原码的符号位不变,其它各位求反加1。,例如:用8位二进制表示:19的反码是:19原=00010011,19反=0001001119补=00010011-19的反码是:-19原=10010011,-19反=11101100-19补=11101101,2010.2.25,33,3.补码,+0补=00000000-0补=28|-0|=00000000+1补=00000001-1补=28|-1|=11111111+127补=01111111-127补=28|-127|=10000001,2010.2.25,34,有符号数的表示方法,一个有符号数X,X0x原=x反=x补,X0x反:x原符号位不变,其它各位求反x补=x反+1,练习,2010.2.25,35,3.补码,例:73-2=73+(-2)=71,01001011(73)+11111110(-2)101000111(71),在计算机中,加减法是用补码来运算的。,补码加法,如果符号位有进位,必须舍弃,2010.2.25,36,2.2.3控制寄存器组,标志寄存器(FLAG):状态标志记录程序运行结果的状态信息,许多指令的执行都将相应地设置它。CFZFSFPFOFAF控制标志可由程序根据需要用指令设置,用于控制处理器执行指令的方式。DFIFTF,2010.2.25,37,2.2.3控制寄存器组,标志寄存器(FLAG),2010.2.25,38,进位标志CF:当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF=1;否则CF=0。(无符号数),标志寄存器(FLAG),001110100111110010110110,+,1010101001111100100100110,+,CF=0,CF=1,3AH+7CHB6H,AAH+7CH(1)26H,2010.2.25,39,PF:奇偶标志位,如果操作结果的低8位含有偶数个1,则PF=1;否则CF=0。,标志寄存器(FLAG),010010000110001010101010,+,001000110100010001010010000110010111010101011101,+,PF=1,PF=0,48H+62HAAH,2344H+5219H755DH,2010.2.25,40,AF:辅助进位标志,如果在加法时D3有进位或者减法时D3有借位,则AF=1,否则AF=0。,标志寄存器(FLAG),010010000110001010101010,+,010011000001100101100101,+,AF=0,AF=1,48H+62HAAH,4CH+19H65H,2010.2.25,41,ZF:零标志位,如果运算结果各位都是零,则ZF=1,否则ZF=0。,标志寄存器(FLAG),010010000110001010101010,+,000110010001100100000000,-,ZF=0,ZF=1,48H+62HAAH,19H-19H00H,2010.2.25,42,SF:符号标志位,它总是和结果的最高位相同。(字节操作时是D7,字操作时是D15),标志寄存器(FLAG),010010000110001010101010,+,SF=1,48H+62HAAH,001000110100010001010010000110010111010101011101,+,SF=0,2344H+5219H755DH,2010.2.25,43,溢出标志OF:若算术运算的结果有溢出,则OF=1;否则OF0(有符号数),标志寄存器(FLAG),例如:0011101001111100101101103AH+7CHB6H,产生溢出:OF=1,+,OF=1,1010101001111100100100110AAH+7CH(1)26H,没有溢出:OF=0,+,OF=0,2010.2.25,44,标志寄存器(FLAG),问题:什么是溢出?溢出和进位有什么区别?如何判断是否溢出?,2010.2.25,45,处理器内部以补码表示有符号数。8个二进制位能够表达的整数范围是:-128+12716位表达的范围是:-32768+32767,标志寄存器(FLAG),什么是溢出?,如果运算结果超出了可表达的范围,就是产生了溢出。,有溢出,说明有符号数的运算结果不正确。,2010.2.25,46,两个正数相加结果变成了负数?,溢出:运算结果,超出了8位有符号数所能表示的范围。,补码运算发生溢出情况:1.同号数相加,可能溢出;2.异号数相减,可能溢出。,2010.2.25,47,判断运算结果是否溢出有一个简单的规则:最高位,溢出的判断,标志寄存器(FLAG),1+10,0+01,1-00,0-11,2010.2.25,48,溢出标志OF和进位标志CF是两个意义不同的标志。进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确。,标志寄存器(FLAG),溢出和进位有什么区别?,2010.2.25,49,例1:3AH+7CHB6H,溢出和进位对比,标志寄存器(FLAG),001110103AH011111007CH10110110B6H,+,B6H=128CF=0,无符号数运算:58124182,范围内0255,无进位,有符号数运算:58124182,范围外-128127,有溢出,001110103AH011111007CH10110110B6H,+,B6H补=-74OF=1,有符号数最高位是符号位,2010.2.25,50,溢出和进位对比,标志寄存器(FLAG),例2:AAH+7CH(1)26H,10101010AAH011111007CH10010011026H,+,CF=1,(1)26H=294,无符号数运算:170124294,范围外0255,有进位,有符号数运算:8612428,范围内-128127,无溢出,OF=0,10101010AAH011111007CH10010011026H,+,训练,2010.2.25,51,处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志CF;同时,根据是否超出有符号数的范围设置溢出标志OF。,如何运用溢出和进位,标志寄存器(FLAG),应该利用哪个标志,则由程序员来决定。无符号数运算,影响进位;有符号数运算,则影响溢出位。,2010.2.25,52,可用指令设置。字符串操作时,受它的控制。当DF=0时,执行串操作指令,变址寄存器自动递增;当DF=1时,则变址寄存器地址自动递减。即该位可控制变址寄存器的地址朝增大的方向或减小的方向改变。,DF:方向标志位,标志寄存器(FLAG),2010.2.25,53,可用指令设置当IF=1时,CPU可响应可屏蔽中断请求;当IF=0时,CPU不响应可屏蔽中断请求。,IF:中断允许标志,标志寄存器(FLAG),2010.2.25,54,若TF=1,则CPU处于单步执行指令工作方式。每执行一条指令就会自动产生一次类型1的内部中断。在调试程序的过程中,每执行一条指令,就利用这种中断,来显示所有寄存器的当前值和将要执行的下一条指令。一般情况下,TF=0。只有在调试程序时,可能会用到单步执行时,才设置TF=1。,TF:陷阱标志位,标志寄存器(FLAG),2010.2.25,55,计数制:指用一组固定的数字符号和统一的规则来表示数的方法。,基数:各种进制中数字符号的个数。,权:在位置记数法中,对每一个数位赋以不同的位值。,2.38086的存储器组织,2010.2.25,56,各种数制,2.38086的存储器组织,2010.2.25,57,微计算机的硬件结构(冯.诺依曼结构)从功能或逻辑的角度,微型计算机的硬件由运算器、控制器、存储器、输入设备、输出设备五大部分组成。,运算器,控制器,MPU,存储器,输出设备,I/O接口,输入设备,A.BUS,D.BUS,C.BUS,2.38086的存储器组织,2010.2.25,58,2.38086的存储器组织,2.3.1存储器地址空间和数据存储格式,*B,00000H,00001H,00002H,00003H,FFFFDH,.,FFFFEH,FFFFFH,十六进制地址,存储器,存储器的地址,8086的存储器是以字节(8位)为单位组织的。8086cpu具有20条地址总线,可寻址的存储器地址空间容量为220B,地址(1MB)。,20条地址总线,16条数据总线,2010.2.25,59,2.38086的存储器组织,2.3.1存储器地址空间和数据存储格式,*B,00000H,00001H,00002H,00003H,FFFFDH,.,FFFFEH,FFFFFH,十六进制地址,存储器,存储器的地址,每个存储单元都有一个唯一的地址编号存储器地址其范围是0220-1,(用十六进制表示为00000HFFFFFH),每个存储单元存放一个字节的内容(*B,如10001110B),2010.2.25,60,2.38086的存储器组织,2.3.1存储器地址空间和数据存储格式,两个连续的字节,为一个字:低地址对应低字节,高地址对应高字节(小端方式)。字的地址指低字节的地址。,(00004H)=1122H(00001H)=4455H(00003H)=2233H,23H,00000H,55H,00001H,44H,00002H,33H,00003H,22H,00004H,00010001B,00005H,2010.2.25,61,2.38086的存储器组织,2.3.1存储器地址空间和数据存储格式,字的地址为偶地址,称字的存储是对准的,访问时只需一个总线周期。字的地址为奇地址,称字的存储是未对准的,访问时要两个总线周期(CPU自动完成)。,2010.2.25,62,2.38086的存储器组织,2.3.2存储器分段管理和物理地址的形成,8086CPU有20条地址线,物理地址范围从00000HFFFFFH。最大可寻址空间为2201MB,,*B,00000H,00001H,00002H,00003H,FFFFDH,.,FFFFEH,FFFFFH,十六进制地址,存储器,1M个内存单元,2010.2.25,63,2.38086的存储器组织,2.3.2存储器分段管理和物理地址的形成,提供偏移地址或偏移地址的一部分的寄存器BX、IP、SP、BP、SI和DI及ALU都是16位,0000HFFFFH,其寻址范围是64KB。,*B,0000H,0001H,0002H,0003H,FFFDH,.,FFFEH,FFFFH,十六进制地址,存储器,64K个内存单元,8086CPU采用地址分段方法,将寻址范围扩大到1MB。,2010.2.25,64,2.38086的存储器组织,2.3.2存储器分段管理和物理地址的形成,8086CPU将1MB空间分成许多逻辑段(Segment),每个段最大限制为64KB,段地址的低4位为0000B,即*0H。,00000H,00001H,00002H,00003H,0FFFDH,0FFFEH,0FFFFH,一个逻辑段,共64K个单元,00010H,00011H,00012H,00013H,1000DH,1000EH,1000FH,下一个逻辑段,共64K个单元,2010.2.25,65,2.38086的存储器组织,00000H,00010H,00020H,0FFFFH,存储器,1000FH,1001FH,段0,段1,段2,2010.2.25,66,2.38086的存储器组织,2.3.2存储器分段管理和物理地址的形成,8086对逻辑段的要求是:段地址低4位均为0,每段最大不超过64KB。每个段不要求必须是64KB,段与段可以重叠。,1MB空间最多能分成多少个段?,每隔64K个存储单元开始一个段,所以1MB最少有:22.21616个段,每隔16个存储单元就可以开始一个段,所以1MB最多有:22.1621664K个段,1MB空间最少能分成多少个段?,2010.2.25,67,基本概念物理地址起始地址段地址偏移地址逻辑地址,2.3.2存储器分段管理和物理地址的形成,2.38086的存储器组织,2010.2.25,68,2.3.2存储器分段管理和物理地址的形成,2.38086的存储器组织,00000H,00001H,00002H,00003H,FFFFDH,.,FFFFEH,FFFFFH,十六进制地址,存储器,物理地址存储器有1M个内存单元,每个内存单元都有自己的地址编码,这个编码在所有的内存单元中是唯一的,这些地址编码就是存储单元的物理地址。其范围是00000HFFFFFH。物理地址:存储单元的实际地址编码。,2010.2.25,69,2.3.2存储器分段管理和物理地址的形成,2.38086的存储器组织,00000H,00001H,00002H,00003H,FFFFDH,.,FFFFEH,FFFFFH,十六进制地址,存储器,起始地址在存储器中,每个逻辑段的首地址就是起始地址,起始地址是个物理地址,20位。如右图:起始地址:00000H,2010.2.25,70,2.3.2存储器分段管理和物理地址的形成,2.38086的存储器组织,段地址一个段的起始地址(物理地址)的高16位就是该段的段地址。,00010H,00011H,00012H,00013H,1000DH,1000EH,1000FH,一个逻辑段,共64K个单元,如右图:此逻辑段起始地址:00010H段地址:0001H段地址由段寄存器(CS,DS,SS,ES)提供,2010.2.25,71,2.3.2存储器分段管理和物理地址的形成,2.38086的存储器组织,偏移地址在一个段内,相对于段起始地址的偏移量,就是段内偏移地址。其范围:0000HFFFFH,都是16位。,00010H,00011H,00012H,00013H,1000DH,1000EH,1000FH,物理地址,偏移地址,0000H,0001H,0002H,0003H,FFFDH,FFFEH,FFFFH,如右图(00010H1000FH)红色内存单元偏移地址:0000H黄色内存单元偏移地址:0001H最后一个内存单元偏移地址:FFFFH,2010.2.25,72,2.3.2存储器分段管理和物理地址的形成,2.38086的存储器组织,00010H,00011H,00012H,00013H,1000DH,1000EH,1000FH,物理地址,偏移地址,0000H,0001H,0002H,0003H,FFFDH,FFFEH,FFFFH,逻辑地址其格式为段地址:偏移地址。,如右图:黄色内存单元的逻辑地址为:0001:0003段地址偏移地址,2010.2.25,73,2.38086的存储器组织,2.3.2存储器分段管理和物理地址的形成,对应每个物理存储单元都有一个唯一的20位编号,即物理地址。00000HFFFFFH,物理地址的形成:,段地址*16偏移地址20位物理地址,第四个内存单元的物理地址:(逻辑地址为0001:0003)物理地址=0001H*10H+0003H=00013H,2010.2.25,74,物理地址的形成过程,2010.2.25,75,2.38086的存储器组织,2.3.3信息的分段存储与段寄存器的关系,存储器中的信息可分为:程序代码数据计算机的状态,2010.2.25,76,2.38086的存储器组织,2.3.3信息的分段存储与段寄存器的关系,存储器可分为:程序区、数据区、堆栈区。程序区:存储程序的指令代码数据区:存储原始数据、中间数据和最后结果堆栈区:存储需要压入堆栈的数据或状态信息。,2010.2.25,77,2.38086的存储器组织,2.3.3信息的分段存储与段寄存器的关系,段寄存器的分工:代码段寄存器CS:划定并控制着程序区。数据段寄存器DS或附加段寄存器ES:控制着数据区。堆栈段寄存器SS:对应着堆栈存储区。,2010.2.25,78,2.38086的存储器组织,2.3.3信息的分段存储与段寄存器的关系,一个完整的程序分为:代码段、数据段、堆栈段、附加段,当调用程序时,就把:代码段调入程序区,数据段和附加段调入数据区,堆栈段调入堆栈区。,代码段:存放程序的指令序列数据段:存放当前运行程序所用的数据堆栈段:存放需要压栈的信息附加段:附加的数据段,如需要则开辟附加段,1、代码段、数据段、堆栈段和附加段对应的是程序;2、程序区、数据区、和堆栈区对应的是存储区;3、段寄存器:保存段的段地址,2010.2.25,79,2.38086的存储器组织,2.3.3信息的分段存储与段寄存器的关系,dataSEGMENT;数据段firstDB12h;调入数据区dataENDSstack1SEGMENTstack;堆栈段DW30DUP(0);调入堆栈区stack1ENDScodeSEGMENT;代码段ASSUMECS:code,DS:data,SS:stack1start:MOVAX,dataMOVDS,AX,.MOVAH,4chINT21hcodeENDSENDstart;调入代码区,2010.2.25,80,2.38086的存储器组织,2.3.3信息的分段存储与段寄存器的关系,段寄存器,CS:存放代码段的段地址DS:存放数据段的段地址SS:存放堆栈段的段地址ES:存放附加段的段地址,2010.2.25,81,程序员如何分配各个逻辑段?,2.38086的存储器组织,2.3.3信息的分段存储与段寄存器的关系,程序的指令序列必须安排在代码段;程序使用的堆栈一定在堆栈段;程序中的数据默认是安排在数据段,也经常安排在附加段,尤其是串操作的目的区必须是附加段。,数据的存放比较灵活,实际上可以存放在任何一种逻辑段中。,2010.2.25,82,2.38086的存储器组织,下表列出了各类型访问存储器时使用的段寄存器和段内偏移地址的来源。,2010.2.25,83,各个逻辑段独立示意图,如右图:当前段可容纳64KB代码,64KB堆栈,128KB数据,即共256KB。,2010.2.25,84,各个逻辑段重叠示意图,段可以部分重叠,若不用附加段,则ES和DS重合。,2010.2.25,85,微计算机的硬件结构(冯.诺依曼结构)从功能或逻辑的角度,微型计算机的硬件由运算器、控制器、存储器、输入设备、输出设备五大部分组成。,运算器,控制器,MPU,存储器,输出设备,I/O接口,输入设备,A.BUS,D.BUS,C.BUS,2.58086的I/O组织,2010.2.25,86,2.58086的I/O组织,I/O接口与CPU之间的通信是利用称为I/O端口的寄存器来完成的。,I/O端口,I/O接口1,I/O端口,I/O接口2,I/O端口,I/O端口,.,.,I/O端口,I/O端口,每个端口都是一个8位的寄存器(相当于内存单元)。系统为每个端口分配一个地址,各个端口有唯一的I/O地址与之对应,是单独编址的。,2010.2.25,87,2.58086的I/O组织,任何两个编号相邻的8位I/O端口可以组成一个16位I/O端口,类似于存储器的字。8086CPU地址总线的低16位用来对8位I/O端口寻址,I/O地址空间为65535,即可访问65535个8位的I/O端口,寻址范围是064K。I/O地址线和存储器地址线是共用的,但利用控制总线中的一些控制信号可以区分是I/O存取还是存储器存取。,2010.2.25,88,2.68086的寻址方式,指令由操作码和操作数两部分组成:,操作码:说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分。,操作数:指令执行的参与者,即各种操作的对象。有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有3个甚至4个操作数。,2010.2.25,89,2.68086的寻址方式,MOVdest,src;destsrc;MOV指令的功能是将源操作数src;传送至目的操作数dest,MOVAL,05H;AL05HMOVBX,AX;BXAXMOVAX,SI;AXDS:SIMOVAX,BP+06H;AXSS:BP+06HMOVAX,BX+SI;AXDS:BX+SI,指令的助记符格式:操作码操作数1,操作数2;注释,2010.2.25,90,2.68086的寻址方式,操作数一般存在的地方:1.指令中;MOVAX,0012H2.cpu内部寄存器中;MOVBX,AX2.存储器中;MOVAX,0050H,8086的寻址方式有:立即数寻址方式寄存器寻址方式存储器寻址方式,寻址:寻找操作数的地址寻址方式:寻找操作数地址的方法,2010.2.25,91,2.68086的寻址方式,具体的寻址方式:1.立即数寻址2.寄存器寻址2.直接寻址4.寄存器间接寻址5.寄存器相对寻址6.基址变址寻址7.基址变址且相对寻址,2010.2.25,92,1立即数寻址,指令中的操作数直接存放在指令中,紧跟在操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中)。,可以是8位数i8(00HFFH),可以是16位数i16(0000HFFFFH)。,立即数寻址方式常用来给寄存器赋值。MOVAL,05H;AL05HMOVAX,0102H;AX0102H,2010.2.25,93,2寄存器寻址,MOVAX,1234H;AX1234HMOVBX,AX;BXAX,操作数存放在CPU的内部寄存器中,8位寄存器R8:AH/AL/BH/BL/CH/CL/DH/DL16位寄存器R16:AX/BX/CX/DX/SI/DI/BP/SP4个段寄存器SEG:CS/DS/SS/ES,2010.2.25,94,3存储器寻址,存储器寻址:操作数在存储器中。指令中给出操作数的主存地址信息(偏移地址,称之为有效地址EA),而段地址在默认的段寄存器中或用段超越前缀指定的段寄存器中。,首先获取操作数的偏移地址EA获取段地址通过计算,来获取操作数的物理地址物理地址=段地址*16+EA,2010.2.25,95,存储器寻址,3直接寻址方式,有效地址在指令中直接给出,默认的段地址在DS段寄存器。,MOVAX,2000H;AXDS:2000H;EA=2000H,假如(DS)=3200H,EA=2000H操作数的物理地址=3200*10H+2000H=34000H,2010.2.25,96,存储器寻址,4寄存器间接寻址方式,有效地址EA存放在基址寄存器BX,或变址寄存器SI、DI。段地址对应:BX/SI/DI寄存器默认是DS,MOVAX,BX;AXDS:BX;EA=(BX),假如(DS)=3200H,(BX)=2000H那么:EA=(BX)=2000H操作数的物理地址=3200*10H+2000H=34000H,2010.2.25,97,存储器寻址,5寄存器相对寻址方式,有效地址是寄存器内容与有符号8位或16位位移量之和,寄存器可以是BX或SI、DI。有效地址(BX)/(SI)/(DI)8/16位位移量段地址对应BX/SI/DI寄存器默认是DS,2010.2.25,98,存储器寻址,寄存器相对寻址方式,MOVAX,DI+06H;AXDS:DI+06H;EA=(DI)+06H,假如(DS)=3200H,(DI)=2000H那么:EA=(DI)+06H=2006H操作数的物理地址=3200*10H+2006H=34

温馨提示

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

评论

0/150

提交评论