跳转至

汇编语言

课程学习内容

  汇编语言这门课的主要内容就是学习较为古老的 8086 汇编、80386 的一小部分 32 位指令以及一小部分的 80386 保护模式基础知识。

任课教师

  浙江大学《汇编语言》课程数十年来只有一位老师:白洪欢

  老师富有个性,上课硬核,擅长当黑客、逆向、密码学、拆东西。也是 AAA 战队的指导老师。白老师有自己的课程网站,会有学习汇编语言专用的虚拟机。虽然讲的内容很老,甚至可以说是过时的,但是小白老师也是少有的能将一门课讲清楚、讲透的老师。不过 22 年的汇编课可能由于考试有些难,普遍作业、考试完成的不够好,导致小白老师有些不满意,最后成绩普遍较低。

授课教材

  这门课的教材是小白老师自己写的书,不过不是通过教务网来预订的,而是在上几周课后会发通知来买这本书。是 A4 纸印刷、装订的一本“书”,涵盖了本门课程的全部知识点,上课没跟上的可以好好看看书。

  除此之外,每节课程小白老师都是通过 word 文档来讲授,这些文档都可以在他的主页 cc.zju.edu.cn/bhh 上找到。

课程学习建议

  本课程不需要额外教材,在几节课之后老师会让大家预定(一定不要忘了),是小白老师自己写的教材,看这本书足够应对这门课了。另外清华大学王爽《汇编语言》这本书也可以起到帮助。

  小白老师上课知识点讲的很细,基本上结合例子来讲,但是也有不少人认为老师讲课不成体系。上课建议好好听,跟紧老师思路,最好要做笔记(比如笔记本上打开一个文档记下老师的操作)。老师对学生态度很好,在课前问问题会坐在你旁边手把手教你改代码。

  一定要好好利用上课笔记、小白老师提供的笔记,98 上也能找到复习资料。据说上一届小白老师会在课程结束后删掉智云回放,不过这一届没有。但是这门两节课的课小白会在第一节课就明确地说会上三课时,也就是说最后一课时的内容在智云课堂上是没有回放的,因此建议上课认真听认真记笔记,特别是最后一课时。

  课程的分数分为两部分:作业和考试。一共会有四次作业,代码量逐次提高,后两次是提供 C 语言代码,要将其翻译成汇编语言。作业都会比较耗时间,而且汇编语言调试起来比较麻烦,推荐留下作业后尽快完成,不要拖 ddl。最后一两次作业会花掉将近一周的时间,要有所准备。如果没能在 ddl 前完成也记得要把自己写了的东西交上去,而且最后一次作业应该会有补交的机会。上一届的最后一次作业是写推箱子游戏,汇编代码大概两三千行左右,这一届简单了很多,是写随机生成迷宫、走迷宫的程序,大概一千行左右,不知道你们这一届怎么样。

  对于实验环境,小白会给一个 xp 虚拟机,里面是带有需要的软件的,不过整体还是很臃肿的。vscode 上有一个 dosbox 插件,也是可以用的,这样就不用在虚拟机里 debug 了(最后还是要在虚拟机里跑一下的,以免在老师那里出错)。

  对于最后的考试,期末考试是纯笔试,有判断、填空、阅读程序、补全程序等类型的题目。考试偏理论,需要好好复习一下,特别是 21 年保护模式考了很多,不复习的话根本不知道怎么答。以及课上讲的指令一定都要清楚作用是什么,否则可能所有程序都读不懂(因为每个程序都比较综合)。相信四次作业能完成的考试也不会差。复习/学习的时候可以参考一下 xg 的这篇笔记 https://note.tonycrane.cc/cs/pl/asm/,基本包含了这门课的所有知识点。

推荐书单

  • 《汇编语言》王爽,清华大学出版社
  • 《软件调试》张银奎
  • Professional Assembly Language, Richard Blum
  • The Art of Assembly Language, Randall Hyde
  • The Art of 64-bit Assembly, Randall Hyde
  • Intel 80386 Programmer’s Manual, Intel
回到页面顶部