汇编语言程序设计教案及习题答案.docx

上传人:h**** 文档编号:26990881 上传时间:2022-07-21 格式:DOCX 页数:29 大小:25.06KB
返回 下载 相关 举报
汇编语言程序设计教案及习题答案.docx_第1页
第1页 / 共29页
汇编语言程序设计教案及习题答案.docx_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《汇编语言程序设计教案及习题答案.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计教案及习题答案.docx(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、汇编语言程序设计教案及习题答案 汇编语言程序设计教案 附:习题参考答案 IBM-PC汇编语言程序设计 (第2版) 沈美明、温冬婵编著 教案编写时间:20XX年8月18日 前言 1.汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。 2.汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。 3.本教材共有十一章,其内容安排如下: (1).第一、二章为汇编语言所用的基础知识。 (2).

2、第三章详细介绍80x86系列CPU的指令系统和寻址方式。 (3).第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。 (4).第五、六章说明循环、分支、子程序结构和程序设计的基本方法。 (5).第七章说明宏汇编、重复汇编及条件汇编的设计方法。 (6).第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。 (7).第九章说明BIOS和DOS系统功能调用的使用方法。 (8).第十十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计 方法和程序实例。 附:教学参考书 1.沈美明、温冬婵编著,IBMPC汇编语言程序设计(第2版),清华大学出版

3、社,20XX年(教材) 2.沈美明、温冬婵编著,IBMPC汇编语言程序设计,清华大学出版社,1991年 3.沈美明、温冬婵编著,IBMPC汇编语言程序设计例题习题集,清华大学出版社,1991年6月 4.沈美明、温冬婵、张赤红编著,IBMPC汇编语言程序设计实验教程,清华大学出版社,1992年 5.周明德,微型计算机IBM PC/XT(0520系列)系统原理及应用(修订版),清华大学出版社,1991 6.郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,1995 7.王士元、吴芝芳,IBM PC/XT长城0520 接口技术及其应用,南开大学出版社,1990 8.杨素行,微型计算机系统

4、原理及应用,清华大学出版社,1995 9.戴梅萼、史嘉权,微型计算机技术及应用从16位到32位(第二版),清华大学出版社,1996 10.张昆藏,IBM PC/XT微型计算机接口技术,清华大学出版社,1991 11.孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/Pentium),学苑出版社,1993 12.吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社 目录 第 1 章基础知识4 1.1进位计数制与不同基数的数之间的转换4 1.2二进制数和十六进制数的运算6 1.3计算机中数和字符的表示6 1.4几种基本的逻辑运算7 第 2 章80X86计算机组织7 2

5、.180X86微处理器7 2.2基于微处理器的计算机系统构成8 2.3中央处理机8 2.4存储器10 2.5外部设备11 第 3 章80X86的指令系统和寻址方式11 3.180X86的寻址方式11 3.2程序占有的空间和执行时间13 3.380X86的指令系统13 第 4 章汇编语言程序格式29 4.1汇编程序功能29 4.2伪操作30 4.3汇编语言程序格式33 4.4汇编语言程序的上机过程36 第 5 章循环与分支程序设计38 5.1循环程序设计38 5.2分支程序设计39 5.3如何在实模式下发挥80386及其后继机型的优势39第 6 章子程序结构40 6.1子程序的设计方法40 6.

6、2子程序的嵌套42 6.3子程序举例42 第7 章高级汇编语言技术42 7.1宏汇编42 7.2重复汇编44 7.3条件汇编44 第8 章输入/输出程序设计45 8.1I/O设备的数据传送方式45 8.2程序直接控制I/O方式46 8.3中断传送方式46 第9 章BIOS和DOS中断49 9.1键盘I/O49 9.2显示器I/O51 9.3打印机I/O52 9.4串行通信口I/O53 第10 章图形与发声系统的程序设计错误!未定义书签。 10.1显示方式错误!未定义书签。 10.2视频显示存储器错误!未定义书签。 10.3 EGA/VGA 图形程序设计错误!未定义书签。 10.4 通用发声程序

