汇编语言是一门涉及硬件的程序设计语言,汇编语言程序设计是计算机专业的一门重要的专业基础课。汇编语言程序具有实时性强、执行速度快、代码效率高等优点,学好这门课程,对了解计算机系统的组成结构与工作原理、体验底层编程的乐趣以及更深入地学习程序设计方法很有意义,同时也有助于更好地理解数据结构、计算机组成原理、操作系统等课程中所学的知识。
本书特点
●认识领先。本书根据人的认识规律实践-理论-实践的特点组织教学内容,在全书开始及各重要章节开始,都以完整的实例引导,学生通过实例能感性地了解到需要学习的内容以及意义,比纯概念式的灌输能产生更好的教学效果。
●准确定位。本书强调为应用类读者服务,力求门槛低、内容全、描写细腻,与“应用类”读者群的需求相适应。选择从具有代表性、汇编难度适中的8086/8088入手,重点关注汇编语言程序设计方法,为学生进一步掌握计算机控制技术、学习计算机接口和单片机等课程打好基础。
●精选用例。本书在设计用例时,突出主要知识点及应用中的关键问题,尽量减少代码量并给出详细注释,让程序结构与设计思想一目了然。
●加强输入/输出程序设计的教学。本书加入了对外设操作常用芯片的介绍,着重讨论外部连接、工作方式及其设定,学习相关程序设计方法,突出软件方面内容。对于这一部分,教师可以根据实际情况灵活处理,即使之后开设接口课,多数会基于C语言教学,本书介绍的输入输出内容也是有益的衔接。
●配套实验指导。随本书出版,我们将在出版社网站上同时发布相应的实验指导材料,采用认识-模仿-组装-创新的结构组织实验内容。在每次实验前,教师可以向学生下发当次实验的电子文档,学生上机时,有些内容只需要复制、粘贴就可以进入实质性的实验,突出汇编语言程序算法与设计方法的学习,避免将大量的时间用到文字输入与审校中。为了让学生充分思考问题,又设计了一些带创新性的问题,包括程序组装与程序设计题,引导学生不断深入。
无
汇编语言是一门涉及硬件的程序设计语言,汇编语言程序设计是计算机专业的一门重要的专业基础课。汇编语言一般与某一种CPU提供的机器指令相对应,人们可以用它直接控制硬件系统进行工作,可以直接访问计算机系统内部各资源,汇编语言程序具有实时性强、执行速度快、代码效率高等优点。学习汇编语言程序设计时,由于软硬件知识交叉,因此对程序设计能力要求较高,学习难度较大。但学好本课程,对于了解计算机系统的组成结构与工作原理、体验底层编程的经验、更深入地学习程序设计方法很有意义,同时也会更加通透地理解数据结构、计算机组成原理、操作系统等课程中所学的知识,也为学习计算机接口、单片机及其他计算机控制类课程打下坚实的基础。本书以8086/8088指令为主,以实模式下的80x86指令为辅,系统地介绍了汇编语言的基础理论知识和程序设计方法,较深入地介绍了与汇编语言编程相关的硬件知识,强调结构化与软件重用的思想。本教材以面向应用、深入浅出、重视实践、方便教学为宗旨,顺应人们实践—理论—实践的认识规律,面对枯燥、抽象的汇编语言程序,以实例先行,力求突出“怎么用”,再讨论“为什么这样用,规律是什么”,以及如何利用这些基本方法去解决实际问题,引导读者理论联系实际,切实掌握本课程主要知识点,进而提高程序设计能力。
汇编语言是一门程序设计语言,学习程序设计的思想与方法既是学习的重点也是难点,本书的目标就是要帮助读者提高程序设计的能力,较深入地掌握汇编语言程序设计的思想与方法。学习汇编语言时,有些读者已经学习过例如C语言等高级语言,这将为我们理解程序设计的思想打下良好基础;但也可能从未学习过其他语言,此时虽然框框较少,但建立计算机语言与程序设计的概念将是一大难题。汇编语言是多类知识交叉的学科,一部分知识往往还连带着其他的相关内容,如果处理不好这些连带的内容,将影响学习者对当前知识点的理解。但是如果先扫清外围,例如先介绍CPU与存储器的内部结构、数据形式,再介绍指令与指令系统、程序设计方法等等,如此虽然可以做到内容单一,也容易接受,但教学未以程序设计为线索展开,可能在开始学习后相当长一段时间里接触不到汇编语言程序设计的内容,这将令学习过程抽象无趣。本书考虑到这些情况,采用了实践先行的方法,以一个完整的程序实例引导,首先通过演示与动手,对程序设计及一些基本概念、基本方法建立感性认识,从而屏蔽了一些相关知识带来的干扰,在此基础上再逐一展开。学习的过程除了理解还有记忆与模仿,人们往往都是从死记、模仿走向创新的,实践引导的过程将为模仿创造条件,也提供了记忆的线索与内容。以程序为线索展开,将使我们在整个学习过程中的每一步都目标明确、主题清晰、基础扎实,在不知不觉中登上程序设计的巅峰。
汇编语言的主要用途之一是涉及硬件的开发,目前社会上对具有一定硬件基础的计算机人才的需求较旺,本书围绕输入、输出程序设计介绍了若干常用芯片的结构与程序设计方法,既加强了涉及硬件的程序设计技术的教学,也有助于提高设计实际应用系统的能力。
全书共9章。第1章,通过一个完整的8086汇编语言程序示例建立对汇编语言程序及汇编过程的感性认识,在此基础上介绍数据的表示形式、基本的DOS系统功能调用、微处理器的构成、内存与外设的概念。第2章,介绍寻址方式、指令的格式与最基本的一些8086汇编指令,通过一些简单程序段加深对指令的深入理解,同时也充分表现了指令在程序设计中的意义。为做到实践先行,第2章中有些程序(前面加有星号标志)涉及分支与循环,对于没有其他程序设计语言基础的读者,只要求对它们有所印象,实验时原样复制拷贝后编译执行即可,在学习第4章前不要求深入理解与掌握。第3章,介绍汇编语言语句格式与程序结构,伪指令及汇编语言程序开发环境,DEBUG程序调试方法。第4章,系统介绍DOS系统功能调用,程序流程概念,分支与循环程序及其设计方法,串处理程序设计方法。第5章,介绍子程序设计,结构化程序设计思想与方法,宏与宏程序设计方法。第6章,介绍BIOS系统调用,中断的概念,中断程序、输入与输出程序设计的一般方法。第7章,介绍一些常见的接口芯片,在此基础上介绍并行、串行程序,A/D与D/A转换程序,中断控制程序设计等设计方法。第8章,介绍磁盘文件的概念及其管理程序的设计方法。第9章,介绍汇编语言的其他技术,包括结构、重复块、条件汇编、多模块程序设计和C语言与汇编语言相互调用、驻留程序设计等。第10章,介绍80x86汇编的特点及概念。书后给出了几个附录,介绍了汇编语言程序设计常用的指令、DOS系统功能调用、BIOS功能调用等。本书第2、3、4、6章及71节、72节、74节由林姗编写,第5、8、9、10章由程传慧编写,程学先编写其他部分并修改全稿。陈永辉、史涵、鲁瑛、余小燕、周金松、椹章衡等参加校对与程序调试,在此表示感谢。
本书可作为高等院校计算机及相关专业应用类学生教材,也可供从事计算机应用与开发的各类人员学习和使用。建议本课程教学时数为90学时,其中包括实验36学时。由于编者水平有限,书中如有错误和不妥之处,敬请广大读者批评指正。
汇编语言是一门涉及硬件的程序设计语言,汇编语言程序设计是计算机专业的一门重要的专业基础课。汇编语言程序具有实时性强、执行速度快、代码效率高等优点,学好这门课程,对了解计算机系统的组成结构与工作原理、体验底层编程的乐趣以及更深入地学习程序设计方法很有意义,同时也有助于更好地理解数据结构、计算机组成原理、操作系统等课程中所学的知识。
本书特点
●认识领先。本书根据人的认识规律实践-理论-实践的特点组织教学内容,在全书开始及各重要章节开始,都以完整的实例引导,学生通过实例能感性地了解到需要学习的内容以及意义,比纯概念式的灌输能产生更好的教学效果。
●准确定位。本书强调为应用类读者服务,力求门槛低、内容全、描写细腻,与“应用类”读者群的需求相适应。选择从具有代表性、汇编难度适中的8086/8088入手,重点关注汇编语言程序设计方法,为学生进一步掌握计算机控制技术、学习计算机接口和单片机等课程打好基础。
●精选用例。本书在设计用例时,突出主要知识点及应用中的关键问题,尽量减少代码量并给出详细注释,让程序结构与设计思想一目了然。
●加强输入/输出程序设计的教学。本书加入了对外设操作常用芯片的介绍,着重讨论外部连接、工作方式及其设定,学习相关程序设计方法,突出软件方面内容。对于这一部分,教师可以根据实际情况灵活处理,即使之后开设接口课,多数会基于C语言教学,本书介绍的输入输出内容也是有益的衔接。
●配套实验指导。随本书出版,我们将在出版社网站上同时发布相应的实验指导材料,采用认识-模仿-组装-创新的结构组织实验内容。在每次实验前,教师可以向学生下发当次实验的电子文档,学生上机时,有些内容只需要复制、粘贴就可以进入实质性的实验,突出汇编语言程序算法与设计方法的学习,避免将大量的时间用到文字输入与审校中。为了让学生充分思考问题,又设计了一些带创新性的问题,包括程序组装与程序设计题,引导学生不断深入。
前言
第1章 基础知识1
11 汇编语言概述1
111 汇编语言程序示例1
112 机器语言3
113 汇编语言4
114 高级语言5
115 三种语言的特点比较6
116 汇编语言源程序的格式6
12 计算机中数和字符的表示7
121 不同进位制的数及相互间的转换7
122 BCD码11
123 ASCII码12
124 整数和小数13
125 原码、反码和补码13
13 计算机中数的运算规则15
131 算术运算15
132 逻辑运算15
14 80x86微处理器17
141 微型计算机的结构17
142 中央处理器18
15 内存储器22
151 内存单元的地址和内容22
152 内存储器寻址24
16 外部设备28
小结29
习题30
第2章 8086指令系统初步32
21 8086指令格式32
22 操作数的形式及寻址方式33
221 寻址方式的概念33
222 寻址方式36
223 寻址方式小结42
23 Intel 8086基本指令43
231 数据传送指令43
232 算术运算指令48
233 位操作指令53
小 结60
习题61
第3章 汇编语言程序结构63
31 表达式63
311 常量63
312 数值表达式64
313 变量和标号64
314 地址表达式66
32 常用的汇编伪指令70
321 段定义伪指令70
322 假定伪指令ASSUME71
323 置汇编地址计数器伪指令
ORG72
324 符号定义伪指令LABEL72
325 源程序结束伪指令END72
33 汇编语言程序的上机过程73
331 开发环境73
332 上机过程74
34 调试程序75
小结77
习题78
第4章 汇编语言程序设计80
41 程序设计方法概述80
411 程序设计的步骤80
412 程序流程图设计方法81
42 顺序结构程序设计82
43 DOS系统功能调用83
431 DOS系统功能调用的一般方法83
432 常用系统功能调用84
44 分支结构程序设计86
441 常见的标志处理指令86
442 控制转移类指令87
443 分支结构程序设计91
45 循环结构程序设计95
451 循环指令95
452 循环程序的基本结构96
453 单重循环程序的设计举例98
454 多重循环程序的设计举例101
46 串处理类指令106
47 数制转换程序设计110
471 其他进制数到二进制数的转换111
472 二进制数到其他进制数的转换113
473 涉及BCD码的转换114
48 数据运算程序设计115
481 BCD码调整指令及涉及BCD码的
运算115
482 浮点数据运算程序设计117
小结122
习题122
第5章 结构化程序设计126
51 结构化程序设计的一般步骤和方法126
52 子程序设计127
521 子程序基本概念127
522 子程序的定义、调用和返回127
523 子程序设计中的现场保护与
参数传递129
524 子程序的嵌套与递归133
525 子程序设计实例138
53 宏汇编147
531 宏的概念147
532 宏指令的定义和使用147
533 宏调用中的参数150
534 宏库及其使用155
535 宏指令与子程序的比较157
小结159
习题159
第6章 输入输出程序设计162
61 输入输出的基本概念162
611 I/O端口地址162
612 I/O指令163
613 数据传送方式164
62 中断及中断程序设计167
621 中断的分类167
622 中断优先级167
623 中断向量表168
624 设置中断向量168
625 应用实例169
63 BIOS功能调用170
64 键盘I/O171
641 键盘中断处理程序171
642 键盘I/O程序172
65 显示器I/O173
651 文本显示方式及字符显示
属性173
652 彩色图形显示方式174
653 显示I/O中断调用174
654 Intel 8279集成电路180
655 8279程序设计184
小结187
习题188
第7章 通信与模数转换程序设计189
71 并行通信189
711 并行通信的概念189
712 可编程并行接口芯片
Intel 8255189
713 Intel 8255程序设计191
72 串行通信I/O194
721 串行通信的概念194
722 异步通信芯片8251200
723 8251应用举例203
73 8259中断控制器及其程序设计205
731 8259A的内部结构205
732 8259程序设计206
74 定时/计数程序设计210
741 可编程内部定时器
8253/8254211
742 IBM PC定时/计数程序
设计212
743 通用发声程序设计212
75 D/A与A/D转换程序设计213
小结218
习题218
第8章 磁盘文件处理程序220
81 磁盘文件概念220
82 传统文件管理方式221
821 顺序存取方式221
822 随机存取方式224
823 随机分块存取方式226
83 扩充文件管理方式227
831 扩充文件管理功能调用227
832 扩充文件管理方式实例228
84 对文件外部特性与目录的操作237
小结239
习题239
第9章 汇编语言程序设计扩展241
91 结构241
911 结构的定义241
912 结构变量及其字段的访问242
92 条件汇编244
93 重复汇编246
931 给定次数的重复汇编伪指令
REPT247
932 由参数个数决定次数的重复
汇编伪指令IRP247
933 由字符串字符个数决定汇编
次数的伪指令IRPC248
94 多模块程序设计249
941 完整的段定义249
942 关于堆栈段的说明251
943 段组的说明和使用252
944 段的简化定义253
945 模块间的通信255
95 汇编语言与C语言的混合编程257
951 汇编语言指令嵌入到C语言
程序中的简单方法257
952 模块连接法258
953 汇编语言调用C语言程序259
96 驻留程序设计260
小结264
习题265
第10章 80x86/Pentium汇编语言程序
设计266
101 从8086到Pentium266
1011 8086/Pentium结构特点266
1012 Pentium工作模式268
1013 Pentium 系统提供的特权级269
102 Pentium CPU的寄存器组织270
103 保护模式下程序使用的逻辑地址与
物理地址272
1031 保护模式内存储器寻址272
1032 选择器和描述符273
1033 保护模式内存储器寻址范围
举例275
1034 程序不可见寄存器276
104 保护模式内存储器寻址方式280
105 指令系统扩展281
1051 源程序结构281
1052 指令集的扩展287
小结293
习题293
附录A 指令表294
附录B伪指令表300
附录CMSDOS与BIOS调用表302
附录DBIOS功能调用307
参考文献310