课程概述

我为什么要学习这门课?

      汇编语言是面向处理器的编程语言,是联系计算机软件和硬件的“桥梁,是自动控制等与硬件相关应用领域的程序设计基础。本课程是计算机学科的专业基础课。通过本课程的学习,我们将加强的高级语言编程能力,从软件角度进一步理解计算机工作原理.,为学习“计算机组成原理”、“微机原理及接口技术”、“嵌入式系统”、“操作系统”、“编译原理”等课程提供基础知识。

 

这门课的主题是关于什么?

      本课程在WINDOWS环境下,以Intel 80x86指令系统和微软MASM展开汇编语言程序设计方法。课程内容包括硬件基础,汇编语言源程序语句、格式与开发方法,通用处理器指令及其应用,结构化程序设计,多模块程序设计、DOS环境设计、与C++混合编程和windows编程。

 

学习这门课可以获得什么?

1.      了解软硬件开发环境,熟悉通用寄存器和存储器组织,掌握汇编语言的语句格式、程序框架和开发方法。

2.      熟悉计算机如何表达数据,熟悉汇编语言中如何使用常量和变量,掌握处理器指令如何寻址数据的方式。

3.      熟悉IA-32处理器数据传送、算术运算、逻辑运算和移位操作等基本指令,掌握指令功能和编程应用。

4.      掌握控制转移类指令以及编写顺序、分支和循环基本程序的方法。

5.      掌握子程序编程,熟悉文件包含、宏汇编等各种多模块编程的方法。

6.      了解汇编语言调用API函数的方法,熟悉控制台输入输出函数。了解MASM的高级特性和Windows图形窗口程序的编写。

7.      熟悉嵌入汇编和模块连接进行混合编程方法。

8.      了解DOS应用程序特点和DOS功能调用,掌握输入输出指令及应用。

 

这门课有什么特色和亮点?

      郑州大学的汇编语言课程为河南省一流本课线上课程,一流本课线上线下混合教学课程,河南省精品在线共享课程。2017年,汇编语言课程依托郑州大学厚山学堂教学平台,开始进行混合教学改革。2019年在中国大学慕课建立异步SPC课程,以河南省一流本科线上课程“汇编语言程序设计”为基础,根据郑州大学本科专业培养目标,补充教学资源,改革混合教学,教学效果受到学生和教学督导组的肯定。

该课程具有以下特点:

1.      以学生为中心,依托信息技术,实施线上自主学习+线下导学辅导、实验和翻转课堂的四阶混合教学模式。

2.      采用过程化、多元化的学习评价,持续改进评价内容和评价方式。

3.      构建WINDOWS环境下快速开发环境,持续完善教学资源。

2020-2021学年第1学期教学效果展示

证书要求

      本课程的总成绩包括平时成绩(60%)和期末考试成绩(40%),平时成绩包括线上成绩(50%)和线下成绩(50%)。期末考试是学院统一组织的、传统的纸质考试。

作为郑州大学信息工程学院计算机学科的SPOC课程,“汇编语言”实施基于慕课的混合式教学,学生需要完成线上、线下两方面的学习任务。

       (1)线上学习,学生需要利用网络平台自主完成、掌握基本教学内容。结合阅读教材,进行视频点播、参与教学讨论、完成单元测试、提交作业及作业互评等。

课程的线上成绩由单元测试、章节作业和主题讨论组成,各部分比例(暂定)如下:

线上成绩 = 单元测验50% + 作业30% + 讨论20%

其中,单元测试是客观题,章节作业是主观题,学生需参与讨论的回帖数量达到25个才能获得讨论部分的满分。

       (2)线下学习,学生需要按照教学课表参加课堂授课和机房实践教学。学生应事先完成规定的网络自学任务之后,参与课堂教学,带着问题积极参与课堂讨论等活动。

在面授教室中,主讲教师不再重复讲授网络平台已有内容,而主要组织线下的课堂教学,包括内容总结、重难点辅导、答疑解惑、翻转课堂(主题讨论),安排上机实践环节等。有些课堂教学活动(例如总结辅导、答疑解惑等)要求全体学生一起参加,有些课堂教学活动(例如主题讨论等)分小班(组)进行。

       在专业机房或实验室中,学生按照教学要求进行汇编语言的编程实践,完成上机实验的任务,并提交实验报告。

      课程的线下成绩由课堂表现、上机实验(程序设计和实验报告质量)等组成。

       线下成绩=课堂表现(20%)+上机实验(80%)

