找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 5552|回复: 17

第1章-课程说明和视频目录

[复制链接]

416

主题

316

回帖

3290

积分

管理员

积分
3290
发表于 2024-2-21 22:32:34 | 显示全部楼层 |阅读模式
本套视频课程是以《x86汇编语言:从实模式到保护模式》一书的第1版为蓝本,由本书的作者、本站站长李忠录制。

汇编语言课程是计算机专业的基础课程,类似于语文和数学。汇编语言不是用来编写大型程序的,它是用来打基础的,是用来理解计算机原理的,是用来理解和学习操作系统原理的,是用来学习处理器工作原理的。是的,对你看Linux源码有帮助,我知道你可能关心这一点。我的汇编课程不是所谓的Win32汇编。说实话,如果要写Windows程序,建议你用高级语言,不要用Win32汇编这种不伦不类的东西,它对你理解汇编没有多大帮助,对你理解Windows来说又太费事,你还不如用C语言;

本套视频与《x86汇编语言:从实模式到保护模式》这本书的第一版并不配套,但可以互相补充。图书出版时间太早,在视频录制过程中,删除了书中一些过时的内容(特别是对硬件任务切换做了削减,因为在现实中没有用,而且64位处理器已经不再支持),增加了书没有的内容(特别是指令格式部分)。书中的代码也根据视频的内容和特点做了大幅度的修改。视频要求很强的连续性,且要求容易理解,而写书则没有这种压力。

本套视频以汇编语言的视角介绍x86处理器的硬件架构、指令集、实模式、保护模式、特权级和特权级保护、分段、分页、虚拟内存、平坦模型、单处理器的任务切换、系统调用(从用户态进入内核态的方法和过程)。

课程说明视频版:链接: https://pan.baidu.com/s/1S4iuwJRytXlJhevuGOM2pA 提取码: 7uwm

课程状态:已完结,请在本版内逐课段学习。相关资料包含在各课段内。有疑问的,在对应的课段内讨论。

无论是对高级会员还是至尊会员来说,本课程的主体内容都是成体系而且完整的。但是至尊会员多了习题(含解答)和相关资料。

416

主题

316

回帖

3290

积分

管理员

积分
3290
 楼主| 发表于 2024-2-26 12:19:37 | 显示全部楼层
《x86汇编语言:从实模式到保护模式》视频目录

章节1:课程说明
课时1课程说明17:45

章节2:汇编语言的前世今生
课时2  引子03:39
课时3  用电来表示数字08:29
课时4  二进制加法机06:12
课时5  具有记忆功能的器件——寄存器08:56
课时6  带寄存器的加法机06:11
课时7  能做四则运算的机器07:50
课时8  机器指令24:12
课时9  内存18:09
课时10  自动计算18:25
课时11  处理器08:36
课时12  汇编语言的诞生10:06

章节3:认识8086处理器
课时13  8086的通用寄存器14:50
课时14  8086的内存访问和字节序08:25
课时15  程序的分段08:27
课时16  程序的重定位难题10:15
课时17  段地址和偏移地址09:19
课时18  8086内存访问的困境05:37
课时19  8086选择段地址的策略07:58
课时20  8086的内存访问过程08:35
课时21  逻辑地址和分段的灵活性15:44

章节4:原书第1版第2章检测点和习题解析
课时22  原书第1版第2章检测点和习题解析09:37

章节5:汇编语言和汇编软件
课时23  创建汇编语言源程序08:06
课时24  Notepad++的下载和使用08:03
课时25  下载和安装编译器NASM06:08
课时26  编译汇编语言源程序11:36
课时27  下载和使用配套源码及工具15:39
课时28  将编译功能集成到Notepad++09:29

章节6:原书第1版第3章检测点和习题解析
课时29  原书第1版第3章检测点和习题解析07:01