7、错误!未定义书签。 10.5 乐曲程序错误!未定义书签。 第 11 章 磁盘文件存取技术错误!未定义书签。 11.1 磁盘的记录方式错误!未定义书签。 11.2 文件代号式磁盘存取错误!未定义书签。 11.3 字符设备的文件代号式I/O 错误!未定义书签。 11.4 BIOS 磁盘存取功能错误!未定义书签。 附录:IBM PC 汇编语言程序设计习题参考答案54 第 一 章.习题54 第 二 章.习题55 第 三 章.习题56 第 四 章.习题69 第 五 章.习题74 第 六 章.习题92 第 七 章.习题105 第 八 章.习题112 第 九 章.习题117 第 十 章.习题错误!未定义书签

8、。 第 十一 章.习题错误!未定义书签。 第 1 章 基础知识 本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。 二进制数及其与其它数制的转换、补码及其运算。 3学时。 1.1 进位计数制与不同基数的数之间的转换 1.1.1 二进制数 1. 十进制数:(Decimal)(数后面加D 或省略表示的是十进制数) (1). 十进制数表示为:a n a n -1a 0.a -1a -2a -m 其含义如下: i m n i i m m 2211001n 1n n n 10a 10a 10a 1

9、0a 10a 10a 10a N ?=?+?+?+?+?+?=-=- 1). 基数为10 2). 10个数码0 、1、2、3、4、5、6、7、8、9 3). 逢10进1 (2). 权:相应于式中每位数字的10 k 称为该位数的权。 (3). 数的值:每位数字乘以其权所得到的乘积之和即为该数的值。即如上述多项式展开后所得到的和。 2. r 进制数: (1). r 进制数表示为:a n a n -1a 0.a -1a -2a -m 其含义如下: i m n i i m m 2211001n 1n n n r r a r a r a r a r a r a r a N ?=?+?+?+?+?+?=-

10、=- 1). 基数为r 2). r 个数码0 、1、2、 r-1 3). 逢r 进1 (2). 权:相应于式中每位数字的r k 称为该位数的权。 (3). 数的值:每位数字乘以其权所得到的乘积之和即为该数的值。即如上述多项式展开后所得到的和。 3. 二进制数:(数后面加B 表示二进制数) (1). 二进制数表示为:a n a n -1a 0.a -1a -2a -m 其含义如下: i m n i i m m 2211001n 1n n n 22a 2a 2a 2a 2a 2a 2a N ?=?+?+?+?+?+?=-=- 1). 基数为2 2). 2个数码0 和1 3). 逢2进1 (2).

11、权:相应于式中每位数字的2 k 称为该位数的权。 (3). 数的值:每位数字乘以其权所得到的乘积之和即为该数的值。即如上述多项式展开后所得到的和。 4. 十六进制数:(Hexadecimal)(数后面加H 表示十六进制数) (1). 十六进制数表示为:a n a n -1a 0.a -1a -2a -m 其含义如下: i m n i i m m 2211001n 1n n n H 16a 16a 16a 16a 16a 16a 16a N ?=?+?+?+?+?+?=-=- 1). 基数为16 2). 16个数码0 、1、2、3、4、5、6、7、8、9、A 、B 、C 、D 、E 、F(或a

12、f) 3). 逢16进1 (2). 权:相应于式中每位数字的16 k 称为该位数的权。 (3). 数的值:每位数字乘以其权所得到的乘积之和即为该数的值。即如上述多项式展开后所得到的和。 1.1.2 二进制数和十进制数之间的转换 1. 二进制数转换为十进制数:根据上面的二进制数多项式按权展开求和即为十进制数。 2. 十进制数转换为二进制数 (1). 降幂法:首先写出要转换的十进制数,其次写出所有小于此数的各位二进制权值,然后用要转换 的十进制数减去与它最相近的二进制权值,如够减则减去并在相应位记以1;如不够减则在相应位记以0并跳过此位;如此不断反复,直到该数为0为止。 (2). 除法 1). 十

13、进制整数转换:采用“除2 (基)取余”法进行转换,即把十进制整数除以2,取出余数1或0作为相应二进制数的最低位,把得到的商再除以2,再取出余数1或0作为相应二进制数的次低位。由此类推,继续上述过程直至商为0止,最后一次的余数为二进制数的最高位,依次所得到的余数序列就是转换成的二进制数。 2). 十进制小数转换:采用“乘2 (基)取整”法进行转换,即先将十进制小数乘以2,取其整数1或0作为相应二进制小数的最高位,然后将乘积的小数部分再乘以2,并再取其整数作为次高位。依次重复上述过程,直到小数部分为0或达到要求的精度为止。 1.1.3 十六进制数及其与二进制、十进制数之间的转换 1. 十六进制数的