预备知识

熟悉计算机基础知识

了解C语言及其编程方法

授课大纲

1 汇编语言基础

1-1 汇编语言特点

1-2 硬件组成

参考资料

单元测试1

2 汇编语言开发

2-1 程序格式

2-2 开发过程

总结与参考文献

实验1 汇编语言开发过程

单元测试2

第1章 作业

征集汇编语言开发操作过程录屏

3 数据表示

3-1 常量表达

3-2 变量定义

3-3 变量应用

参考资料

单元测试3

4 数据寻址

4-1 立即数寻址

4-2 寄存器寻址

4-3 存储器寻址

实验2 数据表示和寻址

总结与参考文献

单元测试4

第2章作业

5 传送和运算指令

5-1 数据传送类指令

5-2 算术运算类指令

参考资料

单元测试5

算术运算类指令总结文档

6 位操作指令

6-1 逻辑和移位指令

6-2 循环移位指令

实验3

通用指令集合小结与参考文献

单元测试6

7 顺序程序结构

7-1 自然数求和程序

7-2 处理器识别程序

单元测试7

8 分支程序结构

8-1 转移指令

8-2 单分支结构

8-3 双分支结构

实验4

参考资料

单元测试8

9 循环程序结构

9-1 循环指令

9-2 计数控制循环

9-3 条件控制循环

实验5

单元测试9

10 子程序结构

10-1 子程序设计

10-2 参数传递

实验6

参考资料

单元测试10

11 多模块程序结构

11-1 程序模块

11-2 宏汇编

实验7

实验讲解

单元测试11

12 DOS环境编程

12-1 DOS编程

12-2 输入输出编程

实验8

实验讲解

参考资料

单元测试12

第八章作业

13 与C++混合编程

13-1 嵌入汇编

13-2 模块连接

研究与设计(选做)

参考资料

第七章作业

单元测试13

14 Windows编程

14-1 Windows函数调用

14-2 Windows应用程序

单元测试14

第六章作业

习题讲解

第三章作业讲解

第四章作业讲解

第五章作业讲解

参考资料

   


课程配套教材:

钱晓捷编著,32位汇编语言程序设计(第3版),2024年8月,ISBN 978-7-111-75831-0

课程辅助教材:

钱晓捷编著,汇编语言(基于64位ARMv8体系结构),2022年9月,ISBN 978-7-121-44371-8

参考书目: 

[1]杨季文. 新概念汇编语言. 清华大学出版社. 2017

[2]王爽. 汇编语言(第4版). 清华大学出版社. 2019.

[3] 钱晓捷. 微机原理与接口技术—基于IA-32处理器和32位汇编语言(第5版). 机械工业出版社,2014.

[4] 钱晓捷. 汇编语言程序设计(第4版). 电子工业出版社,2012.

[5] 钱晓捷. 汇编语言简明教程. 电子工业出版社,2013

[6] Kip R. Irvine著 温玉杰等译,Intel汇编语言程序设计(第五版),电子工业出版社,2007

[7] Intel,Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 1: BasicArchitecture(253665.pdf)

[8] Richard C. Detmer著. 80x86汇编语言与计算机体系结构(英文版). 机械工业出版社,2004

[9] Barry B.Brey著. Intel微处理器(英文影印版•第7版). 机械工业出版社,2006

 

网络课程

中国大学慕课汇编语言程序设计(郑州大学 钱晓捷 穆玲玲 张青)

 

网络资源

1.    微辅网(课程团队的个人主页)

2.    Intel 64 and IA-32 Software Developer Manuals,https://software.intel.com/en-us/articles/intel-sdm

3.    x86 assembly language,https://en.wikipedia.org/wiki/X86_assembly_language

4.    Dennis Yurichev: Understanding Assembly Language. https://yurichev.com/writings/UAL-EN.pdf

5.    WINDBG: https://www.windbg.org

6.    masm32: https://www.masm32.com

7.  Microsoft 宏汇编程序参考, https://docs.microsoft.com/zh-cn/cpp/assembler/masm/microsoft-macro-assembler-reference?view=msvc-160

8.CS:APP3e, Bryant and O'Hallaron (cmu.edu)

常见问题

 特别提醒:

本网站课程只是提供基本教学内容的讲解和练习。学生应结合教材内容和教学要求,或自行或在面授教师指导下进行上机实验,才能更好地掌握“汇编语言”。