大工20春《汇编语言程序设计》辅导资料二
发布时间:2023-12-25 13:12:47浏览次数:147汇编语言程序设计辅导资料二内 容:第二章 概述 这周我们将学习第二章中的第 1-2 节。这两节主要介绍 80x86 计算机组织的中的微处理器和存储器部分,需要了解基于微处理器的计算机组成结构,掌握计算机访存的的过程和存储器的分段原理。第一节 80x86 计算机的组织1、80x86 微处理器1)总线:符合一定通信协议的通信通道就称为总线。计算机系统总线分为地址总线、数据总线和控制总线2)80x86 微处理器的总线:80x86 系列机是 Intel 公司于 1978 年发布的,最低端的 8086 机器字长是16 位,可以看出,系列机的数据总线经历了小于、等于、大于地址总线的过程3)微处理器的寻址范围(空间)和存储单元:8086 的地址总线宽度是 20 位,因此它的寻址范围就是 220=1MB,对于总线宽度为 32 位的 80386 来说,寻址范围就是:232=4GB。其中 B 就是字节 Byte的首字母,在计算机的存储器中一般都是以字节作为一个存储单元的,因此 1B 就是一个存储单元2、基于微处理器的计算机系统构成 1)计算机构成:主要由 CPU、存储器、输入输出子系统(I/0)三部分构成2)中央处理机:CPU 由算术逻辑单元(ALU)和控制逻辑单元以及工作寄存器组三部分构成,80386以后还在 CPU 中集成了高速缓冲存储器(cache),以实现运算器与存储器的速度匹配,现代的 CPU有时还集成了显卡等芯片3)计算机存储器的分层结构:因为 CPU 运算器是非常快的,需要存储器不停的提供指令给 CPU,这就要对存储器进行分层设计。计算机的存储器分为高速缓冲处理器、主存和外存。 Cache 是速度最快也是层次最高的存储器;主存和外存的区别就是主存是通过系统总线直接挂到 CPU 上的,而外存需要通过 I/0 接口间接挂到系统总线上。系统程序存放在主存上,一般程序及大量数据是存放在外存中的
4)I/O 子系统:I/O 子系统包括 I/O 设备和大容量存储器两类外部设备。I/O 设备包括显示终端,键盘,打印机等第二节 存储器1、存储单元的地址和内容 1)存储器的存储单元是一个字节 2)每个存储单元分配唯一的一个地址 3)地址用无符号的正数表示,并且用十六进制数表示 4)存储字占用存储器中相继的两个存储单元,高位字节存入高地址,低位字节存入低地址 5)字单元地址用它的低位地址表示 6)计算机以偶地址访存(读和写)说明:本门课程为了便于说明,用小括号括起来的内容代表存储器存储单元中的值也就是它的内容 ,比如(0001H)就代表地址单元 0001H 中存放的数据值,如果其中存放的内容是 5CH,则表示为:(0001H)=5CH 还有一种情况,比如指针结构数据或寄存器数据,其存储内容本身又代表一个地址,而为了取得这个指针或寄存器指向的值,可以采用小括号嵌套的方式表示,比如(005CH)=4D11H,就可以表示为 ((0001H))=(005CH)=4D11H 另外,因为计算机是偶地址访存的,因此在取奇地址字结构的内容时需要访存两次,这个需要注意。 2、实模式的存储器寻址 1)实模式和保护模式,保护模式是相对实模式而言的,可以简单的理解成真实的存储器模式和虚拟存储器模式,比如我们常用到的虚拟内存的就是在保护模式下工作的。保护模式是实现了系统多任务处理和虚拟内存寻址的工作模式。8086/8088 只能工作在实模式下,其他微处理器则可以工作在两种模式下
2)存储器的地址分段(实模式) 我们知道 8086 的 20 位地址线寻址空间是 1MB,但是它的机器字长只有 16 位,比如 CPU 需要访存,但是通过控制总线只能给地址线发送 16 位格式的地址数据,这就无法完成访存任务。 但是存储器分段可以解决 16 位字长和 20 位地址线间的通信矛盾,我们分两次传送,每次都传送16 位数据,通过 CPU 的地址累加器对这两次数据进行加法运算就可以产生 20 位地址值。这两次传送的数据分别称为段地址和偏移地址。 3)8086 实模式存储器分段采用了 16 的段地址和 16 的偏移地址格式,对于 1MB 存储器分段具体如下: 第 0 段 00000, 00001, 00002, 00003,…………,0000F; 第 1 段 00010, 00011, 00012, 00013,………….,0001F; 第 2 段 00020, 00021, 00022, 00023,………….,0002F; ……………………………………………………………. …………………………………………………………….第 32766 段 FFFE0, FFFE1, FFFE2, FFFE3,………….,FFFEF;第 32767 段 FFFF0, FFFF1, FFFF2, FFFF3,………….,FFFFF;可见 8086 是采用 64KB=216 为段空间的,每个段大小为 16B=24。段地址规定为每个段的首地址,如第一段的段地址就是 00010,第 32766 段的段地址就是 FFFE0,可见每个段的段地址后 4 位都是 0,故可以将这 20 位段地址的高 16 位装入地址累加器作为段地址,地址累加器的计算公式如下: 物理地址=16 位段地址 16D+16 偏移地址乘数 16D 就是为了将段地址向左移动 4 位,从而与偏移地址相加后得到 20 位的物理地址本周要求掌握的内容如下:基本概念:总线宽度及分类、存储单元和内容、存储器寻址范围及分层结构、实模式与保护模式、段地址及偏移地址、逻辑地址与物理地址等。 基本理论:基于微处理器的计算机组织结构,CPU 的三种主要构成部分,不同类型数据的存储器存储形式,存储器的分层结构及作用,存储器地址的分段和寻址。
练习:1、有两个 16 位字 1EE5H 和 2A3CH 分别存放在 80x86 微机的存储器的 000B0H 和 000B2H 单元中,请画图表示出它们在存储器中的存放情况解题提示:请参照课本中“存储单元的地址和内容”小节中,关于数据分配及字节和字的分配部分。2、实模式下,段地址和偏移地址为 3017:000A 的存储单元的物理地址是什么?解题提示:请参考课本“实模式存储器寻址”小节(公式:物理地址= 16d x 段地址 + 偏移地址)3、8086 采用多少位的偏移地址,偏移地址的寻址空间是多大?解题提示:请参考课本“实模式存储器寻址”小节中关于“存储器地址的分段”部分。