14、表示:(参见1.1.1节的第4步)以下是几个概念: (1). 位(bit)。bit(Binary digit 的缩写)是量度信息的最小单位,1比特为二进制的一位包含的信息量。 (2). 字节(Byte)。作为一个单位来处理的一串二进制数位,通常由8位二进制数位组成一个字节。一 个字节可以代表一个数字、一个字母或一个特殊符号。也是计算机存储容量的单位。 (3). 字(Word)。在计算机中,一般称两个字节为一个字。 (4). 字长(Word Length)。计算机的每个字所包含的位数称为字长。字长是计算机的一项重要指标。一 般都选为字节的整数倍。 2. 十六进制数与二进制数之间的转换 (1).

15、二进制数转换为十六进制数:从二进制数的小数点位置开始,整数部分向左,小数部分向右,每 四位二进制数字为一组用一位十六进制数字表示,不足四位的用0补足,就得到一个相应的十六 进制数。 (2). 十六进制数转换为二进制数:每一位十六进制数用四位二进制数表示,就形成相应的二进制数了。 3. 十六进制数与十进制数之间的转换 (1). 十六进制数转换为十进制数:根据上面的十六进制数多项式按权展开求和即为十进制数。 (2). 十进制数转换为十六进制数:可类似于十进制数转换为二进制数的降幂法和除法来转换为十六进 制数。也可先将十进制数转换为二进制数,再将二进制数转换为十六进制数。 1). 降幂法:首先写出要

16、转换的十进制数,其次写出所有小于此数的各位十六进制权值,然后用要转换的十进制数除以与它最相近的十六进制权值,并在相应位记以十六进制的商;再将余数除以下一位权值,并记下商和余数;如此不断反复,直到该数为0为止。 2). 除法:同前,整数部分采用除基(16)取余法,小数部分采用乘基(16)取整法直到所需的精度为止来进行转换。 1.2 二进制数和十六进制数的运算 1.2.1 二进制数的运算 1. 加法规则:0+0=0,0+1=1,1+0=1,1+1=0 (进位1) 2. 乘法规则:00=0,01=0,10=0,11=1 1.2.2 十六进制数的运算:按照逢16进1的原则进行计算。 1.3 计算机中数

17、和字符的表示 1.3.1 数的补码表示 1. 机器数:在机器中以数值化表示的连同其符号在内的一个数称为机器数。一般用最高有效位来表示符号,正数用0表示,负数用1表示。 2. 补码表示法 ?-=0 X X 20X X X n ;补 3. 补码求法 (1). 正数的补码就是其本身; (2). 负数的补码 = 其正数的补码按位求反+1。 4. 符号扩展(如将8位有符号数扩展成为16位有符号数) (1). 正数的符号扩展是在前面补0; (2). 负数的符号扩展是在前面补1。 5. n 位补码所表示数的范围:-2 n-1N 2 n-1-1 6. 双字长数或双精度数:在机器里,为了扩大表数范围,可以用两个

18、机器字(高位字和低位字)来表示一个机器数,这种数称为双字长数或双精度数。在80386及其后则有4字(64位)。 1.3.2 补码的加法和减法 1. 求补运算:对一个二进制数按位求反后在末尾加1的运算称为求补运算。 X补 -X补 X补 2. 补码的加法运算规则 X+Y补 = X补+ Y补 3. 补码的减法运算规则 X -Y补 = X补+ -Y补 1.3.3 无符号整数:把最高有效位也作为数值处理的数称为无符号整数。 求补 求补 1.3.4 字符表示法(ASCII 码):80x86机采用目前最常用的美国信息交换标准代码ASCII 码表示。 1.3.5 BCD 码:4位二进制数编码的十进制数称为BC

