汇编语言程序设计(清华大学沈美明)第2章课件与答案.ppt_第1页
汇编语言程序设计(清华大学沈美明)第2章课件与答案.ppt_第2页
汇编语言程序设计(清华大学沈美明)第2章课件与答案.ppt_第3页
汇编语言程序设计(清华大学沈美明)第2章课件与答案.ppt_第4页
汇编语言程序设计(清华大学沈美明)第2章课件与答案.ppt_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

1, 计算机系统 中央处理机 存储器 外部设备,第2章 80x86计算机组织,2,1. 计算机系统(硬件+软件),硬件系统是软件运行的物理平台。,软件:系统软件 用户(应用)软件,为了运行管理和维护计算机而编制的各种程序的总和。,3,计算机系统的组成(通俗),4,系统软件,系统软件是计算机软件中非常重要的一组程序,这些程序是用户使用机器时,为用户程序的管理、准备和执行工作所必需的软件。,5,系统软件的核心是操作系统,它是系统程序的集合,主要作用是对系统的硬件、软件资源进行合理的管理,为用户创造方便、有效和可靠的计算机工作环境。 操作系统的主要部分是常驻监督程序(monitor),只要一开机它就存在于内存中,它可以从用户接收命令,并使操作系统执行相应的动作。 I/O驱动程序用来对I/O设备进行控制或管理。当系统程序或用户程序需要使用I/O设备时,就调用I/O驱动程序来对设备发出命令,完成CPU和I/O设备之间的信息传送。 文件管理程序用来处理存储在外存储器中的大量信息,它可以和外存储器的设备驱动程序相连接,对存储在其中的信息以文件的形式进行存取、复制及其他管理操作。 文本编辑程序用来建立、输入或修改文本,并使它存入内存储器或大容量存储器中。文本是指由字母、数字、符号等组成的信息,它可以是一个用汇编语言或高级语言编写的程序,也可以是一组数据或一份报告。,6,编译程序:我们知道,计算机是通过逐条地执行组成程序的指令来完成人们所给予的任务的,所以指令就是计算机所能识别并能直接加以执行的语句,当然它是由二进制代码组成的。这种语言称为机器语言,人们用这种语言来编写程序显然是很不方便的。为了克服机器语言编程的不方便,人们就想出了用助记符表示指令的意思来编写程序,然后使用一个程序对其解释和翻译,将其转变为机器语言程序。在此过程中,用来将其它语言编制的程序转变为机器语言程序的解释和翻译程序称为编译程序。这种助记符语言就形成了我们现在普遍使用的汇编语言和高级语言程序;汇编语言是一种符号语言,它和机器语言几乎一一对应,但书写时却使用由字符串组成的助记符。例如,加法在汇编语言中一般是用助记符ADD表示,而机器语言则用二进制代码来表示。显然,相对于机器语言来说,汇编语言是易于为人们所理解的。,7,汇编程序就是用来把由用户编制的汇编语言程序翻译成机器语言程序的一种系统程序。微机中常用的汇编程序有:MASM、TASM。 高级语言是脱离开机器指令使用人们更加容易理解的方式来编写程序,当然它们也要翻译成机器语言才能在机器上执行。高级语言的翻译程序有两种方式:一种是先把高级语言程序翻译成机器语言程序(或先翻译成汇编语言,然后再由汇编程序再次翻译成机器语言),然后再在机器上执行,这种翻译程序称为编译程序(compiler),多数高级语言如PASCAL、FORTRAN、C、C+等都采用这种方式。另一种是直接把高级语言程序在机器上运行,一边解释一边执行,这种翻译程序称为解释程序(interpreter),如BASIC就经常采用这种方式。 总之,系统程序中的翻译程序包括汇编程序、解释程序和编译程序。,8,连接程序(linker)用来把要执行的程序与库文件或其他已经翻译好的子程序(能完成一种独立功能的程序模块)连接在一起,形成机器能执行的程序。 装入程序(loader)用来把程序从外存储器传送到内存储器,以便机器执行。例如,计算机开机后就需要立即启动装入程序把常驻监督程序装入存储器,使机器运转起来。又如,用户程序经翻译和连接后,由连接程序直接调用装入程序,把可执行的用户程序装入内存以便执行。 调试程序(debug)是系统提供给用户的能监督和控制用户程序的一种工具。它可以装入、修改、显示或逐条执行一个程序。 系统程序库(system library)和用户程序库(user library ),各种标准函数、子程序和一些文件的集合称为程序库,它可以被系统程序或用户程序调用。操作系统还允许用户建立程序库,以提高不同类型用户的工作效率。,9,2. CPU(微处理器),自2007年开始到现在,CPU的集成度已经发展到由在一片单晶硅上集成一个核发展到在其上集成多个核的水平,不用说运算速度就会呈几何倍率增长。,10,市场上常见的CPU由两个生产厂商提供:Intel公司和AMD公司,AMD的市场份额较小,同类型CPU的功耗也较大。从通用、易用角度考虑可选Intel CPU;从多媒体、三维游戏功能及性价比考虑就选AMD CPU。,CPU字长:CPU内部各寄存器之间一次操作能处理的二进制数的位数。 CPU位宽:CPU接口总线上一次能够传递的二进制数据位数。 CPU外频:CPU接口总线上的工作频率。一般与内存总线频率相同 。 CPU主频:CPU内核(内部)电路的实际工作频率。 CPU地址总线宽度:地址总线宽度反映了CPU对存储空间管理能力。 生产工艺技术:通常用微(纳)米数字来描述生产、加工CPU的精度。,2.1 CPU性能的主要技术指标,11,2.2 处理器(CPU)的结构,实际上是一些专用寄存器组,控制整个计算机所有部件的工作,就是一些通用寄存器,用来暂存CPU执行指令前后的相关数据。,12,13,14,2.2.1 控制器的功能及组成,CPU的控制器控制计算机中各部件协调工作,是计算机的神经中枢和指挥中心,计算机在它的控制下可以有条不紊的工作,自动执行程序。 控制器的具体功能: 依次从存储器中取出指令,翻译指令、分析指令、并向执行该操作的相关部件发出控制信号,指挥计算机各部件协同工作。 控制器包含的组件: 程序计数器(PC):对指令计数,保证按程序要求的顺序 读取指令 指令寄存器(IR):在指令执行期间,暂存指令 指令译码器(ID):识别指令的功能,分析操作要求 时序控制电路:生成时序信号,协调各部件的工作 微操作控制电路:产生各种控制操作命令,15,2.2.2 80x86寄存器组,80X86CPU寄存器可以分为程序可见的寄存器和程序不可见的寄存器两大类。所谓程序可见的寄存器是指在汇编语言程序设计中可用的寄存器,它们可由指令来指定使用。而程序不可见的寄存器则是指一般应用程序设计中不能使用,而是由操作系统所用的寄存器。在这里我们主要介绍程序可见得寄存器。 程序可见寄存器还可以分为通用寄存器、专用寄存器和段寄存器3类。下面我们来分别加以介绍。,16,80x86的可见寄存器结构(16个),17,1)段寄存器,段寄存器实际也是一种专用寄存器,它们专用于存储器寻址时,用来直接或间接地存放段地址。段寄存器的长度都为16位,在80286以前的处理器中,只有代码段(CS)、数据段(DS)、堆栈段(SS)和附加数据段(ES)4个寄存器。从80386起,增加了FS和GS两个段寄存器,它们也属于附加数据段的段寄存器。,18,2)通用寄存器,从80X86寄存器组结构图中可以看出,在阴影区以外的寄存器是8086/8088/80286所具有的寄存器,它们都是16位寄存器。其中AX、BX、CX、DX为数据寄存器,用来暂时存放计算过程中所用到的操作数、结果或其它信息。它们都可以字形式(16位)访问,也可以字节(8位)的形式访问。这4个寄存器都是通用寄存器,但它们又可用于各自的专用目的。 SP、BP、SI、DI四个16位寄存器也可以像数据寄存器一样在运算过程中暂存操作数,但它们只能以字(16位)为单位使用。而它们更经常的用途是在存储器寻址时,提供偏移地址。因此,它们被称为指针或变址寄存器。,19,AX(accumulator)作为累加器用,它是算术运算的主要寄存器。在乘、除等指令中被指定用来存放操作数。另外,所有的I/O指令都使用这一寄存器与外部设备传送信息。 BX(base)可以作为通用寄存器使用。但在涉及计算存储器地址时,它经常用作基址寄存器。因此,它被称为基址寄存器。 CX(count)可以作为通用寄存器使用。但在涉及计数时,常用来保存计数值,如在移位指令、循环(loop)和串处理指令中用作隐含的计数器。因此,它被称为计数寄存器。 DX(data)可以作为通用寄存器使用。但一般在作双字长运算时,把DX和AX组合在一起存放一个双字长数,而且DX用来存放高位字,AX用来存放低位字。此外,在对某些I/O操作时,DX也可用来存放I/O的端口地址。 SP(stack pointer)称为堆栈指针寄存器,用来指示堆栈段顶的偏移地址。,20,BP(base pointer )称为基址指针寄存器,在基本数据传送指令中,它可以与堆栈段寄存器SS联用来确定堆栈段中的某一存储单元地址,实现对堆栈进行访问。 一般SP用来指示堆栈段顶的偏移地址,而BP可作为堆栈区内的一个基地址(相对栈底偏移量)来访问堆栈中的数据。 DI(destination index)称为目的变址寄存器。一般与附加数据段寄存器ES联用,来确定附加数据段中某一存储单元的地址。 SI(source index)称为源变址寄存器。一般与数据段寄存器DS联用,来确定数据段中某一存储单元的地址。 SI和DI这两个变址寄存器都具有自动增量和自动减量的功能,所以用于变址寻址是很方便的。在串处理指令中,SI和DI作为隐含的源变址和目的变址寄存器,此时SI和DS联用,DI和ES联用,分别达到在数据段和附加数据段中寻址的目的。,21,对于80386及其后继机型,上面所介绍的通用寄存器它们都是32位的,而且名字分别为EAX、EBX、ECX、EDX、ESP、EBP、EDI和ESI。它们也可以用来保存不同宽度的数据,如可以用EAX保存32位数据,用AX保存16位数据,用AH或AL保存8位数据。上述8个通用寄存器可以双字的形式被访问或对其低16位以字的形式被访问,其中EAX、EBX、ECX和EDX的低16位还可以字节的形式被访问,像上面EAX所说明的。当这些寄存器以字或字节形式被访问时,不被访问的其它部分不受影响,如访问AX时,EAX的高16位是不受影响。,22,此外,这8个通用寄存器还可用于其它目的。在8086/8088和80286中只有4个(SP、BP、SI、DI)指针和变址寄存器以及BX寄存器可以存放偏移地址,用于存储器寻址。但在80386及其后继机型中,所有32位通用寄存器既可以存放数据,也可以存放地址。也就是说,这些寄存器都可以用于存储器寻址。但在这8个通用寄存器中,每个寄存器的专用特性与8086/8088和80286的AX、BX、CX、DX、SP、BP、DI、SI是一一对应的。如EAX专用于乘、除法和I/O指令,ECX用于计数,EDI和ESI作为串处理指令专用的地址寄存器等。,23,3)专用寄存器,8086/8088和80286的专用寄存器包括IP、SP和FLAGS 3个16位寄存器。,A、IP(instruction pointer)为指令指针寄存器,它用来存放代码段中的偏移地址。在程序运行的过程中,它始终指向下一条要执行指令首地址的偏移值,IP与段寄存器CS联用确定下一条指令的物理地址。当这一物理地址送到存储器后,控制器可以取得下一条要执行的指令,而控制器一旦取得这条指令就马上修改IP的内容,使它指向下一条指令首地址的偏移值。可见,计算机就是用IP寄存器来控制指令序列的执行流程。 B、SP为堆栈指针寄存器,它与堆栈段寄存器SS联用来确定堆栈段中栈顶的地址,也就是说SP用来存放栈顶的偏移地址。 C、FLAGS为标志寄存器,又称为程序状态寄存器(PSW)。这是一个存放条件码标志、控制标志和系统标志的寄存器。,24,8086 标志寄存器 ( FLAGS / PSW ),25,下面介绍各标志位的产生及应用: 条件码标志:用来记录程序中运行结果的状态信息,它们的值是根据有关指令的运行结果由CPU自动设置的。编程中由于这些状态信息往往被用作为后续条件转移指令的转移控制条件,所以称为条件码。它包括标志寄存器字的以下六位: 溢出标志(OF):在运算过程中,如操作数或者运算结果超出了 机器能表示的范围称为溢出。有溢出发生时,该位为1。 符号标志(SF):记录运算结果的符号,结果为负时,该位置1。 零标志(ZF):运算结果为零时,该位置1。 进位标志(CF):记录运算时从最高有效位产生的进位值。如执 行加法指令时,最高有效位有进位时,该位置1。 辅助进位标志(AF):记录运算时第3位(半个字节)产生的进 位值。如执行加法指令时,第3位有进位时,该位置1。 奇偶标志(PF):用来为机器中传送信息时检验数据错误提供检 验条件,当结果操作数中1的个数为偶数时,该位置1。,26,控制标志位:在8086中就是方向标志(DF),在串处理指令中用 来控制处理信息的方向。当DF位为1时,每次操作后使 变址寄存器SI和DI减小,这样就使串处理从高地址向低 地址方向处理。当DF位为0时,则使SI和DI增大,使串 处理从低地址向高地址方向处理。 系统标志位:可以用于I/O、可屏蔽中断、程序调试、任务切换和系统工作方式等的控制。一般应用程序不必关心或修改这些位置的状态信息,只有系统程序员或需要编制低层I/O设备控制等程序时才需要访问其中的有关位信息。常用的有陷阱标志和中断标志这两位。 陷阱标志(TF):用于程序调试时的单步操作方式。当TF位为1 时,单步跟踪指令,即每条指令执行完后产生陷阱,由 系统控制计算机;当TF位为0时,CPU正常工作,不产 生陷阱。,27,中断标志(IF):当IF位为1时,允许CPU响应可屏蔽中断请求, 否则关闭中断(即不响应中断请求)。 在调试程序DEBUG中提供了测试标志位的手段,它用符号表示某些标志位的值。见P24的表2.2。,28,80x86的标志寄存器 (P.23),29,8086/8088寄存器组(功能分类),30,3.存储器,31,3.1 内存的管理,存储单元的内容和地址:, 存储器以字节(8 bit)为编址单位 每个字节单元都有唯一的地址编码 单元地址用无符号整数来表示(编程用十六进制表示) 一个字(两个字节长度)要占用相继(邻)的两个字节 低位字节存入低地址,高位字节存入高地址 所存字内容的单元地址用它的低字节地址来表示 双字(四个字节长度)要占用相继(邻)的四个字节 低位字存入低地址区,高位字存入高地址区(字节参考字) 双字的单元地址也是用它的低字节地址来表示 机器(16、32位机)以偶地址访问(读 / 写)存储器,对应于每个记忆单元,对应于每个记忆体,32,例: 字节数:34H,12H, 字数:1234H,7856H, 双字数:78561234H,00000H,: : : : :,: : :,33,3.2 内存的寻址方式,从微处理器(CPU)发展的历史来看,80x86系列芯片管理存储器的模式可分为两种形式:A、实模式存储器寻址,B、保护模式存储器寻址。 实模式工作就是为8086/8088而设计的工作方式,它要解决的问题就是在16位字长的机器里怎样提供20位地址的问题,而解决的办法就是采用存储器地址分段的方法。它也是单任务模式。 保护模式工作方式的引入有两个原因:1、实模式的寻址空间仅为1MB,对后继的80286、386等芯片所提供的大于16MB甚至达到4GB以上的寻址空间能力,这显然是不能适应;2、随着芯片工作性能的增强,微机系统的多任务处理功能成为不可缺少的能力。所谓多任务处理能力就是多个应用程序能同时在同一台计算机上运行,而且它们之间必须相互隔离,使一个应用程序中的缺陷或故障不会破坏系统,也不会影响其他应用程序的运行。,34,存储器的分段:,20 根地址线:表示地址范围 00000H FFFFFH (1MB) 16位机器字长:仅能表示地址范围 0000H FFFFH (64KB) 小段:每16个字节为一小段,对1MB可分64K个小段 小段的物理首地址 物理末地址 1 00000 H 0000F H 2 00010 H 0001F H 3 00020 H 0002F H 64K FFFF0 H FFFFF H 实模式实际寻址中: 段起始地址:小段首地址之一,而不一定要连续取。 段的大小: 64K 范围内的任意字节。,3.2.1 实模式存储器寻址,35,实模式存储器物理地址的逻辑地址表示与寻址计算,实模式20位物理地址是由16位段地址和16位偏移地址表示。段地址就是每一段的起始地址(又称段基地址),它必须是小段的首地址之一,故段地址折合成20位物理地址时低4位一定是0,当用16位逻辑地址表示时则为任一16位二进制自然数。偏移地址则是指在段内相对于段起始地址的偏移值,也是用任一16位自然数表示。,36,例:(DS) = 2100H, (BX) = 0500H (PA) = 21000H+0500H = 21500H,37,存储器的逻辑分段:,在8086和286中,用CPU的四个段寄存器来管理存储器,它被一个运行的程序分为四个基本段来使用,段寄存器组里的每个寄存器可以确定一个段的起始地址,而这些段则各有其用途。,从这个例子来看,内存空间的浪费很大! 实际编程时是不提倡的。一般最大段也只有64KB,因此,相邻段寄存器的差值只能在0100H以内选择。,38,例:假如代码段中的程序占有8KB(2000H)存储区,数据段占有2KB(800H)存储区,堆栈段只占有256个字节的存储区,并无附加数据段。这时,存储区域的段寄存器就可采用下面的方法来设置。,39,从上图中可以看出,代码的区域虽可是02000H11FFFH,但由于程序区只需8KB,所以程序区结束后的第一个小段的首地址就作为数据段的起始地址。也就是说,在这里代码段和数据段可以重叠在一起。当然每个存储单元的内容是不允许发生冲突的,所谓的“重叠”只是指每个段区的大小允许根据实际需要来分配,而不一定要占有64KB的最大段空间。实际上,段区的分配工作是由操作系统完成的。但是,系统允许程序员在必要时可指定所需占用的内存区,指定方法将在第4章中说明。 如果一个程序中的四个段都在64KB的范围之内,而且程序运行时所需要的信息都在本程序所定义的区段之内,那么程序员只要在程序的首部设定各寄存器的值就可以了。如果程序的某一段(例如数据段)在程序运行过程中会超过64KB空间,或者程序中可能访问除本身四个段以外的其它段区的信息,那么在程序中必须动态地修改地址寄存器的内容,以保证所获得的信息的正确性,并不会因段区的划分而限制了程序空间。,40,作业,Page 33 2.1 2.5,41,3.2.2 保护模式存储器寻址,在实模式存储器寻址时,程序员只要在程序中给出存放在段寄存器中的段地址并在指令中给出偏移地址,机器就会自动用段地址左移4位再加上偏移地址的方法,求得所选存储单元的物理地址,从而取得所要的存储单元内容。因此,程序员在编程时并未直接指定所选存储单元的物理地址,而是只给出了一个逻辑地址(即段地址偏移地址),由CPU自动运算出所选内存的物理地址。 在保护模式存储器寻址中,仍然要求程序员在程序中指定逻辑地址,只是CPU采用另一种比较复杂、或者说比较间接的方法来求得相应的物理地址。因此,对程序员编程来说,并未增加复杂性。 在保护模式下,逻辑地址由选择器和偏移地址两部分组成,选择器存放在段寄存器中,选择器不能直接表示段基地址,而由操作系统通过一定的方法取得段基地址,再和偏移地址相加,从而求得所选存储单元的物理地址。保护模式和实模式寻址的另一区别是:偏移地址为32位长,最大段长可从64KB扩大到4GB。,42,1、保护模式下80x86的段地址转换过程: 保护模式下存储器寻址与实模式下的核心差异就是求取段地址方法不同。在保护模式下存储器中除包含程序和数据信息外,还包含有存储器的段管理信息,这些管理信息用描述符表来表述,一个描述符中包括着段的大小、段在存储器中的位置及其控制和状态信息。一个描述符由基地址、界限、访问权和附加字段四部分组成。基地址部分用来指定段的起始地址;界限部分存放着该段的段长度;访问权部分用来说明该段在系统中的功能,并给出访问该段的一些控制信息;附加字段部分在386及其后继机型中存在,它用来表示该段的一些属性。描述符的内容是由系统设置的,而不是由用户建立的。 因此,要想得到段地址必须先在描述符表中找到对应的描述符,这样才能得到段地址信息。,43,2、保护模式下的80x86寻址过程,支持多任务处理功能 支持虚拟存储器特性,44,3.3 堆栈(Stack),3.3.1 堆栈的构造 1)堆栈的构成形式与功能: 堆栈是一种特殊的数据存储形式,有两种构成形式:一种是硬堆栈,即用寄存器组来实现的;另一种是软堆栈,即用主存的一部分空间作堆栈。用堆栈存储数据的运行方式为先进后出,堆栈的操作数只能从一个口进行读或写。堆栈主要用于暂存数据以及在“过程”调用或处理中断服务时暂存断点信息。 2)构造堆栈: 现在通常采用软堆栈,即由程序设计人员用程序在存储器中划出一块存储区作为堆栈。堆栈区最大地址的字存储单元为堆栈底部,叫栈底(Bottom)。在堆栈中存放的数据或断点信息从这里开始,且逐渐向地址小的方向“堆积”。在数据操作过程中,存放最后一个信息的存储单元(即已存放信息的最小地址单元)为堆栈顶部,叫栈顶(TOP)。栈顶是随着存放信息的多少而变的。,45,3.3.2 8086堆栈的组织 在8086结构里,堆栈结构与普通的堆栈相同,栈底为堆栈空间的高地址单元,栈顶为低地址单元。数据进栈后,栈顶向低地址方向浮动;数据出栈后,栈顶向高地址方向调整。 一个16位数据进栈的规律是:高位字节存入高地址单元,低位字节存入低地址单元。 一个16位数据出栈的规律是:低位字节弹到目标操作数低位,高位字节弹到目标操作数据高位。 为了指示栈顶的当前位置,用SP存放栈顶的有效地址。 堆栈是按字组织的,即每次在堆栈中存取数据均是两个字节,数据在堆栈中存放的格式如下图:,由于堆栈顶部是浮动的,为了指示现在堆栈中存放数据的位置,通常设置一个指针堆栈指针SP(Stack Pointer),它始终指向堆栈的顶部。,46,3.3.3 堆栈操作 1)设置堆栈: 堆栈的设置主要是对堆栈段寄存器SS和堆栈指针SP的赋值。在用户源程序中通常安排一个段为堆栈段。如: SEGMENT PARA STACK ;说明本段为堆栈段 DW 100 DUP(0) ;预留100个字的存储空间 ENDS ;堆栈定义段结束语句 2)进栈: 进栈(指令为PUSH)就是把数据压人堆栈。压入堆栈的数据可以是段寄存器内容,也可以是通用寄存器内容或内存操作数等。进栈操作如下程序段所示。,47,例如: PUSH AX PUSH DS PUSH DATA_WORD PUSHF ;把标志寄存器内容压人堆栈 3)出栈 出栈(指令为POP)就是从堆栈顶部弹出一个字送回通用寄存器、段寄存器或者字存储单元,如下程序段所示。 例如: POP AX POP DX POP DATA_WORD POPF ;从堆栈弹出的内容送回标志寄存器,48,3.4 存储器的逻辑分段的特点,优点: 允许程序在存储器内重定位; 允许实模式程序在保护模式下运行; 有利于程序和数据的分离。,存储器分段的方法虽然给程序设计带来一定的麻烦,但它可以扩大存储空间,而且对于程序的再定位也很方便。,49,50,4. 系统总线,总线是部件之间进行信息或数据交换操作的通道。 80x86计算机的系统总线按功能分为3类: 数据总线 地址总线 控制总线 4.1 数据总线 数据总线是用来传递数据的,其宽度定义了CPU在每个内 存周期所能存取二进制数据的位数。一般总线宽度与系统 使用的CPU有关。 80x86系列CPU的数据总线宽有8位、16位、32位或64位。 这也就是“为什么通常的数据存取是以8位、16位、32位 或64位进行的”。 数据总线越宽,数据处理能力就越强。 具有N位数据总线并不意味着CPU只能处理N位数据。,在这些总线上出现的数据各有自己的属性,51,4.2 地址总线 地址总线是用来在操作时指出操作数据(或对象)的地址(内存或I/O)信息。 地址总线的宽度决定了最大可管理的内存与I/O空间。注意:在计算机系统中,I/O空间的管理并不占用总线资源;一般总线所能管理的最大内存空间是2n,而最大I/O空间是2n/2。 地址总线由内存与I/O子系统共享使用(I/O只用低N/2位)。 4.3 控制总线 控制总线用来在操作时控制CPU与内存和I/O设备之间的数据传 送方式(如传送方向、时间及顺序等)。,52,外部设备指系统中除主机以外的设备,即I/O子系统中所包含的设备。 外部设备与主机( CPU 和存储器)的通信是通过I/O子系统中外设接口(Interface)进行的,每个接口包括一组寄存器。主机通过对寄存器组的操作来完成与外部设备的通信。 数据寄存器:用来存放外设和主机间传送的数据。 状态寄存器:用来保存外设或接口的状态信息。 命令寄存器:用来保存CPU发给外设或接口的控制命令。 外设接口中每个寄存器都有一个端口(Port)地址,这些端口地址构成一个独立于内存地址的I / O地址空间,用0000H FFFFH来表示。 这些端口地址用来供CPU对其访问、设置及其它操作。,5. 外部设备,53,内存,54,5.2 80x86 I/O子系统,在I/O子系统中: 每个I/O设备必须通过专门的I/O接口电路与主机(CPU和内 存)相连。 I/O端口:即I/O地址,是区分I/O设备及其寄存器的编号。 80x86 的I/O端口(地址)用16位二进制无符号数表示。 对I/O端口的访问类似于内存单元,只是对应于I/O设备。 大多数情况下,一个外部设备需使用多个I/O端口(数据端口、状态端口等)。 CPU是通过端口与I/O设备来通信的。,55,5.2.1 输入设备,输入设备:将数据、程序等转换成计算机能接受的二进制码,并将他们送入内存。常用的设备有键盘、鼠标、轨迹球、扫描仪、光笔、触摸屏、数字化仪、游戏操纵杆等;此外还有多媒体数码设备。 1)键盘:是微机必配的、最基本的标准输入设备;向微机发送命令、输入数据和编辑文档都要利用键盘。键盘按工作原理分为触点式(机械式)和非触点式(电容式)。键盘内部包含一单板机电路,用来区分键功能及产生相应的ASCII代码,并完成与主机的通信。 目前的键盘按使用主要分为101键、102键和104键等几种形式;在PC机的主板上已经为键盘预留了接口插座;键盘插头呈圆柱形状,有5个插针并有一定为槽,对准主板键盘插座插入即可。当前使用的键盘大部分接口为USB。键盘上的键按功能将键分为三类: (1)打字键:字母键、数字键、符号键。 (2)功能键:F1-F12键 (3)控制键:除以上两种以外的其它键。回车键、换档键、大写锁定键、制表定位键、退格键、光标移动键、打印屏幕键等等。,注意:汇编语言程序中,从键盘输入的任何信息,在接收时,都是一系列用ASCII码表示的字符串。,56,2)鼠标:它的作用是代替键盘上的、四个光标键和回车键操作,用来进行光标定位或完成某种特定的输入。在专门软件支持下,完成特定功能。 鼠标的性能指标是分辨率,它是指鼠标每移动一英寸所能检测出的点数(ppi),目前已经达到200 400 ppi。 鼠标是一种串行通信设备,可通过一个9芯的插头连接到主板的串行口上(或5针的插头连接到专用座上)。当前的光电鼠标接口都为USB。 鼠标按结构分为机械式和光电式两类。机械式有一滚动球,可在普通桌面上使用;光电式有一光探测器,要在能反光的平面上使用。光电式鼠标灵敏、可靠,但价格较机械式稍贵一点。 鼠标按按键的多少分为两键鼠标、三键鼠标。各键的功能由所使用的软件来定义。默认状态下是:左键定义为确认键,右肩定义为清除键或专用功能键。 要向更详细的学习输入设备的相关知识,请参考其它资料。,57,输出设备:将计算机处理的结果转换成人们能够识别的数字、字符、图像、声音等形式显示、打印或播放出来。常用的输出设备有显示器、打印机、绘图仪及多媒体设备等。 1)打印机又分为:针式打印机、喷墨打印机、激光打印机。 (1)针式打印机:其印刷机构由打印头和色带组成,打印头中藏有打印针;针式打印机在进行打印时,打

温馨提示

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

评论

0/150

提交评论