章节7:如何执行编译好的程序
课时30  8086加电或者复位时的状态11:20
课时31  8086地址空间的分配15:53
课时32  跳转指令11:32
课时33  硬盘的构造和工作原理14:50
课时34  一切从主引导扇区开始09:42

章节8:虚拟机的安装和使用
课时35  安装VirtualBox虚拟机管理器12:05
课时36  创建VirtualBox虚拟机18:32
课时37  虚拟硬盘简介11:21
课时38  在Windows下创建虚拟硬盘并安装操作系统15:19
课时39  在Linux下创建虚拟硬盘并安装操作系统09:35

章节9:汇编语言程序的调试
课时40  带调试功能的虚拟机05:39
课时41  安装Bochs虚拟机15:36
课时42  为Bochs虚拟机安装虚拟硬盘10:05
课时43  创建主引导扇区程序13:07
课时44  将程序写入硬盘主引导扇区16:59
课时45  用调试器观察程序的执行36:16

章节10:原书第1版第4章检测点和习题解析
课时46  原书第1版第4章检测点和习题解析03:49

章节11:在屏幕上显示文本
课时47  显卡和显存14:53
课时48  准备访问文本模式下的显存06:32
课时49  字符的编码和显示属性24:35
课时50  文本模式下的显存操作12:39
课时51  MOV指令的形式和机器码21:12
课时52  列表文件的创建和使用15:27
课时53  在汇编程序中使用标号11:55
课时54  段间直接绝对跳转指令08:06
课时55  在Bochs中运行和调试写屏程序25:36
课时56  在VirtualBox中运行写屏程序06:15
课时57  主引导扇区执行时的内存布局11:35
课时58  使用标号计算跳转的偏移地址09:45
课时59  使用寄存器的绝对间接近跳转09:06
课时60  使用相对偏移量的短跳转和近跳转19:41

章节12:在屏幕上显示数字
课时61  显示数字的基本原理06:17
课时62  无符号数除法指令div11:57
课时63  在调试器里验证除法操作07:57
课时64  异或指令xor的用法16:00
课时65  加法指令add的用法08:35
课时66  使用标号访问内存数据14:37
课时67  段超越前缀的使用14:30
课时68  显示标号的汇编地址16:20

章节13:阶段性重点内容总结试看
课时69  阶段性重点内容总结12:19
课时70  原书第1版第5章检测点和习题解析24:30

章节14:循环、批量传送和条件转移
课时71  跳过非指令的数据区09:12
课时72  逻辑段地址的重新设定07:50
课时73  串传送指令和标志寄存器12:50
课时74  NASM的$和$$记号16:27
课时75  使用循环指令LOOP分解数位07:25
课时76  基址寻址和INC指令11:06
课时77  数字的显示和DEC指令12:04
课时78  基址变址寻址和条件转移指令17:23

章节15:计算机中的负数
课时79  无符号数和有符号数12:02
课时80  减法指令SUB和求补指令NEG17:17
课时81  计算机如何区分对待无符号数和有符号数17:31
课时82  有符号数除法指令IDIV16:38
课时83  有符号数的符号扩展指令20:20

章节16:阶段性知识总结和拓展试看
课时84  8086的标志寄存器21:23
课时85  条件转移指令和CMP指令15:31
课时86  原书第1版第6章检测点和习题解析29:03

章节17:从1加到100并显示结果
课时87  字符串的定义和累加过程14:50
课时88  栈的原理和使用25:48
课时89  栈在数位分解和显示中的应用14:25
课时90  在调试器里观察栈操作的状态16:11
课时91  进一步认识栈和栈操作的特点09:31
课时92  逻辑或指令OR和逻辑与指令AND20:09

章节18:INTEL8086处理器的寻址方式
课时93  寄存器、立即数和直接寻址10:00
课时94  基址寻址16:48
课时95  变址寻址20:02
课时96  基址变址寻址14:26
课时97  原书第1版第7章检测点和习题解析09:00

