微型计算机组成与接口(高职)第5章
- 格式:pdf
- 大小:325.18 KB
- 文档页数:92
第5 章多模块程序设计 5.1 汇编语言程序的多模块连接5.2 结构与记录5.3 汇编语言程序与高级语言程序的连接返回主目录第5 章多模块程序设计在第4 章所介绍的程序设计中,源程序所涉及的标识符(变量、标号、段名、过程名等)都在本程序中定义,它与本程序之外的标识符不发生任何关系,这种程序设计称为单模块程序设计。
本章将介绍多模块程序设计方法,也称为模块化程序设计方法。
所谓模块,从功能上讲它可以是整个大程序的较为独立的一个部分,从源程序结构形式上讲它是由END 结束的一个完整程序。
因而一个源模块可以单独汇编,形成自己的目标模块。
最后,由连接程序将各个目标模块连接成一个可执行程序。
采用模块化程序设计有下面一些优点 (1) 一个复杂程序可以分成若干个模块,可由不同人员分头完成; (2) 每个模块的任务明确,便于理解; (3) 单个模块易于编写和调试; (4) 便于程序的维护和修改; (5) 可以直接利用已有的模块。
采用模块化程序设计时,必须合理分割模块,严格定义各模块的输入、输出参数及各模块间的通讯方式。
在单模块程序设计时,模块内所用到的段、变量及标号等各种标识符都必须在本模块内给予定义,否则汇编时将会给出错误信息。
多模块程序设计时,由于各个模块都是整个程序的一个部分,因此,各模块之间不仅会有数据上的传递,而且会出现各模块间的变量、标号等标识符的交叉引用。
如何实现这种交叉引用,如何实现各模块间各段的连接是汇编语言多模块程序设计的重要问题,也是本章要叙述的主要内容。
此外,多程序模块的连接不仅适用于汇编语言的程序模块,也适用于汇编语言程序模块与高级语言的程序模块的连接。
因此,本章还将介绍汇编语言与两种高级语言(BASIC 和TURBO -C)之间连接的基本方法。
5.1 汇编语言程序的多模块连接 5.1.1 多模块之间段的连接 1. SEGMENT语句提供的连接信息 段定义的完整语句为: 段名SEGMENT [定位类型][组合类型][‘类别’] … 段名ENDS 在第4 章中已指出,段定义后,段名有段地址、偏移地址、定位类型、组合类型和‘类别’5 个属性。
微型计算机原理与接口技术(第5 版)课后答案及问题墙第一章绪论{崔文韬问}:课后习题第一题,二进制数与十进制数转换。
{崔文韬答}: 11001010B=202D,00111101B=61D,01001101B=77D,10100100B=164D。
{崔文韬问}:课后习题第二题,16 进制数与十进制数转换。
{崔文韬答}:12CH=300D,0FFH=255,3A8DH=14989D,5BEH=1470D{崔文韬问}:课后习题第三题,十进制数转化为二进制数和16 进制数。
{杨艺答}:25D=19H=00011001B,76D=4CH=01001100B,128D=100H=00000001 00000000B,134D=106H=00000001 00000110B{ 杨艺答}:128D=80H=10000000B,134D=86H=10000110B{崔文韬问}:课后习题第四题,写出10 进制数的BCD 码{杨艺答}:327D=(0011 0010 0111)BCD,1256D=(0001 0011 0101 0110)BCD{杨艺答}:1256D=(0001 0010 0101 0110)BCD{崔文韬问}:英文单词About 的ASCII 码{沙猛答}:3935H{王金鑫改}:41H,62H,6FH,75H,74H{崔文韬问}:数字95 的ASCII 码{王金鑫答}:39H,35H{崔文韬问}:课后习题第六题:10 进制数的原码、补码、反码{杨艺答}:【+42】原=00101010B=【+42】反=【+42】补【-42】原=10101010B,【-42】反=11010101B,【-42】补=11010110B【+85】原=01010101B=【+85】反=【+85】补【-85】原=11010101B,【-85】反=10101010B,【-85】补=10101011B{崔文韬问}:机器语言或者机器码(Machine Code),汇编语言(Assemble Language),高级语言的定义{沙猛答}:机器码:计算机只认得二进制数码,计算机中的所有指令都必须用二进制表示,这种用二进制表示的指令称为机器码。
第一章知识点目录第2章重点和难点分析一、掌握数字在计算机中的表示和运算1、掌握十进制数、二进制数、十六进制数的表示方法及其相互转换。
2、熟练掌握带符号数的原码、反码、补码表示方法。
3、掌握带符号补码加减法运算,进位和溢出的概念及其判断方法。
补码的加减运算的特点是符号位一同参加运算。
作减法时,可将减数变补与被减数相加来实现。
运算时要注意字长、数值范围及溢出判断。
一般只有在同号相加或异号相减时,才可能产生溢出。
二、掌握信息在计算机中的表示1、掌握BCD码(十进制数的二进制编码)概念及其修正计算方法。
2、掌握ASCII码(字符(包括字母、数字和符号)的概念及查表方法。
第三章知识点目录一、80x86微处理器简介1)CPU发展过程中几个主要参数:主频、数据总线宽度,地址总线宽度、Cache80x86微处理器是美国Intel公司生产的系列微处理器。
从8086开始到目前已进入第五代微处理器:8086(8088)、80286、80386、80486和80586(Pentium、Pentium Ⅱ~Ⅳ、Pentium D 双核)。
其主要发展特点是:1. 主频从8086的4.77MHz到80586的166MHz,PentiumⅡ~Ⅳ更高,可达3GHz。
2. 数据总线从8086的16位到80586的64位。
3. 地址总线从8086的20根到80586的36根。
4. 高速缓冲存储器Cache的使用,大大减少了CPU读取指令和操作数所需的时间,使CPU的执行速度显著提高。
2)Cache—主存—外存三级存储系统计算机系统中存储层次可分为三级:高速缓冲存储器、主存储器、外存储器。
高速缓冲存储器用来改善主存储器与中央处理器的速度匹配问题;外存储器用于扩大存储空间。
计三级存储系统解决存储器速度、容量、价格三者之间的矛盾,并且提升了CPU访存速度,改善了系统的总体性能;3)存储器管理机制80x86CPU在发展过程中,存储器的管理机制也发生了较大变化。
第5 章总线5.1 总线的基本知识 5.2 微型计算机的总线标准5.3 总线基础上的系统硬件扩展返回主目录第5章总线5.1 总线的基本知识 5.1.1概述 众所周知,微型计算机是一个信息处理系统,各组成部件之间相互传送着大量的信息。
因此,系统与系统之间,插件与插件之间以及同一插件的各个芯片之间需要用通信线路连接起来。
要衡量一个微型计算机系统的性能,考察CPU的性能固然十分重要,但由于所有信号都要通过通信线路传送,故通信线路的设置和连接方式同样十分重要。
一种最直观的方法是根据各大功能部件的需要分别设置与其它部件通信的线路,进行专线式的信息传送。
这种方式的传送速率可以很高,信息传送的控制简单。
但整个机器所需要的信息传送线数量很大,增加了复杂性,加重了发送信息部件的负载。
此外,这种方式不便于实现机器的模块化与积木化。
另一种方法是设置公共的通信线——总线。
所谓总线,是指计算机中多个部件之间公用的一组连线,是若干互连信号线的集合,由它构成系统的插件间、插件的芯片间或系统间的标准信息通路。
微型计算机广泛采用总线技术,用以简化硬件、软件的系统设计。
从硬件角度看,接口设计者只需按总线规范设计插件板,保证它们具有互换性与通用性,以便大批量生产,支持计算机系统的性能及系列产品的开发。
从软件角度看,接插件的硬件结构带来了软件设计的模块化。
用总线连接的系统,结构简单清晰,便于扩充与更新。
例如在规模上扩充时,只需往总线上多插几块同类型的插件;在功能扩充时,只需插入符合该总线标准的所需插件;在系统更新时,一般只需要更换新的插件或系统板。
微型计算机的应用领域极为广泛,采用总线标准是应用的需要。
因此,从用户角度看,希望微型计算机生产厂家除了以机箱方式提供整机系统外,还能以其他方式,如插件方式向用户提供“原型”产品,由用户根据自己的要求构成所需的微机系统。
借助于总线标准,可以帮助用户按其具体需要选择和获得适合自己需求的产品。
5.1.2总线的分类 在微型计算机系统中,按照总线的规模、用途及应用场合,可将总线分为以下三类。
1. 芯片总线 芯片总线又称元件级总线。
这是在构成一块CPU插件或用微处理机芯片组成一个很小系统时常用的总线,用于各芯片(如CPU芯片、储器芯片、I/O接口芯片等)之间的信息传送。
按所传送的信息类别不同,可将芯片总线分为传送地址、传送数据和传送控制信息等三组总线,简称为地址总线、数据总线和控制总线。
2. 内总线 内总线又称为系统总线。
它是微型计算机系统内连接各插件板的总线,用于插件与插件之间的信息传送。
3. 外总线 外总线又称通信总线。
用于微型计算机系统与系统之间或微型计算机系统与外部设备之间的通信。
内总线与外总线除地址总线、数据总线和控制总线外,还包括电源总线、地线和备用线(为用户扩展功能用)。
三类总线在微型计算机系统中的位置及相互关系如图5 -1 所示。
图5 –1 用三类总线构成的微机系统CRT 显示器存储器I/OCPU总线控制及缓冲片总线4通道串行/并行输入/输出部件内总线外总线5.1.3信息的传送方式 计算机中的信息是通过总线进行传送的,信息在总线上有三种传送方式:串行传送、并行传送和并串行传送。
1. 串行传送 当信息以串行方式传送时,只使用一条传输线,且用脉冲传送。
具体地说,是在传输线上按顺序传送表示一个数码的所有二进制位的脉冲信号,每次一位。
通常第一个脉冲信号表示数码的最低有效位,最后一个脉冲信号表示数码的最高有效位,如图5 -2(a)所示。
图5 -2串行传送与并行传送 (a) 串行传送;(b) 并行传送源目的01010110010101108位数据线(b)源目的8T(a)当进行串行传送时,可能按顺序连续传送若干个0或若干个1,如果编码时用有脉冲表示1,无脉冲表示0,那么当连续出现几个0时,则表示在某段时间间隔内传输线上没有脉冲信号。
为了确定传送了多少个0,必须采用某种时序格式,以便使接收设备能加以识别。
通常采用的方法是指定“位时间”,即指定一个二进制位在传输线上占用的时间长度。
显然,“位时间”是由同步脉冲来体现的。
假定串行数据是由“位时间”组成的,那么传送8位需要8个位时间。
如果接收设备在第一个位时间和第五个位时间分别接收到一个脉冲,而其余的6个位时间没有收到脉冲,那么就表示收到的二进制信息是00010001。
当进行串行传送时,被传送的数据需要在发送部件进行并行-串行变换,而在接收部件又需要进行串行-并行变换。
串行传送的主要优点是只需要一条传输线,这一特点对于长距离传输显得特别重要。
不管传输的数据量为多少,都只需一条传输线,因此成本比较低廉。
串行传送是外总线中常用的传送方式。
2. 并行传送 采用并行方式传送二进制信息时,每个数据位都需要一条单独的传输线。
信息由多少个二进制位组成,机器就需要有多少条传输线,从而让二进制信息(0或1)在不同的线上同时进行传送。
图 5 -2(b)给出了并行传送的示意图。
如果要传送的数据由8位二进制数组成,那么就使用由8条线组成的扁平电缆,每条线分别传送二进制数的不同位。
例如,假设图中最上面的线代表最高有效位,最下面的线代表最低有效位,那么图中的0或1表示正在传送的数据是01010110。
当进行并行传送时,所有的位同时传送,所以并行传送方式的速度比串行传送的速度快得多。
并行传送是微机系统内部常用的传送方式。
3. 并串行传送 并串行传送方式是并行传送方式与串行传送方式的结合。
当信息在总线上以并串行方式传送时,如果一个数据字由两个字节组成,那么当传送一个字节时采用并行方式,而字节之间采用串行方式。
例如,有的微型计算机中CPU的数据用16位并行运算。
但由于CPU芯片引脚数的限制,出入CPU的数据总线宽度是8位。
因此,当数据从CPU中出入数据总线时,以字节为单位,采用并串行方式进行传送。
显然,采用并串行传送信息是一种折中的办法。
当总线宽度(即传输线根数)不是很宽时,采用并串行方式传送信息可以使问题得到很好地解决。
5.1.4总线的标准化 总线标准化为连接到总线的各个部件提供了标准的信息通路。
芯片总线的标准化问题目前尚未得到妥善解决,这主要是由于不同厂家生产的大规模集成电路芯片没有一个标准化的规范,因而很难通过简单的连接提供芯片之间的标准信息通路。
例如,Z80CPU比8085CPU功能强,两者的指令系统基本上兼容,机械外型相同,使用相同的+5V电源。
但由于引脚信号排列不同,而且大部分控制信号的功能也不同, 因此不能直接用Z80CPU置换8085CPU来提高机器性能。
随着微机应用的日益广泛,用户要求不同厂家生产的硬件模块能实现简单方便互连的愿望越来越迫切。
芯片级不能做到这一点,就要在插件级和系统级设法解决,因而形成了插件级和系统级的各种标准总线。
标准总线不仅在电气上规定了各种信号的标准电平、负载能力和定时关系,而且在结构上规定了插件的尺寸规格和各引脚的定义。
通过严格的电气和结构规定,各种模块可实现标准连接。
各生产厂家可以根据这些标准规范生产各种插件或系统,用户可以根据自己的需要购买这些插件或系统来构成所希望的应用系统或者扩充原来的系统。
制定一个合理的、便于以后扩充的总线标准是一件很复杂的工作,但从用户使用的角度看,只要了解常用标准总线的种类、特点和使用方法就行了。
目前总线标准有两类,一类是IEEE(美国电气及电子工程师协会)标准委员会定义与解释的标准,如IEEE-488总线和RS-232C串行接口标准等,这类标准现已有20多个。
另一类是因广泛应用而被大家接受与公认的标准,如S-100总线、IBMPC总线、ISA总线、EISA总线、STD总线和串行电流回路接口标准等。
不同的总线标准可以用于不同的微机系统或者同一微机系统的不同位置。
5.1.5总线的裁决 总线是由多个部件共享的, 为了正确地实现各部件之间的信息传送,必须对总线的使用进行合理的分配和管理。
当总线上的某个部件要与另一个部件进行通信时,首先应该发出请求信号。
有时发生争用总线现象,就是在同一时刻总线上有多个部件发出总线请求信号的原因,这就要求根据一定的总线裁决原则来确定占用总线的先后次序。
只有获得总线使用权的部件,才能在总线上传送信息,这就是所谓总线裁决的问题。
通常,有并联、串联和循环等三种总线分配的优先级技术。
1. 并联优先权判别法 当采用并联优先权判别法时,优先级别是通过一个优先权裁决电路判断的。
共享总线的每个部件具有独立的总线请求线,通过请求线将各部件的请求信号送往裁决电路。
裁决电路一般由一个优先权编码器和一个译码器组成。
该电路接收到某个部件或多个部件发来的请求信号后,首先经优先权编码器进行编码,然后由译码器产生相应的输出信号,发往请求总线部件中优先级最高的部件,允许该部件尽快获得总线。
但需注意,即使某个部件获得了最先占有总线的特权,它也不一定能立即使用总线,而必须在总线不忙时,即原占有总线部件传送结束后,才能使用总线。
因此,每个部件一旦获得总线使用权,应立即发出一个“总线忙”的信号,表明总线正在被使用。
而当传送结束后,应该立即释放总线。
图5 -3(a)给出了并联优先级判别法的示意图。
2. 串联优先级判别法 串联优先级判别法不需要优先权编码器和译码器,它采用链式结构,把共享总线的各个部件按规定的优先级别链接在链路的不同位置上。
在链式结构中位置越前面的部件,优先级别越高。
当前面的部件要使用总线时,便发出信号,禁止后面的部件使用总线。
通过这种方式,就确定了请求总线各部件中优先级最高的部件。
显然,在这种方式中,当优先级高的部件频繁请求时优先级低的部件很可能很长时间都无法获得总线使用权。
图5 -3(b)给出了串联优先权判别法的示意图。
图5 -3优先级判别法 (a) 并联优先级判别法;(b) 串联优先级判别法仲裁器模块1请求1允许1模块N 请求N允许N总线忙(a )……仲裁器1允许2请求总线忙N (b)3. 循环优先权判别法 循环优先权判别法类似于并联优先权判别法,只是其中的优先权是动态分配的,原来的优先权编码器由一个更为复杂的电路代替,该电路把占用总线的优先权在发出总线请求的那些部件之间循环移动,从而使每个总线部件使用总线的机会相同。
以上三种优先权判别法各有优缺点,循环优先权判别法需要大量的外部逻辑才能实现;串联优先权判别法不需要使用外部逻辑电路,但这种方法中所允许链接的部件数目受到很严格的限制,因为部件太多,那么链路产生的延时就将超过时钟周期长度,总线优先级别的裁决必须在一个总线周期中完成。
从一般意义上讲,并联优先权判别方法较好,它允许在总线上连接许多部件,而裁决电路又不太复杂。
在实际使用时,可根据具体情况决定采用哪种优先权判别方法。