内容简介
汇编语言是计算机专业的重要专业基础课程,也是电子、通信及自动控制等相关专业计算机技术课程的内容。《汇编语言(第2版)/高等院校精品课程系列教材》以80X86系列微型计算机为基础,以MASM5��0为汇编上机实验环境,重点介绍Intel8086指令系统。《汇编语言(第2版)/高等院校精品课程系列教材》中实验练习贯穿始终,在各章中布置了实验任务模块,并在第10章专门安排了综合性、设计性实验内容,通过多层次的实验训练来加强读者对各章内容的学习理解、融会贯通。
《汇编语言(第2版)/高等院校精品课程系列教材》结构清晰,内容丰富,例题多样,练习和习题针对性强,可以作为计算机专业汇编语言课程的教材(含实验),或者作为其他专业相关课程的参考书和自学教材。
内页插图
目录
前言
教学建议
第1章 基础知识
1.1 汇编语言基本概念
1.2 计算机中数的表示
1.2.1 进制转换
1.2.2 进制运算
1.2.3 补码运算
1.2.4 编码
1.3 实例一揭开数的面纱
1.3.1 数的正确表示
1.3.2 数的符号问题
习题一
测验一
第2章 计算机基本原理
2.1 冯·诺依曼计算机
2.1.1 冯·诺依曼计算机的原理
2.1.2 冯·诺依曼计算机的基本结构
2.2 微型计算机系统
2.2.1 微型计算机系统概念
2.2.2 微处理器
2.3 80X86寄存器
2.3.1 8086寄存器组
2.3.2 80X86寄存器组
2.4 内存储器
2.4.1 物理地址与逻辑地址
2.4.2 存储单元
2.4.3 存储器分段
2.5 实例二进入计算机
2.5.1 调试工具DEBUG
2.5.2 实验任务
习题二
测验二
第3章 指令系统与寻址方式
3.1 汇编语言指令
3.1.1 机器指令
3.1.2 汇编指令
3.1.3 指令系统
3.2 指令的寻址方式
3.2.1 寻址方式
3.2.2 立即寻址方式
3.2.3 寄存器寻址方式
3.2.4 存储器寻址方式
3.3 实例三寻找操作数
3.3.1 寻址方式的选择
3.3.2 实验示例
3.3.3 实验任务
习题三
测验三
第4章 汇编语言程序设计
4.1 汇编语言程序设计初步
4.1.1 第一个汇编语言程序
4.1.2 从源程序到可执行程序
4.2 伪指令
4.2.1 段定义伪操作
4.2.2 数据定义伪指令
4.2.3 其他伪指令
4.3 基本汇编指令
4.3.1 数据、栈及查表
4.3.2 逻辑地址的获得
4.3.3 符号位扩展
4.3.4 双精度数运算
4.3.5 多字节数运算
4.3.6 混合算术运算
4.3.7 十进制数运算
4.4 屏幕显示和键盘输入
4.4.1 DOS功能调用
4.4.2 直接写显存显示字符
4.5 实例四带彩色显示的算术程序
4.5.1 简化的程序结构
4.5.2 实验示例
4.5.3 实验任务
习题四
测验四
第5章 分支程序设计
5.1 分支的概念
5.1.1 分支结构
5.1.2 分支程序例子
5.2 与分支有关的指令
5.2.1 转移地址的寻址
5.2.2 条件转移方式
5.3 位操作的分支程序
5.3.1 逻辑运算
5.3.2 测试指令TEST
5.3.3 移位操作
5.3.4 处理机控制指令
5.3.5 分支程序举例
5.4 深入分析转移特征
5.4.1 内存空间分配
5.4.2 系统启动
5.4.3 程序的加载
5.4.4 JMP转移特征
5.5 实例五走向分支
5.5.1 分支的选择
5.5.2 菜单程序设计
5.5.3 用分支表实现多路转移
5.5.4 实验示例
5.5.5 实验任务
习题五
测验五
第6章 循环程序设计
6.1 循环的概念
6.1.1 循环结构
6.1.2 循环程序例子
6.1.3 与循环有关的指令
6.2 循环指令
6.2.1 LOOP
6.2.2 LOOPZ/LOOPE
6.2.3 LOOPNZ/LOOPNE
6.3 串处理
6.3.1 串的概念
6.3.2 串处理例子
6.3.3 串处理指令
6.3.4 串与循环
6.4 多重循环
6.4.1 多重循环结构
6.4.2 排序程序
6.5 循环程序举例
6.6 实例六循环之循环
6.6.1 循环的执行
6.6.2 实验示例
6.6.3 实验任务
习题六
测验六
第7章 子程序设计
7.1 子程序的概念
7.1.1 主程序和子程序
7.1.2 一个改造的例子
7.2 调用和返回
7.2.1 调用指令CALL
7.2.2 返回指令RET
7.3 过程定义
7.3.1 伪指令PROC
7.3.2 过程属性
7.4 现场保护
7.5 子程序参数传递
7.5.1 寄存器传参
7.5.2 存储单元传参
7.5.3 堆栈传参
7.6 嵌套与递归
7.6.1 子程序嵌套
7.6.2 子程序递归
7.7 实例七子程序与模块化
7.7.1 模块化结构
7.7.2 实验示例
7.7.3 实验任务
习题七
测验七
第8章 宏汇编及多模块技术
8.1 宏
8.1.1 宏定义
8.1.2 宏调用
8.1.3 宏展开
8.1.4 宏与子程序
8.1.5 宏的参数
8.1.6 宏运算
8.2 其他宏功能
8.2.1 宏标号
8.2.2 宏删除
8.2.3 宏嵌套
8.2.4 宏库建立与调用
8.3 结构伪操作
8.4 重复汇编和条件汇编
8.4.1 重复汇编
8.4.2 条件汇编
8.5 多模块结构
8.5.1 多个代码段下的模块
8.5.2 模块的参数设置
8.6 实例八宏与多模块
8.6.1 多模块设计
8.6.2 一个段的模块
8.6.3 实验示例
8.6.4 实验任务
习题八
测验八
第9章 中断程序设计
9.1 中断的概念
9.1.1 软件中断
9.1.2 硬件中断
9.1.3 中断类型与中断向量
9.1.4 中断过程
9.2 定制自己的中断
9.2.1 软件中断子程序的编写
9.2.2 中断的设置
9.2.3 软件中断的触发与处理
9.2.4 对除0中断的修改
9.3 BIOS中断
9.3.1 屏幕及光标控制INT10H
9.3.2 键盘中断INT16H
9.3.3 时钟中断INT1AH
9.4 DOS中断
9.4.1 DOS显示功能调用
9.4.2 DOS键盘功能调用
9.4.3 DOS日期、时间功能调用
9.5 实例九中断程序应用
9.5.1 时间与计数
9.5.2 实验示例
9.5.3 实验任务
习题九
测验九
第10章 综合实验
10.1 I/O端口实验
10.1.1 I/O端口地址
10.1.2 IN指令和OUT指令
10.1.3 读取CMOS时钟
10.2 随机数实验
10.2.1 用CMOS时钟产生随机数
10.2.2 用DOS时间功能出算术题
10.3 图形动画实验
10.3.1 文本模式下的图形动画
10.3.2 图形模式下的绘图与动画
10.4 磁盘文件读写实验
10.4.1 文件操作的DOS系统调用
10.4.2 磁盘文件读写示例
10.5 综合实验题目
10.5.1 实验一CMOS时间和日期
10.5.2 实验二英文打字练习软件
10.5.3 实验三英文填字游戏软件
10.5.4 实验四设计一个小计算器
10.5.5 实验五小学生算术练习软件
10.5.6 实验六进制及编码转换工具
10.5.7 实验七绘制图形动画
10.5.8 实验八磁盘文件
附录A 8086指令系统表
附录B 汇编出错提示信息
附录C DEBUG的用法
附录D 各章 测验答案
参考文献
前言/序言
《汇编语言(第2版)/高等院校精品课程系列教材》图书简介 本书籍,即《汇编语言(第2版)/高等院校精品课程系列教材》,是一本面向高等院校计算机科学与技术、软件工程等相关专业学生精心编写的教材。其核心目标在于系统性地传授汇编语言的知识体系,培养读者对计算机底层工作原理的深刻理解,以及掌握利用汇编语言进行程序设计的能力。作为“高等院校精品课程系列教材”的一员,本书力求内容严谨、结构清晰、易于学习,并紧密结合当前计算机技术的发展趋势与教学需求。 一、 内容深度与广度 本书内容涵盖了汇编语言的方方面面,从基础的指令集介绍到复杂的程序设计实践,力求为读者构建一个全面而扎实的汇编语言知识框架。 基础概念与体系结构: 计算机体系结构基础:在深入讲解汇编语言之前,本书首先会回顾并介绍计算机的基本组成,包括CPU、内存、输入/输出设备等,以及它们之间如何通过总线进行数据传输和控制。这部分内容旨在为读者建立一个宏观的计算机工作模型,为理解汇编指令的操作对象和方式奠定基础。 二进制与十六进制表示:汇编语言直接操作二进制数据,因此,对二进制、八进制、十进制以及十六进制之间的相互转换,以及它们在计算机中如何表示整数、浮点数等,是理解汇编语言的基础。本书将详细讲解这些概念,并提供丰富的练习。 数据类型与寻址模式:汇编语言中存在多种数据类型,如字节(byte)、字(word)、双字(doubleword)等。理解这些数据类型的大小和内存表示方式至关重要。同时,本书将深入探讨各种寻址模式,包括立即数寻址、寄存器寻址、直接寻址、寄存器间接寻址、基址寻址、变址寻址、基址变址寻址以及相对基址变址寻址等。透彻理解寻址模式是编写高效且灵活的汇编代码的关键。 核心指令集与操作: 数据传输指令:本书将详细介绍各类数据传输指令,如`MOV`(move)、`PUSH`(push)、`POP`(pop)、`XCHG`(exchange)等。这些指令是汇编语言中最基本也是最常用的指令,用于在寄存器、内存和栈之间搬运数据。 算术与逻辑指令:涵盖加法(`ADD`)、减法(`SUB`)、乘法(`MUL`)、除法(`DIV`)、逻辑与(`AND`)、逻辑或(`OR`)、逻辑异或(`XOR`)、取反(`NOT`)、移位(`SHL`、`SHR`、`SAL`、`SAR`)和循环移位(`ROL`、`ROR`、`RCL`、`RCR`)等指令。这些指令构成了程序进行计算和判断的基础。本书将着重讲解指令的语法、操作数、标志位的影响以及实际应用场景。 控制转移指令:包括无条件跳转(`JMP`)、条件跳转(如`JE`、`JNE`、`JG`、`JL`等)、调用子程序(`CALL`)和返回子程序(`RET`)等。这些指令是实现程序流程控制、实现循环和分支判断的核心。本书将深入分析不同条件跳转指令的工作原理,以及`CALL`和`RET`指令在栈帧管理中的作用。 字符串与位操作指令:对于需要处理字符串和位信息的场景,本书会介绍相关的指令,如字符串拷贝(`MOVS`)、字符串比较(`CMPS`)、扫描(`SCAS`)、查找(`LODS`)、存储(`STOS`)以及位操作指令等。 处理器控制指令:介绍如中断(`INT`)、中断返回(`IRET`)、标志位操作(`STC`、`CLC`、`CMC`、`STD`、`CLD`)以及等待(`WAIT`)等指令,这些指令用于控制处理器的状态和响应外部事件。 程序设计方法与实践: 宏定义与段:讲解如何使用宏(macro)来简化重复性的代码段,提高代码的可读性和可维护性。同时,详细介绍汇编程序中的段(segment)概念,如代码段(.code)、数据段(.data)、堆栈段(.stack)等,以及它们在内存管理中的作用。 子程序设计:深入讲解子程序(subroutine)的设计、调用和返回机制,包括参数传递(通过寄存器或栈)、局部变量的使用以及返回值。这部分内容对于组织大型汇编程序至关重要。 栈(Stack)的使用:栈在汇编程序设计中扮演着极其重要的角色,本书将详细讲解栈的结构、`PUSH`和`POP`指令的使用,以及它在函数调用、中断处理和临时数据存储中的应用。 输入/输出(I/O)操作:介绍如何通过特定的端口或中断来与外部设备进行交互,实现程序的输入和输出功能。本书将结合实际的硬件接口(例如,PC机上的常用端口)进行讲解。 中断与异常处理:讲解中断(interrupt)的原理,包括中断向量表、中断服务程序(ISR)以及如何编写自定义的中断处理程序。同时,也会涉及一些常见的异常情况和处理方法。 内存管理:探讨汇编语言层面如何访问和管理内存,包括内存分段、偏移地址的计算以及动态内存分配的基本概念。 高级主题与应用: 浮点运算:如果涉及,本书会介绍处理浮点数的指令集(例如x87 FPU指令或SSE/AVX指令),以及相应的浮点数运算原理和编程技巧。 多任务与线程(可选):针对部分进阶内容,可能会介绍在汇编层面如何实现简单的多任务调度或与操作系统交互以创建线程。 与高级语言的接口:讲解如何将汇编代码嵌入到C/C++等高级语言程序中,以及它们之间如何进行数据交换和函数调用。这部分内容对于理解现有系统的底层实现和进行性能优化尤为重要。 典型应用场景分析:通过分析操作系统内核、设备驱动程序、嵌入式系统、游戏开发中的图形渲染、高性能计算等典型应用场景,展示汇编语言在实际工程中的价值和应用。 二、 教材特色与教学理念 本书的编写遵循以下几项核心原则,旨在提供卓越的学习体验: 理论与实践相结合:本书不仅注重理论知识的讲解,更强调动手实践。每一章都配有大量的代码示例,这些示例力求精炼、典型,并能清晰地展示所学概念。同时,本书也提供了丰富的课后习题,涵盖了概念理解、代码编写、程序调试等多个层面,帮助读者巩固所学知识。 循序渐进,由浅入深:本书的章节安排逻辑清晰,从最基础的概念出发,逐步深入到更复杂的技巧和应用。对于初学者来说,可以按照章节顺序稳步学习;对于有一定基础的学习者,也可以根据需要查阅特定章节。 现代化与实用性:本书紧密结合现代计算机体系结构(如x86-64架构)和主流的汇编语言开发工具(如NASM、MASM、GAS等)。虽然汇编语言的指令集可能有所差异,但本书会重点介绍最常用和最具代表性的指令集,并讲解通用的编程思想,使其具有较强的跨平台适应性和实用价值。 面向精品课程的定位:作为“高等院校精品课程系列教材”,本书在内容组织、深度、难度以及习题设计上都充分考虑了高校教学的要求。其内容覆盖了多数高校开设汇编语言课程的标准教学大纲,能够很好地满足课堂教学、自学以及考试需求。 易读性与清晰性:本书的语言力求简洁明了,避免使用过于晦涩的术语。关键概念会通过图示、表格和类比进行解释,提高内容的直观性和易理解性。代码示例的注释也十分详细,方便读者理解每一行代码的含义和作用。 三、 目标读者 本书适合以下读者群: 计算机科学与技术、软件工程、电子工程等相关专业的本科生和研究生:作为必修或选修课程的教材,为学生打下坚实的底层计算基础。 对计算机底层原理感兴趣的开发者:希望深入理解程序是如何在硬件上运行,以及如何进行性能优化。 系统程序员、嵌入式系统开发者:需要直接操作硬件、进行低级编程或开发驱动程序的专业人士。 对计算机组成原理、操作系统原理有深入学习需求的学生:汇编语言是理解这些学科的关键基础。 四、 总结 《汇编语言(第2版)/高等院校精品课程系列教材》不仅是一本技术书籍,更是一扇通往计算机世界深层奥秘的窗口。通过系统学习本书,读者将能够掌握汇编语言这一强大的工具,深刻理解计算机的工作机制,为未来在各个计算机领域的学习和职业发展奠定坚实的基础。本书致力于培养学生的逻辑思维能力、问题分析能力和解决问题的实践能力,使其能够从更宏观和更微观的视角审视和构建软件系统。
作为一名有一定编程基础的读者,我一直想深入了解计算机的底层工作原理,而汇编语言无疑是连接高级语言和硬件之间的桥梁。这本书的到来,恰好满足了我的这个需求。我之前也翻阅过一些关于汇编语言的书籍,但总觉得它们要么过于理论化,要么过于简略。而《汇编语言(第2版)》则在深度和广度上都做得非常出色。 它不仅详细讲解了各种汇编指令的语法和功能,更重要的是,它深入剖析了指令的执行过程,以及它们如何影响CPU的状态。书中对于内存管理、堆栈操作、过程调用等核心概念的讲解,都非常到位,逻辑清晰,条理分明。我特别喜欢书中关于“宏”和“伪指令”的章节,这些内容在其他教材中可能不会被提及,但在实际的汇编编程中却非常有用。通过学习这些,我能够写出更高效、更易于维护的汇编代码。这本书就像一把钥匙,为我打开了理解计算机体系结构和操作系统原理的大门,让我对计算机的整体运作有了更深刻的认识。