本书以32位Intel 80x86处理器和个人计算机为硬件平台,基于32位Windows操作系统软件平台,借助微软MASM汇编程序讲解汇编语言程序设计。本书论述了基本的汇编语言基础、常用处理器指令和汇编语言伪指令以及顺序、分支、循环、子程序结构,还包括扩展的Windows和DOS编程、与C++语言的混合编程、输入输出指令及编程内容,并涉及浮点、多媒体及64位指令等方面。
本书可以作为普通高校“汇编语言程序设计”等课程的教材或参考书,适合计算机、电子、通信和自控等电类专业的本科学生以及软件学院、计算机等电类专业的高职学生、成教学生阅读,同时也适合作为计算机应用开发人员和希望深入学习汇编语言的读者的极佳参考书。
本书结合作者近年来的32位汇编语言教学实践,以32位Intel 80x86处理器和个人计算机为硬件平台,基于32位Windows操作系统软件平台,借助微软MASM汇编程序讲解汇编语言程序设计,包括基本的汇编语言基础、常用处理器指令和汇编语言伪指令以及顺序、分支、循环、子程序结构,还包括扩展的Windows和DOS编程、与C++语言的混合编程、输入输出指令及编程,并涉及浮点、多媒体及64位指令等先进技术。本书是河南省精品资源共享课程(原河南省精品课程)“汇编语言程序设计”的配套教材。
本书特点:
简单易用的开发环境。本书构建了一个简单易用的开发环境,无须安装和配置,直接复制就可使用,方便初学者快速上手。
重点明确的教学内容。本书不是详尽展开所有处理器指令、全部汇编伪指令,而是选择处理器通用的基本指令和反映汇编语言特色的常用伪指令;没有引出复杂的程序格式,而是侧重编程思想和技术。
突出实践的教学过程。本书以约70个例题程序和约60个习题程序贯穿教学内容。
循序渐进的教学原则。为了便于学生理解和掌握,且便于教师实施教学,本书在编写过程中尽量做到描述详尽、图表准确,对重点和难点使用浅显生动的语言,深入浅出地进行详尽讲解。
内容丰富的教学网站。为了更好地服务于广大师生和读者,作者开辟了“大学微机技术系列课程教学辅助网站”(http://www5.zzu.edu.cn/qwfw),提供电子课件、教学大纲、教材勘误、疑难解答、输入输出子程序库、示例源程序文件等辅助资源。
与第1版相比,第2版的总体结构和主体内容没有改变,主要针对教学过程中师生反馈的问题增加了更加详尽的讲解。具体来说,修订包括:第4章增加了示例程序的流程图和说明;第2章和第4章特别加入了对各种寻址方式的图示;第3章重点展开了MOV指令。
随着计算机技术的发展,国内高校师生希望能够在32位Windows操作系统平台学习汇编语言,但如何面向初学者实施教学却面临诸多难点。于是,我们结合近年来的32位汇编语言教学实践编写了本书。
本书具有以下特色。
1简单易用的开发环境
目前,32位Windows平台的汇编语言编程主要使用MASM32和Visual C++集成化开发系统,但它们都略显复杂和庞大,不适合初学者(本书将此内容安排在第6章和第7章)。为此,本书构建了一个简单易用的开发环境(详见第1章),无需安装和配置,直接复制就可使用。它支持32位Windows控制台和16位DOS环境,提供MASM汇编程序、连接程序、WinDbg和CodeView调试程序及其帮助文档、配套输入输出子程序库及方便操作的批处理文件等。
2重点明确的教学内容
汇编语言的教学目的是从软件角度理解计算机硬件工作原理,为相关课程提供基础知识,同时让读者全面认识程序设计语言,体会低层编程特点,以便更好地应用高级语言。为此,本书不是详尽展开所有处理器指令、全部汇编伪指令,而是选择处理器通用的基本指令和反映汇编语言特色的常用伪指令;没有引出复杂的程序格式,而是侧重编程思想和技术。这样一方面能够降低教学难度、易于学生掌握,另一方面使得教学内容更加实用、便于学生实际应用。
3突出实践的教学过程
本书以约70个示例程序和60个习题程序贯穿教学内容。第1章在介绍必要的寄存器和存储器知识后,就引出汇编语言开发环境,介绍汇编语言的语句格式、源程序框架和开发方法,并利用简单易用的输入输出子程序编写具有显示结果的程序。第2章结合数据编码、常量定义和变量应用,自然地引出常用伪指令。第3章分类学习处理器基本指令,逐渐编写特定要求的程序片段。第4~9章以程序结构为主线,围绕数码转换子程序,结合Windows编程、混合编程、DOS和I/O编程、浮点指令,从简单到复杂逐步编写具有实用价值的应用程序。
4循序渐进的教学原则
为了便于学生理解和掌握,且便于教师实施教学,本书以“循序渐进、难点分散、前后对照”为原则,努力做到“语言浅显、描述详尽、图表准确”。本书内容编排精彩纷呈,例如,将处理器指令和汇编伪指令分散于各个教学内容之中,引出列表文件暂时避开调试程序,用简单的子程序库化解系统调用的烦琐;程序具有交互性和趣味性,适当对比高级语言,并展示底层工作原理;每章都编制丰富的习题,满足课外练习、上机实践和试题组织的需要。
为了更好地服务于广大师生和读者,编者开辟了“大学微机技术系列课程教学辅助网站”(http://www5.zzu.edu.cn/qwfw)。该网站面向“汇编语言程序设计”和“微机原理及接口技术”课程,提供相关教学课件(电子教案)、教学大纲、教材勘误、疑难解答、输入输出子程序库、示例源程序文件等辅助资源,是本教材的动态延伸。
相对于第1版教材,第2版的总体结构和主体内容没有改变,主要针对教学过程中师生反馈的问题增加了更加详尽的讲解。具体来说,修订如下:
1)修改最大的是第4章,增加了示例程序的流程图和说明,使得读者更容易理解汇编语言的特点和程序结构,掌握汇编语言的编程技巧。
2)第2章和第4章特别加入了对各种寻址方式的图示,利于读者理解这些概念。
3)第3章重点展开了MOV指令,让读者清晰地理解指令对不同数据长度(整数类型)的支持。
4)对第1~5章和第9章部分知识点进行补充说明,对全书各个章节中发现的个别错误进行修正。
本书由郑州大学信息工程学院钱晓捷编著,并得到了张青、穆玲玲、关国利、程楠、姚俊婷等同事的帮助,衷心感谢他们的支持。
编者
2016年4月
计算机\汇编语言
本书结合作者近年来的32位汇编语言教学实践,以32位Intel 80x86处理器和个人计算机为硬件平台,基于32位Windows操作系统软件平台,借助微软MASM汇编程序讲解汇编语言程序设计,包括基本的汇编语言基础、常用处理器指令和汇编语言伪指令以及顺序、分支、循环、子程序结构,还包括扩展的Windows和DOS编程、与C++语言的混合编程、输入输出指令及编程,并涉及浮点、多媒体及64位指令等先进技术。
本是是河南省精品资源共享课程(原河南省精品课程)“汇编语言程序设计”的配套教材。
本书特点
简单易用的开发环境。本书构建了一个简单易用的开发环境,无须安装和配置,直接复制就可使用,方便初学者快速上手。
重点明确的教学内容。本书不是详尽展开所有处理器指令、全部汇编伪指令,而是选择处理器通用的基本指令和反映汇编语言特色的常用伪指令;没有引出复杂的程序格式,而是侧重编程思想和技术。
突出实践的教学过程。本书以约70个例题程序和约60个习题程序贯穿教学内容。
循序渐进的教学原则。为了便于学生理解和掌握,且便于教师实施教学,本书在编写过程中尽量做到描述详尽、图表准确,对重点和难点使用浅显生动的语言,深入浅出地进行详尽讲解。
内容丰富的教学网站。为了更好地服务于广大师生和读者,作者开辟了“大学微机技术系列课程教学辅助网站”(http://www5.zzu.edu.cn/qwfw),提供电子课件、教学大纲、教材勘误、疑难解答、输入输出子程序库、示例源程序文件等辅助资源。
与第1版相比,第2版的总体结构和主体内容没有改变,主要针对教学过程中师生反馈的问题增加了更加详尽的讲解。具体来说,修订包括:第4章增加了示例程序的流程图和说明;第2章和第4章特别加入了对各种寻址方式的图示;第3章重点展开了MOV指令。
前言
教学建议
第1章汇编语言基础
11Intel 80x86系列处理器
11116位80x86处理器
112IA32处理器
113Intel 64处理器
12个人计算机系统
121硬件组成
122寄存器
123存储器组织
124程序设计语言
125软件系统
13汇编语言程序格式
131指令代码格式
132语句格式
133源程序框架
134开发过程
第1章习题
第2章数据表示和寻址
21数据表示
211数制
212数值的编码
213字符的编码
22常量表达
23变量应用
231变量定义
232变量属性
24数据寻址方式
241立即数寻址方式
242寄存器寻址方式
243存储器寻址方式
244各种数据寻址方式的组合
第2章习题
第3章通用数据处理指令
31数据传送类指令
311通用数据传送指令
312堆栈操作指令
313其他传送指令
32算术运算类指令
321状态标志
322加法指令
323减法指令
324乘法和除法指令
325其他运算指令
33位操作类指令
331逻辑运算指令
332移位指令
第3章习题
第4章程序结构
41顺序程序结构
42分支程序结构
421无条件转移指令
422条件转移指令
423单分支程序结构
424双分支程序结构
425多分支程序结构
43循环程序结构
431循环指令
432计数控制循环
433条件控制循环
434多重循环
第4章习题
第5章模块化程序设计
51子程序结构
511子程序指令
512子程序设计
52参数传递
521寄存器传递参数
522共享变量传递参数
523堆栈传递参数
53多模块程序结构
531源文件包含
532模块连接
533子程序库
54宏结构
541宏汇编
542重复汇编
543条件汇编
第5章习题
第6章Windows编程
61操作系统函数调用
611动态连接库
612MASM的过程声明和调用
613程序退出函数
62控制台应用程序
621控制台输出
622控制台输入
623单字符输入
63图形窗口应用程序
631消息窗口
632结构变量
633MASM的高级语言特性
634简单窗口程序
第6章习题
第7章与Visual C++混合编程
71嵌入汇编
72模块连接
721约定规则
722堆栈帧
73调用高级语言函数
731嵌入汇编中调用高级语言函数
732汇编语言中调用C库函数
74使用Visual C++开发环境
741汇编语言程序的开发过程
742汇编语言程序的调试过程
第7章习题
第8章DOS环境程序设计
81DOS编程
811实地址存储模型
812DOS应用程序框架
813DOS功能调用
82串操作类指令
821串传送指令
822串检测指令
83输入输出程序设计
831输入输出指令
832定时器初始化编程
833扬声器控制编程
84中断控制编程
841中断控制系统
842内部中断服务程序
843驻留中断服务程序
第8章习题
第9章 浮点、多媒体及64位指令
91 浮点指令
911实数编码
912浮点寄存器
913浮点指令及其编程
92 多媒体指令
921MMX技术
922SSE技术
923SSE2技术
924SSE3技术
93 64位指令
93164位方式的运行环境
93264位方式的指令
第9章习题
附录A 调试程序WinDbg
附录B 输入输出子程序库
附录C 32位通用指令列表
附录D MASM伪指令和操作符列表
附录E 列表文件符号说明
附录F 常见汇编错误信息
参考文献