章节19:硬盘和显卡的访问与控制
课时98  离开主引导扇区06:15
课时99  给汇编语言程序分段19:57
课时100  控制段内元素的汇编地址11:12
课时101  加载器和用户程序头部段18:51
课时102  加载器的工作流程和常数声明09:06
课时103  确定用户程序的加载位置15:50
课时104  外围设备及其接口11:11
课时105  输入输出端口的访问11:09
课时106  通过硬盘控制器端口读扇区数据25:09
课时107  过程和过程调用22:15
课时108  过程调用和返回的原理09:45
课时109  加载整个用户程序14:35
课时110  用户程序的重定位10:35
课时111  比特位的移动指令21:45
课时112  转到用户程序内部执行07:12
课时113  8086的无条件转移指令16:56
课时114  用户程序的执行过程20:08
课时115  验证加载器加载和执行用户程序的过程17:06
课时116  书中第八章用户程序概述09:21
课时117  与文本显示有关的回车、换行与光标控制24:20
课时118  回车的光标处理和乘法指令MUL23:59
课时119  换行和普通字符的处理过程与滚屏操作21:36
课时120  8086的过程调用方式13:36
课时121  通过RETF指令转到另一个代码段内执行12:50
课时122  在程序中访问不同的数据段07:18
课时123  使用新版FixVhdWr写虚拟硬盘并运行程序19:19
课时124  原书第一版第8章习题解析解答10:45

章节20:中断和动态时钟显示
课时125  中断和硬件中断07:09
课时126  中断控制器简介11:39
课时127  中断号、中断处理过程和中断向量表13:46
课时128  实时时钟、CMOS RAM和BCD编码11:50
课时129  实时时钟芯片的中断信号20:08
课时130  安装0x70号中断处理过程18:02
课时131  启用更新周期结束中断18:36
课时132  用TEST指令等待更新周期结束12:55
课时133  读取BCD码的时间并在屏幕上显示15:35
课时134  用NOT指令反转时间分隔符的颜色06:55
课时135  使用IRET指令从中断过程返回06:35
课时136  用停机指令HLT使处理器进入低功耗状态17:35
课时137  内部中断和软中断10:15
课时138  BIOS中断概述16:32
课时139  使用BIOS功能调用接收并显示键盘输入15:30
课时140  原书第9章检测点和习题解析04:30

章节21:32位x86处理器编程架构
课时141  IA-32架构和保护模式11:21
课时142  寄存器的扩展和扩充08:08
课时143  32位处理器的内存访问概况08:11
课时144  32位处理器的寻址方式概况21:02
课时145  选修-流水线技术06:08
课时146  选修-高速缓存技术07:35
课时147  选修-乱序执行技术08:15
课时148  选修-寄存器重命名技术08:45
课时149  选修-分支目标预测技术07:09

章节22:进入保护模式
课时150  保护模式是要保护什么09:00
课时151  全局描述符表GDT和全局描述符表寄存器GDTR09:19
课时152  准备创建全局描述符表09:45
课时153  描述符的分类05:50
课时154  存储器的段描述符-段的类型和基地址11:12
课时155  存储器的段描述符-段界限及访问控制位15:39
课时156  安装存储器的段描述符10:50
课时157  加载全局描述符表寄存器GDTR09:55
课时158  开启处理器的第21根地址线A2014:37
课时159  通过设置寄存器CR0的PE位进入保护模式12:57
课时160  描述符高速缓存器和保护模式下的内存访问16:07
课时161  在调试器中观察实模式和保护模式的内存访问25:05

章节23:指令的格式及其操作尺寸
课时162  80286的16位保护模式10:05
课时163  16位处理器的指令操作尺寸09:28
课时164  32位处理器的指令操作尺寸20:40
课时165  x86的指令格式-操作码和立即数部分18:38
课时166  x86的指令格式-ModRM和偏移量部分31:55
课时167  x86的指令格式-SIB部分17:17
课时168  x86的指令格式-指令前缀部分05:00
课时169  处理器的默认操作尺寸和相关指令前缀19:09
课时170  用伪指令bits生成16位和32位模块10:00
课时171  描述符和段描述符高速缓存器的D位12:09
课时172  进入保护模式后立即切换到32位模块并使用32位默认操作尺寸19:39