19、D 码(又叫8421码)。BCD 码是无符号整数 1. 压缩BCD 码:用4位二进制数表示一个十进制数位。 2. 非压缩BCD 码:用8位二进制数表示一个十进制数位。 1.4 几种基本的逻辑运算 1.4.1 “与”运算(AND) Y = A B = A B = A AND B 1.4.2 “或”运算(OR) Y = A + B = A B = A OR B 1.4.3 “非”运算(NOT) Y = A 1.4.4 “异或”运算(XOR) Y = ?=A B A B = A XOR B 所有的逻辑运算都是按位操作的。 第 2 章 80x86计算机组织 本章内容也是本课程的基础,通过本章学习,使学

20、生明确汇编语言程序设计所要掌握的存储器的组织方式、CPU 寄存器的结构(编程结构)。 CPU 寄存器的结构(编程结构)、存储器的组织方式。 5学时。 2.1 80x86微处理器 1. 80x86是美国Intel 公司生产的微处理器系列。 2. 计算机主要由运算器、控制器、存储器和输入输出设备构成。 3. 中央处理器(central processing unit, CPU):把运算器和控制器集成在一个芯片上,构成中央处理机。80x86就是这样一组微处理器系列。 4. 很多计算机厂商把微处理器芯片作为中央处理机,再配上存储器、输入输出设备和系统软件等构成微计算机系统。80x86微处理器系列的主要

21、技术数据名称: (1). 集成度:晶体管数是指芯片中所包含的晶体管数目,它说明器件的集成度; (2). 主频是指芯片所用的主时钟频率,它直接影响计算机的运行速度。 (3). 数据总线负责计算机中数据在各组成部分之间的传送。 1). 数据总线宽度是指在芯片内部数据传送的宽度。 2). 外部数据总线宽度则是指芯片内和芯片外交换数据的宽度。 (4). 地址总线宽度是指专用于传送地址的总线宽度,根据这一数值(如为n)可确定处理机可以访问的 存储器的最大范围(寻址空间=2n )。 1). 字节(byte):在计算机里,8个二进制位组成一个字节,一般存储器以字节为存储信息的基本单位,用符号B 来表示。在存

22、储器里一般用KB 、MB 、GB 为存储容量的单位。 2). 1KB=1024B=210B ,1MB=1024KB=220B ,1GB=1024MB=230B 5. 在计算机里,采用层次结构的存储器组织是解决存储器容量、速度、价格三者矛盾的最有效方法。 (1). 中间层次是主存储器,又称为内存。 (2).比中间层次速度更高、但容量较小的一层称为高速缓冲存储器(cache)。 (3).比中间层次速度慢、但容量很大的一层称为外存储器。如磁带、磁盘、光盘等。 6.提高计算机的工作速度可以说是微处理器芯片发展的核心问题。从80486起,把协处理器集成到芯片中的目的也是为了提高浮点处理速度。字长的增加有

23、利于提高计算机解题的精度。 7.从80286开始,在机器的工作方式上,除8086提供的实模式外,还增加了保护模式的工作方式。在80386中还增加了一种虚拟8086的工作模式。 2.2基于微处理器的计算机系统构成 2.2.1硬件:是指能看得见、摸得着的物理部件。 1.组成计算机的三要素:CPU、存储器(memory)和输入/输出(I/O)子系统。用系统总线连接。 (1).存储器(内存):计算机的记忆部件。 (2).中央处理器CPU:包括运算器和控制器两部分。 1).运算器执行所有的算术和逻辑运算指令; 2).控制器则负责全机的控制工作。 (3).I/O子系统:包括I/O设备及大容量存储器两类外部

24、设备。 1).I/O设备是指负责与计算机的外部世界通信用的输入、输出设备; 2).大容量存储器是指可存储大量信息的外部存储器。 2.系统总线:把CPU、存储器和I/O设备连接起来,用来传送各部件之间的信息。系统总线的动作由总线控制逻辑负责指挥。 (1).数据总线:传送信息; (2).地址总线:指出信息的来源和目的地; (3).控制总线:规定总线的动作。 2.2.2软件:为运行、管理和维护计算机而编制的各种程序的总和。分为系统软件和用户软件两大类。 1.系统软件:由计算机生产厂家提供给用户的一组程序。其核心是操作系统。它包括: (1).操作系统的主要部分是常驻监督程序(monitor)。 (2)

