章节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 视频 下载和安装编译器NASM 06: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 视频 无符号数除法指令div 11: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和求补指令NEG 17:17课时81 视频 计算机如何区分对待无符号数和有符号数 17:31课时82 视频 有符号数除法指令IDIV 16: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和逻辑与指令AND 20: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 视频 回车的光标处理和乘法指令MUL 23: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和全局描述符表寄存器GDTR 09:19课时152 视频 准备创建全局描述符表 09:45课时153 视频 描述符的分类 05:50课时154 视频 存储器的段描述符-段的类型和基地址 11:12课时155 视频 存储器的段描述符-段界限及访问控制位 15:39课时156 视频 安装存储器的段描述符 10:50课时157 视频 加载全局描述符表寄存器GDTR 09:55课时158 视频 开启处理器的第21根地址线A20 14: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,EAX 19: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 视频 数据交换指令XCHG 17: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 视频 条件传送指令簇CMOVcc 12: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 视频 串比较指令CMPS 09: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 视频 创建任务的局部描述符表LDT 11:50课时223 视频 在当前任务的LDT中安装描述符 16:50课时224 视频 LDT描述符的格式和LDT描述符的创建 11:50课时225 视频 创建任务状态段TSS 09:15课时226 视频 TSS描述符的格式和TSS描述符的创建 07:39课时227 视频 用带参数的RET指令返回调用者 11:11课时228 视频 加载任务寄存器TR和局部描述符表寄存器LDTR 18:50课时229 视频 在虚拟机上验证任务的执行 15:35章节28: 特权级和特权级保护课时230 视频 特权级保护的必要性和特权保护机制 12:20课时231 视频 当前特权级CPL 06:46课时232 视频 描述符特权级DPL 13:10课时233 视频 任务公共部分和私有部分的特权级划分 17:00课时234 视频 依从的代码段 06:10课时235 视频 门描述符和调用门 13:58课时236 视频 本章程序说明及特权级检查的时机 09:25课时237 视频 请求特权级RPL 16:16课时238 视频 请求特权级调整指令ARPL 11: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特权级IOPL 14: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 视频 加载中断描述符表寄存器IDTR 06: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 视频 为内核任务创建任务控制块TCB 14: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 视频 清空内核任务页目录表的前半部分并刷新TLB 15:00课时295 视频 为用户任务分配内存并创建LDT 12: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 视频 平坦模型下的多任务切换演示与调试 05:00章节33: 如何通过软件实现多任务管理和切换课时309 视频 本章的目标和任务 03:50