章节24:存储器的保护
课时173  话说MOV DS,AX和MOV DS,EAX19:27
课时174  修改段寄存器时的保护11:26
课时175  代码段执行时的保护07:39
课时176  用向上扩展的段做为栈段13:30
课时177  向上扩展的段用做栈段时的保护08:30
课时178  访问普通数据段时的保护09:39
课时179  内存线性地址的回绕特性15:00
课时180  用向下扩展的段做为栈段13:50
课时181  向下扩展的段用做栈段时的保护13:15
课时182  通过别名来实现段的共用和共享15:00
课时183  冒泡排序法的基本原理08:22
课时184  32位操作尺寸下的LOOP指令09:39
课时185  数据交换指令XCHG17:00

章节25:保护模式程序的动态加载和执行
课时186  本章的目标和内容提要09:10
课时187  内核的结构和加载前的准备工作27:30
课时188  准备为内核的每个段创建和安装描述符15:00
课时189  段描述符的创建和BSWAP指令21:15
课时190  进入内核执行15:00
课时191  进入内核后显示文本信息12:00
课时192  用CPUID指令取得处理器品牌信息并显示17:15
课时193  准备加载用户程序15:00
课时194  预读用户程序并得到它的大小07:15
课时195  条件传送指令簇CMOVcc12:15
课时196  计算以512字节为单位的用户程序总长度08:15
课时197  内存分配的基本策略和方法13:15
课时198  内存分配的简易实现过程10:15
课时199  加载用户程序10:00
课时200  准备安装用户程序的段描述符09:35
课时201  用SGDT和MOVZX指令确定GDT的位置17:35
课时202  安装新描述符并生成选择子08:22
课时203  安装用户程序的段描述符并回填选择子12:00
课时204  用户程序的执行和退出17:00
课时205  在虚拟机上观察内核的加载以及用户程序的执行与退出08:08

章节26:用户程序编程接口及其实现
课时206  内核与用户程序之间的栈切换问题15:00
课时207  在内核中为用户程序提供编程支持12:27
课时208  用户程序中的符号地址检索表16:50
课时209  内核程序中的符号地址检索表13:25
课时210  串比较指令CMPS09:12
课时211  串比较的方向和重复前缀20:33
课时212  使用外循环依次取得用户SALT表的每个条目08:15
课时213  使用内循环依次取得内核SALT表的每个条目并进行比较12:08
课时214  在用户程序内使用内核编程接口读硬盘和显示文本11:45
课时215  在虚拟机上验证程序的执行06:39
课时216  以十六进制形式显示一个双字以及PUSHAD、POPAD和XLAT指令的使用17:05

章节27:任务和任务的创建
课时217  任务:概念和组成07:25
课时218  使用任务控制块保存任务基本信息15:08
课时219  将任务控制块加入任务控制块链表09:25
课时220  通过栈传递例程参数以及立即数的压栈指令09:09
课时221  段寄存器的压栈和出栈以及栈的随机访问机制11:30
课时222  创建任务的局部描述符表LDT11:50
课时223  在当前任务的LDT中安装描述符16:50
课时224  LDT描述符的格式和LDT描述符的创建11:50
课时225  创建任务状态段TSS09:15
课时226  TSS描述符的格式和TSS描述符的创建07:39
课时227  用带参数的RET指令返回调用者11:11
课时228  加载任务寄存器TR和局部描述符表寄存器LDTR18:50
课时229  在虚拟机上验证任务的执行15:35

