《汇编语言程序设计》教案 附:习题参考答案
《IBM-PC汇编语言程序设计》 (第2版)
沈美明、温冬婵编著
教案编写时间:20XX年8月18日
前 言
1. 汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
2. 汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。 3. 本教材共有十一章,其内容安排如下:
(1). 第一、二章为汇编语言所用的基础知识。
(2). 第三章详细介绍80x86系列CPU的指令系统和寻址方式。
(3). 第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。 (4). 第五、六章说明循环、分支、子程序结构和程序设计的基本方法。 (5). 第七章说明宏汇编、重复汇编及条件汇编的设计方法。
(6). 第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。 (7). 第九章说明BIOS和DOS系统功能调用的使用方法。
(8). 第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计
方法和程序实例。
附:教学参考书
1. 沈美明、温冬婵编著,IBM–PC汇编语言程序设计(第2版),清华大学出版社,20XX年(教材) 2. 沈美明、温冬婵编著,IBM–PC汇编语言程序设计,清华大学出版社,1991年
3. 沈美明、温冬婵编著,IBM–PC汇编语言程序设计—例题习题集,清华大学出版社,1991年6月 4. 沈美明、温冬婵、张赤红编著,IBM–PC汇编语言程序设计—实验教程,清华大学出版社,1992年 5. 周明德,微型计算机IBM PC/XT(0520系列)系统原理及应用(修订版),清华大学出版社,1991 6. 郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,1995
7. 王士元、吴芝芳,IBM PC/XT[长城0520] 接口技术及其应用,南开大学出版社,1990 8. 杨素行,微型计算机系统原理及应用,清华大学出版社,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.1 80X86微处理器7
2.2 基于微处理器的计算机系统构成8 2.3 中央处理机8 2.4 存储器10 2.5 外部设备11
第 3 章 80X86的指令系统和寻址方式11 3.1 80X86的寻址方式11
3.2 程序占有的空间和执行时间13 3.3 80X86的指令系统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.2 子程序的嵌套42 6.3 子程序举例42
第 7 章 高级汇编语言技术42 7.1 宏汇编42 7.2 重复汇编44 7.3 条件汇编44
第 8 章 输入/输出程序设计45 8.1 I/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 章 图形与发声系统的程序设计54 10.1 显示方式54 10.2 视频显示存储器54
10.3 EGA/VGA图形程序设计55 10.4 通用发声程序56 10.5 乐曲程序57
第 11 章 磁盘文件存取技术57 11.1 磁盘的记录方式58 11.2 文件代号式磁盘存取59 11.3 字符设备的文件代号式I/O60 11.4 BIOS磁盘存取功能61
附录:《IBM—PC汇编语言程序设计》习题参考答案61
第 一 章.习题61 第 二 章.习题62 第 三 章.习题63 第 四 章.习题77 第 五 章.习题82 第 六 章.习题100 第 七 章.习题113 第 八 章.习题119 第 九 章.习题125 第 十 章.习题128 第 十一 章.习题138
第 1 章 基础知识
【教学目的】
本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。 【重点难点】
二进制数及其与其它数制的转换、补码及其运算。 【课 时 数】
3学时。
1.1 进位计数制与不同基数的数之间的转换
1.1.1 二进制数
1. 十进制数:(Decimal)(数后面加D或省略表示的是十进制数)
(1). 十进制数表示为:anan -1…a0.a -1a -2…a -m 其含义如下:
N?an?10?an?1?10nn?1???a0?10?a?1?10?a?2?100?1?2???a?m?10?m??ai?10i
i?n?m1). 基数为10
2). 10个数码0 、1、2、3、4、5、6、7、8、9 3). 逢10进1
(2). 权:相应于式中每位数字的10 k称为该位数的权。 (3). 数的值:每位数字乘以其权所得到的乘积之和即为该数的值。即如上述多项式展开后所得到的和。 2. r进制数:
(1). r进制数表示为:anan -1…a0.a -1a -2…a -m 其含义如下:
Nr?an?r?an?1?rnn?1???a0?r?a?1?r?a?2?r0?1?2???a?m?r?m??ai?ri
i?n?m1). 基数为r
2). r个数码0 、1、2、……、 r-1 3). 逢r进1
(2). 权:相应于式中每位数字的r k称为该位数的权。 (3). 数的值:每位数字乘以其权所得到的乘积之和即为该数的值。即如上述多项式展开后所得到的和。 3. 二进制数:(数后面加B表示二进制数)
(1). 二进制数表示为:anan -1…a0.a -1a -2…a -m 其含义如下:
N2?an?2?an?1?2nn?1???a0?2?a?1?2?a?2?20?1?2???a?m?2?m??ai?2i
i?n?m1). 基数为2
2). 2个数码0 和1 3). 逢2进1
(2). 权:相应于式中每位数字的2 k称为该位数的权。 (3). 数的值:每位数字乘以其权所得到的乘积之和即为该数的值。即如上述多项式展开后所得到的和。 4. 十六进制数:(Hexadecimal)(数后面加H表示十六进制数)
(1). 十六进制数表示为:anan -1…a0.a -1a -2…a -m 其含义如下:
NH?an?16?an?1?16nn?1???a0?16?a?1?16?a?2?160?1?2???a?m?16?m??ai?16i
i?n?m1). 基数为16
2). 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). 降幂法:首先写出要转换的十进制数,其次写出所有小于此数的各位二进制权值,然后用要转换
的十进制数减去与它最相近的二进制权值,如够减则减去并在相应位记以1;如不够减则在相应位记以0并跳过此位;如此不断反复,直到该数为0为止。 (2). 除法
1). 十进制整数转换:采用“除2 (基)取余”法进行转换,即把十进制整数除以2,取出余数1或0作为相应二进制数的最低位,把得到的商再除以2,再取出余数1或0作为相应二进制数的次低位。由此类推,继续上述过程直至商为0止,最后一次的余数为二进制数的最高位,依次所得到的余数序列就是转换成的二进制数。
2). 十进制小数转换:采用“乘2 (基)取整”法进行转换,即先将十进制小数乘以2,取其整数1或0作为相应二进制小数的最高位,然后将乘积的小数部分再乘以2,并再取其整数作为次高位。依次重复上述过程,直到小数部分为0或达到要求的精度为止。 1.1.3 十六进制数及其与二进制、十进制数之间的转换
1. 十六进制数的表示:(参见1.1.1节的第4步)以下是几个概念:
(1). 位(bit)。bit(Binary digit的缩写)是量度信息的最小单位,1比特为二进制的一位包含的信息量。 (2). 字节(Byte)。作为一个单位来处理的一串二进制数位,通常由8位二进制数位组成一个字节。一
个字节可以代表一个数字、一个字母或一个特殊符号。也是计算机存储容量的单位。 (3). 字(Word)。在计算机中,一般称两个字节为一个字。
(4). 字长(Word Length)。计算机的每个字所包含的位数称为字长。字长是计算机的一项重要指标。一
般都选为字节的整数倍。
2. 十六进制数与二进制数之间的转换
(1). 二进制数转换为十六进制数:从二进制数的小数点位置开始,整数部分向左,小数部分向右,每
四位二进制数字为一组用一位十六进制数字表示,不足四位的用0补足,就得到一个相应的十六