25、.I/O驱动程序:对I/O设备进行控制和管理。 (3).文件管理程序:处理存储在外存储器中的大量信息。 (4).文本编辑程序:建立、输入或修改文本,并存入内存储器或大容量存储器中(如EDIT等)。 (5).翻译程序(translator) 1).汇编程序:把由用户编制的汇编语言源程序翻译成机器语言目标程序。 a.汇编语言:一种与机器语言几乎一一对应的符号语言,但在书写时使用由字符串组成的助 记符。 b.机器语言:由二进制代码组成的语言。 c.指令:计算机能识别并能直接加以执行的二进制的语句。 2).编译程序:把高级语言源程序翻译成机器语言程序的系统程序。 3).解释程序:对高级语言一边解释一边

26、执行的翻译程序。 (6).连接程序(linker):把要执行的程序与库文件或其他已经翻译的子程序连接在一起,形成机器能执 行的程序。 (7).装入程序(loader):把程序从外存储器装入内存储器,以便机器运行。 (8).调试程序(debug):系统提供给用户能监督和控制用户程序的一种工具。 (9).系统程序库和用户程序库:各种标准程序、子程序及一些文件的集合。 2.用户软件:用户自行编制的各种应用程序。 2.3中央处理机 2.3.1中央处理机CPU的组成 1.CPU的任务是执行存放在存储器里的指令序列。 2.CPU芯片中除高速缓冲存储器之外,主要由以下三部分组成: (1).算术逻辑部件(ar

27、ithmetic logic unit,ALU):用来进行算术和逻辑运算。 (2).控制逻辑:负责对全机的控制工作。 (3).工作寄存器:用来存放计算过程中所需要的或所得到的各种信息。 2.3.280x86寄存器组 寄存器可以分为程序可见的寄存器和程序不可见的寄存器两大类。 程序可见的寄存器是指在汇编语言程序设计中用到的寄存器,分为通用寄存器、专用寄存器和段寄存器3类。 程序不可见的寄存器是指一般应用程序设计中不用而由系统所用的寄存器。 1.通用寄存器 (1).数据寄存器:AX、BX、CX、DX,四个16位通用寄存器,用来暂时存放计算过程中所用到的 操作数、结果和其他信息。既可以以字形式(如A

28、X)也可以以字节形式(如AH、AL)访问。 1).AX(accumulator):累加器,算术运算的主要寄存器。所有的I/O指令都使用这一寄存器与外 部设备传送信息。 2).BX(base):通用寄存器,在计算存储器地址时常用作基址寄存器。 3).CX(count):通用寄存器,在循环和串操作指令中用作隐含的计数器。 4).DX(data):通用寄存器,在作双字长运算时把DX和AX合在一起存放一个双字长数,DX用 来存放高位字。对某些I/O操作,DX用于对I/O端口的寄存器间接寻址。 (2).指针及变址寄存器:SP、BP、SI、DI,四个16位寄存器。 1).SP:堆栈指针寄存器。 2).BP

29、:基址指针寄存器。 3).SI:源变址寄存器。 4).DI:目的变址寄存器。 (3).对于80386及其后继机型则是32位的通用寄存器,包括EAX、EBX、ECX、EDX、ESP、EBP、 EDI和ESI。这些寄存器都可以存放数据,也可以当32位的地址寄存器使用。 2.专用寄存器:IP、SP、FLAGS,3个16位寄存器。 (1).IP:指令指针寄存器。存放代码段中的偏移地址。80386及其后继机型则是EIP。 (2).SP:堆栈指针寄存器,指示栈顶的偏移地址。80386及其后继机型则是ESP。 (3).FLAGS:标志寄存器,又称为程序状态字寄存器(program status word,

30、PSW)。由条件码标志(flag)、 控制标志和系统标志构成。80386及其后继机型则是EFLAGS。8086/8088的FLAGS如下所示: 设置的。由于这些状态信息往往作为后续条件转移指令的转移控制条件,所以称为条件码。 a.OF:溢出标志(overflow flag)。结果溢出OF=1,否则OF=0。 b.SF:符号标志(sign flag)。结果为负SF=1,否则SF=0。 c.ZF:零标志(zero flag)。结果为0时ZF=1,否则ZF=0。 d.CF:进位标志(carry flag)。最高有效位有进位或借位CF=1,否则CF=0。 e.AF:辅助进位标志或半进位标志(auxil

31、iary carry flag)。半个字节产生的进位或借位时AF=1, 否则AF=0。 f.PF:奇偶标志(parity flag)。结果低8位中所含的1的个数为偶数时PF=1,否则PF=0。 2).控制标志位:为方向标志(direction flag, DF),在串处理指令中控制处理信息的方向用。 a.DF=1:变址寄存器SI和DI减量,使串处理从高地址向低地址方向处理。 b.DF=0:变址寄存器SI和DI增量,使串处理从低地址向高地址方向处理。 3).系统标志位:可以用于I/O、可屏蔽中断、程序调试、任务切换和系统工作方式等的控制。 a.TF:陷阱标志(trap flag, TF),又称单