章节28:特权级和特权级保护
课时230  特权级保护的必要性和特权保护机制12:20
课时231  当前特权级CPL06:46
课时232  描述符特权级DPL13:10
课时233  任务公共部分和私有部分的特权级划分17:00
课时234  依从的代码段06:10
课时235  门描述符和调用门13:58
课时236  本章程序说明及特权级检查的时机09:25
课时237  请求特权级RPL16:16
课时238  请求特权级调整指令ARPL11:55
课时239  一般情况下的请求特权级设置09:19
课时240  为内核接口例程创建调用门21:55
课时241  调用门的测试和调用门转移过程15:39
课时242  通过调用门实施低特权级到高特权级的转移13:35
课时243  通过调用门转移控制时的栈切换过程10:50
课时244  通过调用门转移控制并返回的完整描述12:00
课时245  创建0、1和2特权级的栈并登记在TSS中15:08
课时246  通过模拟调用门返回进入用户程序执行13:39

章节29:协同式任务切换
课时247  多任务和任务切换概述15:00
课时248  内核任务的创建和I/O特权级IOPL14:15
课时249  I/O特权级的修改和POPF指令09:39
课时250  任务的用户态和内核态12:25
课时251  I/O许可位串和TSS的I/O许可位映射区17:00
课时252  任务切换的方法及内核任务的确立16:02
课时253  用户任务的创建和初始化20:09
课时254  简单的任务调度和切换策略11:05
课时255  遍历TCB链表寻找忙任务和就绪任务12:59
课时256  通过JMP FAR执行任务切换的过程11:50
课时257  内核任务与用户任务轮流执行的过程18:50
课时258  任务的终止和清理13:27

章节30:中断和异常的处理与抢占式多任务
课时259  中断和异常概述16:00
课时260  保护模式下中断和异常的向量分配11:39
课时261  中断描述符表、中断门和陷阱门16:30
课时262  本章程序介绍19:25
课时263  创建并安装全部的256个中断门22:30
课时264  为实时时钟中断创建和安装中断门08:30
课时265  加载中断描述符表寄存器IDTR06:55
课时266  重新设置8259A主片的中断向量19:39
课时267  中断和异常发生时的特权级检查06:50
课时268  中断和异常发生时的栈切换过程19:00
课时269  在中断处理过程中实施任务切换(含NOP指令的介绍)19:05
课时270  抢占式多任务的执行效果演示10:05

章节31:分页和动态页面分配试看
课时271  保护模式下的段式虚拟内存管理19:39可试看
课时272  每个任务独立的虚拟内存10:30
课时273  物理内存的分页以及段到页的拆分13:20
课时274  处理器的段部件和页部件14:05
课时275  从线性地址到物理地址的转换过程13:11
课时276  页目录和页表及其地址转换过程16:16
课时277  设计内核的页目录和页表15:00
课时278  页目录项和页表项的组成格式08:05
课时279  创建内核的页表并初始化低端1MB对应的页表项10:25
课时280  设置控制寄存器CR3和CR0开启分页功能08:50
课时281  在调试器中观察页目录表和页表16:50
课时282  准备将内核映射到虚拟内存的高端15:50
课时283  在分页机制下访问页目录表自身11:15
课时284  使内核在虚拟内存高端的映射生效12:50
课时285  为内核任务创建任务控制块TCB14:05
课时286  为内核任务的TSS分配内存空间15:00
课时287  处理与线性地址对应的页目录项和页表项15:28
课时288  根据需要分配物理页并设置页表项06:15
课时289  物理内存的页面管理和页映射位串15:25
课时290  空闲页的搜索和BTS指令09:22
课时291  空闲页搜索和分配的具体过程10:15
课时292  确立内核任务并开始创建用户任务15:50
课时293  用户任务的内存分配策略16:39
课时294  清空内核任务页目录表的前半部分并刷新TLB15:00
课时295  为用户任务分配内存并创建LDT12:30
课时296  用户程序的加载和重定位15:35
课时297  用户任务页目录表的创建和访问以及INVLPG指令23:12
课时298  第二个用户任务的创建和分页模式下的任务切换12:22
课时299  分页模式下多任务切换的演示和调试27:30

