ImageVerifierCode 换一换
格式:DOCX , 页数:297 ,大小:360.62KB ,
资源ID:7636887      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7636887.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《汇编语言程序设计》教案及答案第二版.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《汇编语言程序设计》教案及答案第二版.docx

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

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

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

4、,清华大学出版社,19959. 戴梅萼、史嘉权,微型计算机技术及应用从16位到32位(第二版),清华大学出版社,199610. 张昆藏,IBM PC/XT微型计算机接口技术,清华大学出版社,199111. 孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/Pentium),学苑出版社,199312. 吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社第 1 章 基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。【重点难点】二进制数及其与

5、其它数制的转换、补码及其运算。【课 时 数】3学时。1.1 进位计数制与不同基数的数之间的转换1.1.1 二进制数1. 十进制数:(Decimal)(数后面加D或省略表示的是十进制数)(1). 十进制数表示为:anan -1a0.a -1a -2a -m 其含义如下:1). 基数为102). 10个数码0 、1、2、3、4、5、6、7、8、93). 逢10进1(2). 权:相应于式中每位数字的10 k称为该位数的权。(3). 数的值:每位数字乘以其权所得到的乘积之和即为该数的值。即如上述多项式展开后所得到的和。2. r进制数:(1). r进制数表示为:anan -1a0.a -1a -2a -

6、m 其含义如下:1). 基数为r2). r个数码0 、1、2、 r-13). 逢r进1(2). 权:相应于式中每位数字的r k称为该位数的权。(3). 数的值:每位数字乘以其权所得到的乘积之和即为该数的值。即如上述多项式展开后所得到的和。3. 二进制数:(数后面加B表示二进制数)(1). 二进制数表示为:anan -1a0.a -1a -2a -m 其含义如下:1). 基数为22). 2个数码0 和13). 逢2进1(2). 权:相应于式中每位数字的2 k称为该位数的权。(3). 数的值:每位数字乘以其权所得到的乘积之和即为该数的值。即如上述多项式展开后所得到的和。4. 十六进制数:(Hexa

7、decimal)(数后面加H表示十六进制数)(1). 十六进制数表示为:anan -1a0.a -1a -2a -m 其含义如下:1). 基数为162). 16个数码0 、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F(或a f)3). 逢16进1(2). 权:相应于式中每位数字的16 k称为该位数的权。(3). 数的值:每位数字乘以其权所得到的乘积之和即为该数的值。即如上述多项式展开后所得到的和。1.1.2 二进制数和十进制数之间的转换1. 二进制数转换为十进制数:根据上面的二进制数多项式按权展开求和即为十进制数。2. 十进制数转换为二进制数(1). 降幂法:首先写出要转换的十进

8、制数,其次写出所有小于此数的各位二进制权值,然后用要转换的十进制数减去与它最相近的二进制权值,如够减则减去并在相应位记以1;如不够减则在相应位记以0并跳过此位;如此不断反复,直到该数为0为止。(2). 除法1). 十进制整数转换:采用“除2 (基)取余”法进行转换,即把十进制整数除以2,取出余数1或0作为相应二进制数的最低位,把得到的商再除以2,再取出余数1或0作为相应二进制数的次低位。由此类推,继续上述过程直至商为0止,最后一次的余数为二进制数的最高位,依次所得到的余数序列就是转换成的二进制数。2). 十进制小数转换:采用“乘2 (基)取整”法进行转换,即先将十进制小数乘以2,取其整数1或0

9、作为相应二进制小数的最高位,然后将乘积的小数部分再乘以2,并再取其整数作为次高位。依次重复上述过程,直到小数部分为0或达到要求的精度为止。1.1.3 十六进制数及其与二进制、十进制数之间的转换1. 十六进制数的表示:(参见1.1.1节的第4步)以下是几个概念:(1). 位(bit)。bit(Binary digit的缩写)是量度信息的最小单位,1比特为二进制的一位包含的信息量。(2). 字节(Byte)。作为一个单位来处理的一串二进制数位,通常由8位二进制数位组成一个字节。一个字节可以代表一个数字、一个字母或一个特殊符号。也是计算机存储容量的单位。(3). 字(Word)。在计算机中,一般称两

10、个字节为一个字。(4). 字长(Word Length)。计算机的每个字所包含的位数称为字长。字长是计算机的一项重要指标。一般都选为字节的整数倍。2. 十六进制数与二进制数之间的转换(1). 二进制数转换为十六进制数:从二进制数的小数点位置开始,整数部分向左,小数部分向右,每四位二进制数字为一组用一位十六进制数字表示,不足四位的用0补足,就得到一个相应的十六进制数。(2). 十六进制数转换为二进制数:每一位十六进制数用四位二进制数表示,就形成相应的二进制数了。3. 十六进制数与十进制数之间的转换(1). 十六进制数转换为十进制数:根据上面的十六进制数多项式按权展开求和即为十进制数。(2). 十

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

12、0=1,1+1=0 (进位1)2. 乘法规则:00=0,01=0,10=0,11=11.2.2 十六进制数的运算:按照逢16进1的原则进行计算。1.3 计算机中数和字符的表示1.3.1 数的补码表示1. 机器数:在机器中以数值化表示的连同其符号在内的一个数称为机器数。一般用最高有效位来表示符号,正数用0表示,负数用1表示。2. 补码表示法3. 补码求法(1). 正数的补码就是其本身;(2). 负数的补码 = 其正数的补码按位求反+1。4. 符号扩展(如将8位有符号数扩展成为16位有符号数)(1). 正数的符号扩展是在前面补0;(2). 负数的符号扩展是在前面补1。5. n位补码所表示数的范围:

13、-2 n-1N2 n-1-16. 双字长数或双精度数:在机器里,为了扩大表数范围,可以用两个机器字(高位字和低位字)来表示一个机器数,这种数称为双字长数或双精度数。在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码表

14、示。1.3.5 BCD码:4位二进制数编码的十进制数称为BCD码(又叫8421码)。BCD码是无符号整数1. 压缩BCD码:用4位二进制数表示一个十进制数位。2. 非压缩BCD码:用8位二进制数表示一个十进制数位。1.4 几种基本的逻辑运算1.4.1 “与”运算(AND)Y = AB = A B = A AND B1.4.2 “或”运算(OR)Y = A + B = A B = A OR B1.4.3 “非”运算(NOT)Y = 1.4.4 “异或”运算(XOR)Y = B = A XOR B所有的逻辑运算都是按位操作的。第 2 章 80x86计算机组织【教学目的】本章内容也是本课程的基础,通

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

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

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

18、解题的精度。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设备及大容量存储器两类外部设备。1).

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

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

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

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

23、(如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:基址指针寄存器。3).

24、 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, PSW)。由条件码标志(f

25、lag)、控制标志和系统标志构成。80386及其后继机型则是EFLAGS。8086/8088的FLAGS如下所示:1514131211109876543210OFDFIFTFSFZFAFPFCF1). 条件码:用来记录程序中运行结果的状态信息,它们是根据有关指令的运行结果由CPU自动设置的。由于这些状态信息往往作为后续条件转移指令的转移控制条件,所以称为条件码。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。

26、d. CF:进位标志(carry flag)。最高有效位有进位或借位CF=1,否则CF=0。e. AF:辅助进位标志或半进位标志(auxiliary 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). 系

27、统标志位:可以用于I/O、可屏蔽中断、程序调试、任务切换和系统工作方式等的控制。a. TF:陷阱标志(trap flag, TF),又称单步标志。用于调试时的单步方式操作。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. 段寄存器:是一种专用寄存器,它们专

28、用于存储器寻址,用来直接或间接地存放段地址。在80286以前的处理器中只有CS、DS、SS、ES四个16位寄存器。从80386起增加了FS和GS两个附加的数据段寄存器。2.4 存储器2.4.1 存储单元的地址和内容:1. 字节:每8位二进制数组成一个字节(Byte)。在存储器里是以字节为单位存储信息。2. 字:16位二进制数(2个字节)组成一个字。分成低位字节和高位字节存储。3. 存储单元的地址:为了正确的存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址。以字节为单位给存储单元按二进制从0开始顺序进行的编号。它是无符号的二进制整数,书写格式为十六进制数。(1). 选址能力:

29、若干位(如x位)二进制数(相当于若干根地址线)所能选择的最大存储单元的地址数(2x)。(2). 1K=1024=210。所以16位二进制数的选址能力为216=64KB。用0FFFFH表示。IBM PC机(8086/8088 CPU)的选址能力为220=1MB。4. 存储单元的内容:该存储单元存放的信息。存储器的内容取之不尽。(1). 字节的存储:直接存入某存储单元。(2). 字的存储:一个字存入存储器要占用两个单元。存放时,低位字节存入低地址单元,高位字节存入高位地址单元。字单元的地址用它的低地址表示,应尽量为偶数地址。(3). 如果用X表示某存储单元的地址,则X单元的内容可以表示为(X);假

30、如X单元中存放着Y,而Y又是一个地址,则可用(Y)=(X)来表示Y单元的内容。(4). 存储器的内容取之不尽。2.4.2 实模式存储器寻址80x86中除8086/8088只能在实模式下工作外,其他微处理器均可在实模式或保护模式下工作。实模式就是为8086/8088而设计的工作方式,实模式下允许的最大寻址空间为1MB。它要解决在16位字长的机器里怎么提供20位地址的问题,而解决的办法是采用存储器地址分段的方法。1. 存储器地址的分段(1). 段:程序员在编制程序时要把存储器划分成段,在每个段内地址空间是线性增长的。段的最大长度为64KB,以便能用16位二进制数表示段内地址。1). 小段:从0地址

31、开始,每16字节为一小段。小段的首地址用16进制数表示时其最低位为0。2). 段的起始地址:段不能起始于任意地址,而必须从任一小段(paragraph)的首地址开始。(2). 物理地址、段地址、偏移地址1). 物理地址(PA):在1MB的存储器里,每一个存储单元都有一个唯一的20位地址,称为该存储单元的物理地址(20位)。20位物理地址由16位段地址和16位偏移地址组成。2). 段地址:段起始地址的高16位值(16位),低4位固定为0被省去。3). 偏移地址(偏移量EA):指在段内相对于段起始地址的偏移值(16位)。4). 物理地址 = 段地址10H + 偏移地址。用段地址:偏移地址表示。2. 段寄存器:在808680286中,有4个专门存放段地址的寄存器。(1).

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1