32、步标志。用于调试时的单步方式操作。TF=1时每条指 令执行完后产生陷阱(中断),TF=0时不产生陷阱。 b.IF:中断标志(interrupt flag, IF)。IF=1时允许可屏蔽中断请求,IF=0时禁止可屏蔽中断。 c.I/O 特权级(I/O privilege level, IOPL),在保护模式下,用于控制对I/O地址空间的访问。 (4).标志位的测试:用调试程序DEBUG测试。测试含义见书24页表2.2所示。 3.段寄存器:是一种专用寄存器,它们专用于存储器寻址,用来直接或间接地存放段地址。在80286以前的处理器中只有CS、DS、SS、ES四个16位寄存器。从80386起增加了F

33、S和GS两个附加的数据段寄存器。 2.4存储器 2.4.1存储单元的地址和内容: 1.字节:每8位二进制数组成一个字节(Byte)。在存储器里是以字节为单位存储信息。 2.字:16位二进制数(2个字节)组成一个字。分成低位字节和高位字节存储。 3.存储单元的地址:为了正确的存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址。以字节为单位给存储单元按二进制从0开始顺序进行的编号。它是无符号的二进制整数,书写格式为十六进制数。 (1).选址能力:若干位(如x位)二进制数(相当于若干根地址线)所能选择的最大存储单元的地址数(2x)。 (2).1K=1024=210。所以16位二进制

34、数的选址能力为216=64KB。用0FFFFH表示。IBM PC机 (8086/8088 CPU)的选址能力为220=1MB。 4.存储单元的内容:该存储单元存放的信息。存储器的内容取之不尽。 (1).字节的存储:直接存入某存储单元。 (2).字的存储:一个字存入存储器要占用两个单元。存放时,低位字节存入低地址单元,高位字节存 入高位地址单元。字单元的地址用它的低地址表示,应尽量为偶数地址。 (3).如果用X表示某存储单元的地址,则X单元的内容可以表示为(X);假如X单元中存放着Y,而 Y又是一个地址,则可用(Y)=(X)来表示Y单元的内容。 (4).存储器的内容取之不尽。 2.4.2实模式存

35、储器寻址 80x86中除8086/8088只能在实模式下工作外,其他微处理器均可在实模式或保护模式下工作。实模式就是为8086/8088而设计的工作方式,实模式下允许的最大寻址空间为1MB。它要解决在16位字长的机器里怎么提供20位地址的问题,而解决的办法是采用存储器地址分段的方法。 1.存储器地址的分段 (1).段:程序员在编制程序时要把存储器划分成段,在每个段内地址空间是线性增长的。段的最大长 度为64KB,以便能用16位二进制数表示段内地址。 1).小段:从0地址开始,每16字节为一小段。小段的首地址用16进制数表示时其最低位为0。 2).段的起始地址:段不能起始于任意地址,而必须从任一

36、小段(paragraph)的首地址开始。(2).物理地址、段地址、偏移地址 1).物理地址(PA):在1MB的存储器里,每一个存储单元都有一个唯一的20位地址,称为该存 储单元的物理地址(20位)。20位物理地址由16位段地址和16位偏移地址组成。 2).段地址:段起始地址的高16位值(16位),低4位固定为0被省去。 3).偏移地址(偏移量EA):指在段内相对于段起始地址的偏移值(16位)。 4).物理地址= 段地址10H + 偏移地址。用段地址:偏移地址表示。 2.段寄存器:在808680286中,有4个专门存放段地址的寄存器。 (1).代码段CS:存放当前正在运行的程序。 (2).数据段