章节32:平坦模型
课时300  为什么要引入平坦模型及平坦模型的特点16:00
课时301  在主引导程序中创建平坦模型下的段09:45
课时302  平坦模型对内核程序分段的影响16:45
课时303  平坦模型对加载内核程序的影响11:35
课时304  平坦模型下的内核初始化与内核任务的确立17:35
课时305  平坦模型下的用户程序结构15:35
课时306  平坦模型下的用户任务创建05:30
课时307  在用户任务内动态分配内存08:55
课时308  平坦模型下的多任务切换演示与调试

416

主题

316

回帖

3290

积分

管理员

积分
3290
 楼主| 发表于 2024-2-26 12:30:42 | 显示全部楼层

高级会员的学习过程没有习题和特殊资料
与视频配套的源码和工具:


视频里涉及的图表打包(未打包的资料散见于各视频文件夹内):

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

2

主题

7

回帖

114

积分

至尊会员

积分
114

至尊会员

发表于 2024-2-28 09:18:18 | 显示全部楼层
老师你好:下载视频后解压后视频无法观看?

416

主题

316

回帖

3290

积分

管理员

积分
3290
 楼主| 发表于 2024-2-28 11:00:41 | 显示全部楼层
张永明 发表于 2024-2-28 09:18
老师你好:下载视频后解压后视频无法观看?

视频现在尚无法下载,因为还没有提供下载链接。你下载的是配套的源码和工具,不是视频。这些工具如何使用,参照图书和视频。Don't 着急。

0

主题

1

回帖

60

积分

至尊会员

积分
60

至尊会员

发表于 2024-2-28 13:16:05 | 显示全部楼层
老师,你好!方便透露下你是如何掌握这些知识的,比如参考的书籍或是文献链接。

416

主题

316

回帖

3290

积分

管理员

积分
3290
 楼主| 发表于 2024-2-28 15:06:46 | 显示全部楼层
eatsleepsauce 发表于 2024-2-28 13:16
老师,你好!方便透露下你是如何掌握这些知识的,比如参考的书籍或是文献链接。 ...

其实没什么诀窍,就是兴趣和持之以恒。更何况我们那个时候没有互联网,获取资料都费劲,现在条件好得没法说了。

2

主题

7

回帖

114

积分

至尊会员

积分
114

至尊会员

发表于 2024-2-29 07:40:22 | 显示全部楼层
站长 发表于 2024-2-28 15:06
其实没什么诀窍,就是兴趣和持之以恒。更何况我们那个时候没有互联网,获取资料都费劲,现在条件好得没法 ...

老师你好:很多关于汇编的视频都是在B站上看的,还有在网易云课堂购买过极客编程老师的计算机原理(他是参考老师的书 穿越计算机的迷雾)我就是那个时候知道了老师。后来又在B站上看到老师的视频,看见下面的淘宝链接就购买了老师的会员课。

2

主题

6

回帖

230

积分

至尊会员

积分
230

至尊会员

发表于 2024-2-29 13:51:39 | 显示全部楼层
站长 发表于 2024-2-26 12:30
以下是本套课程的视频,请点击观看(至尊会员权益部分需下载):

忠哥,我在网易云课堂上购买过您这套视频,请问跟这里的有区别吗,这里的视频看完了,能接着看网易云课堂上的吗

416

主题

316

回帖

3290

积分

管理员

积分
3290
 楼主| 发表于 2024-2-29 21:47:42 | 显示全部楼层
haizeiouni 发表于 2024-2-29 13:51
忠哥,我在网易云课堂上购买过您这套视频,请问跟这里的有区别吗,这里的视频看完了,能接着看网易云课堂 ...

有一些区别。但这不重要,重要的是视频课程正在转型,从网易转到鼠侠网。到时候网易的课程就不再销售(只能看但不卖),只有鼠侠网更新。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2024-12-22 11:32 , Processed in 0.241057 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表