【写在开课前】
这学期,接了一门新课——汇编语言程序设计。
这是门好课。学好了,能干的工作,那是高大上;职业中不指望自己的工具袋中备一把名叫“汇编”的榔头的同学,借着汇编语言,也可以练计算机专业学习的内功。
新培养方案中恢复了这门课,我就想将捣鼓捣鼓这门课程。搞了好多年“计算”的事,早对自己离“计算机”有点远而不满。备课中,再回计算机的底层,重新体会“螺丝壳里做道场”的精致。
教学模式继续翻转课堂,随着授课进度,同步建设资源。这样做,自己的时间会紧张,但有过了《数据结构》课程翻转的考验,还是有把握下来的。只不过,这门课的高度,不可以拨到与数据结构等齐,顺便探讨在翻转课堂背景下,降低学生学习负担的办法。如何让我的学生能学得有效,学得嗨皮,这是我要做的事。
【开课后】
上路了,路就清楚了。这门课中,不再以积累代码量为其中的目标,因此,也就不要求我的学生都开博客了。利用博客提供一些资源,这还是要的。
好吧,这门课将与之前的不一样,这一个“课程主页”是我的所有学生共享的“学习园地”。
【汇编语言之歌】
我的2018级学生黄倩颖创作并演唱《assembler language》,去听一听…
【课程内容】
第1部分 绪论 视频及课件链接
第1章 基础知识
0100 导学
0101 为什么要学汇编语言
0102 由机器语言到汇编语言
0103 计算机的组成
0104 内存的读写与地址空间
0105 汇编语言实践环境搭建
参考:1. 搭建x86汇编语言学习环境 2.Android手机玩8086汇编
3.让DOSBox启动后自动执行命令 4.调整DOSBox的窗口大小
第2部分 访问寄存器和内存 视频及课件链接
0200 导学
第2章 寄存器
0201 寄存器及数据存储
0202 mov和add指令
0203 确定物理地址的方法
0204 内存的分段表示法
0205 Debug的使用
实验1 实验环境搭建与Debug使用
答疑记录:机器码与汇编指令的对应关系;用e命令为啥改不了内存的值?;
0206 CS、IP与代码段
0207 jmp指令
第3章寄存器(内存访问)
0301 内存中字的存储
0302 用DS和[address]实现字的传送
0303 DS与数据段
0304 栈及栈操作的实现
0305 关于“段”的总结
**第3部分 汇编语言程序 ** 视频及课件链接
0400 导学
第4章第一个程序
0401 用汇编语言写的源程序 例程
0402 由源程序到程序运行
0403 用Debug跟踪程序的执行
例程:交换一个字中的两个字节的多种方法
第5章(BX)和loop指令
0501 […]和(…)
0502 Loop指令 例程
0503 Loop指令使用再例 例程
0504 段前缀的使用 例程
实验2-汇编语言程序框架
编辑器配置(由我的学生贡献)
第6章 包含多个段的程序
0601 在代码段中使用数据 例程
0602 在代码段中使用栈 例程
0603 将数据、代码、栈放入不同段 例程
编程练习题目及参考(2020增加)
第4部分 内存寻址方式 视频及课件链接
0700 阶段导学
第7章更灵活的定位内存地址的方法
0701 处理字符问题 例程
0702 [bx+idata]方式寻址 例程
0703 SI和DI寄存器 例程
0704 [bx+si]和[bx+di]方式寻址
0705 [bx+si+idata]和[bx+di+idata]方式寻址
0706 不同的寻址方式的灵活应用
0707 不同寻址方式演示
学生总结-2015
实验3-寻址方式
答疑记录:no stack segment警告为何还在? 毁掉自己的汇编程序
第8章数据处理的两个基本问题
0801 用于内存寻址的寄存器
0802 在哪里?有多长?
0803 寻址方式的综合应用 例程
0804 用div指令实现除法
0805 用dup设置内存空间
学生总结-2015
实践题目:求平均成绩(用汇编玩结构体)
2024新补题目:寻址方式应用-操作结构体
第5部分 流程转移与子程序 视频及课件链接
0900 导学
第9章转移指令的原理
0901 “转移”综述
0902 操作符offset 例程
0903 jmp指令 例程
0904 其他转移指令 例程
学生总结-2015
实验4-利用跳转指令构造循环 冒泡排序
第10章CALL和RET指令
1001 call指令和ret指令 例程
1002 call 和 ret 的配合使用 例程
1003 mul 指令
1004 汇编语言的模块化程序设计 例程
- 应用:递归求年龄
1005 寄存器冲突的问题 例程
【知识拓展】 【参考例程】
释疑:8086汇编栈段为何“乱套”了
第11章标志寄存器
1101 标志寄存器
1102 带进(借)位的加减法 例程 应用:双字运算
1103 cmp和条件转移指令
1104 条件转移指令应用 例程
- 答疑:疑似胡来的溢出
- 应用:多数绝对值和、统计数据个数、统计0的个数、找出最小值
求最大数 计算分段函数、将字符串中所有大写字符转为小写
1105 DF标志和串传送指令 例程
- 应用:植入程序的程序(二)、成绩分段统计、批量复制并显示字符
第6部分 中断及外部设备操作 视频及课件链接
1200 阶段导学
第11章(教材第16章)直接定址表
1401 移位指令
1601 操作显存数据 例程
1602 描述内存单元的标号 例程
1603 数据的直接定址表 例程
- 应用:查表求平方、成绩分段统计、查表法找ASCII
1604 代码的直接定址表 例程
- 应用:简单的菜单
第12章(教材第12、13章)内中断
1201 中断及其处理 例程
1202 编制中断处理程序 例程
- 应用:中断体验:观察自定义中断的安装及触发
1203 单步中断
1301 由int指令引发的中断 例程
1302 BIOS和DOS中断处理 例程
- 应用:输出对应的英文单词、创建文本文件、输数字,出字母
第14章(教材第14、15、17章)端口和外设控制
1402 端口的读写 例程
- 应用:哆瑞米发商拉西
1403 操作CMOS RAM芯片 例程
- 应用:显示时间(分秒)
1501 外设连接与中断
1502 PC机键盘的处理过程
1503 定制键盘输入处理 例程
- 应用:显示时间中产生键盘中断、这是一个假游戏
1504 改写中断例程的方法 例程
1701 用中断响应外设 例程
1702 应用:字符串的输入 例程
1703 磁盘读写
1704 发声程序 例程
第7部分 高级汇编语言技术 视频及课件链接