37、DS:存放当前运行程序所用的数据。 (3).堆栈段SS:定义堆栈的所在区域。 (4).附加段ES:附加的数据段。在80386及其后又增加了FS和GS两个附加数据段寄存器。 除非专门指定,一般情况下,各段在存储器中的分配是由操作系统负责的。而且允许段重叠。如果段超过64KB则将其作为2个以上的段,并动态修改段地址。 2.4.3保护模式存储器寻址 从80286起,就引出了保护模式的存储器寻址,其直接原因:首先是实模式的寻址空间为1MB,这不能满足80286的16MB和80386等的4GB或更多的地址空间寻址。其次是为了使微机系统能支持多任务处理。在系统支持多任务功能的同时,系统也支持了虚拟存储器特

38、性。 1.逻辑地址 (1).在实模式下逻辑地址即为段地址:偏移地址。物理地址= 段地址10H + 偏移地址 (2).在保护模式下逻辑地址则由选择器和偏移地址两部分组成。选择器存放在段寄存器中,但它不能 直接表示段基地址,而由操作系统通过一定的方法取得段基地址,再和偏移地址相加,从而求得所选存储单元的物理地址。 2.描述符 (1).描述符用来描述段的大小、段在存储器中的位置及其控制和状态信息,它由基地址、界限、访问 权和附加字段四部分组成。描述符的内容是由系统设置的,而不是由用户建立的。 1).基地址(base)部分用来指定段的起始地址; 2).界限(limit)部分存放着该段的段长度; 3).

39、访问权(access rights)部分用来说明该段在系统中的功能,并给出该段的一些控制信息; 4).附加字段部分在386及其后继机型中存在,它用来表示该段的一些属性。 (2).系统按选择器的内容,根据指定的途径可以找到所选段对应的描述符,从而可以根据其给出的基 地址和界限值,确定所要找的存储单元所在的段,再加上逻辑地址中指定的偏移地址,就可以找到相应的存储单元。 2.5外部设备 1.端口寄存器:外部设备与主机(CPU和存储器)的通信是通过接口进行的。每个接口包括一组寄存器称为端口寄存器。 (1).数据寄存器:存放要在外设和主机之间传送的数据。 (2).状态寄存器:保存外设或接口的状态信息。

40、(3).命令寄存器:CPU发给外设或接口的控制命令通过它传送。 2.端口地址(端口号):主机给外设中的每个寄存器定义一个二进制数的编号即为端口地址。其地址空间独立于内存地址之外可达64KB。其范围为0000FFFFH。 3.主机与外设交换信息:通过输入/输出指令完成。 4.BIOS、DOS功能调用:操作系统提供的中断服务子程序。 (1).BIOS存放在机器的ROM中,比DOS的层次还要低。 (2).DOS功能调用是DOS的一个组成部分,在开机时由操作系统从系统磁盘装入存储器。 第 3 章80x86的指令系统和寻址方式 本章内容是本课程的重点,通过本章学习,使学生掌握80x86系列CPU(特别是

41、8086CPU)的指令系统和寻址方式。对传送类指令、算术运算类指令、控制转移类指令要非常熟悉。 传送类指令、算术运算类指令、控制转移类指令、存储器寻址方式、段内直接寻址的地址位移量。 12学时。 1.指令系统:计算机能够提供给用户的一组指令集即为该计算机的指令系统。 2.指令的组成:计算机中的指令由操作码字段和操作数字段组成。 (1).操作码字段:指示计算机所要执行的操作。 (2).操作数字段:指出在指令执行操作的过程中所需要的操作数。 3.指令的格式:操作码操作数,操作数 ,操作数 。8086/8088 CPU规定操作数不能超过两个。但在80286及其后的CPU可以使用3操作数指令。 4.源操作数和目的操作数:使用两地址指令的两个操作数分别称为源操作数和目的操作数。 5.操作数的表示方法使用的是寻址方式。寻址方式是规定寻找操作数的方法。 6.汇编语言:符号语言。用助记符来表示操作码,用符号或符号地址来表示操作数或操作数地址。它与机器指令一一对应。 3.180x86的寻址方式 3.1.1与数据有关的寻址方式 这种寻址方式用来确定操作数地址从而找到操作数。 1.立即数寻

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 策划方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