随笔分类 -  x86 Assembly Programming

摘要:说实话越计卷作者用了16页(我还是删过的),来讲怎么控制声卡,其实真正归纳起来就那么几点。 ★PART1:直接存储访问 1. 总线控制设备(bus master) 在硬件技术不发达的早期,处理器是最重要的总线主控制设备,它有权决定谁参与总线数据传输。考虑代码片断:mov [0x2000],dx,在执 阅读全文
posted @ 2016-04-08 18:32 PhiliAI 阅读(1414) 评论(0) 推荐(0)
摘要:★PART1:中断和异常概述 1. 中断(Interrupt) 中断包括硬件中断和软中断。硬件中断是由外围设备发出的中断信号引发的,以请求处理器提供服务。当I/O接口发出中断请求的时候,会被像8259A和I/O APIC这样的中断寄存器手机,并发送给处理器。硬件中断完全是随机产生的,与处理器的执行并 阅读全文
posted @ 2016-04-03 02:17 PhiliAI 阅读(2068) 评论(0) 推荐(0)
摘要:中断是处理器一个非常重要的工作机制。第9章是讲中断在实模式下如何工作,第17章是讲中断在保护模式下如何工作。 ★PART1:外部硬件中断 外部硬件中断是通过两个信号线引入处理器内部的,这两条线分别叫NMI和INTR。处理器正在运行的时候会收到各种各样的中断,有些中断必须被处理,这就叫非屏蔽中断;有一 阅读全文
posted @ 2016-03-25 01:32 PhiliAI 阅读(1958) 评论(0) 推荐(1)
摘要:第16章讲的是分页机制和动态页面分配的问题,说实话这个一开始接触是会把人绕晕的,但是这个的确太重要了,有了分页机制内存管理就变得很简单,而且能直接实现平坦模式。 ★PART1:Intel X86基础分页机制 1. 页目录、页表和页 首先先要明白分页是怎么来的,简单来讲,分页其实就是内存块的映射管理。 阅读全文
posted @ 2016-03-25 01:30 PhiliAI 阅读(1813) 评论(0) 推荐(0)
摘要:15章其实应该是和14章相辅相成的(感觉应该是作者觉得14章内容太多了然后切出来了一点)。任务切换和14章的某些概念是分不开的。 ★PART1:任务门与任务切换的方法 1. 任务管理程序 14章的时候我们说过,一个程序他可以有很多个任务,特权级指的是任务的不同部分的特权级,一个任务可以有两个空间,一 阅读全文
posted @ 2016-03-19 15:01 PhiliAI 阅读(1507) 评论(1) 推荐(1)
摘要:★PART1:32位保护模式下任务的隔离和特权级保护 这一章是全书的重点之一,这一张必须要理解特权级(包括CPL,RPL和DPL的含义)是什么,调用门的使用,还有LDT和TSS的工作原理(15章着重讲TSS如何进行任务切换)。 1. 任务,任务的LDT和TSS 程序是记录在载体上的指令和数据,其正在 阅读全文
posted @ 2016-03-16 00:22 PhiliAI 阅读(2328) 评论(0) 推荐(2)
摘要:★PART1:32位保护模式下内核简易模型 1. 内核的结构,功能和加载 每个内核的主引导程序都会有所不同,因为内核都会有不同的结构。有时候主引导程序的一些段和内核段是可以共用的(事实上加载完内核以后就不需要主引导程序了),和加载一般的用户程序一样,主引导程序也是需要从硬盘中读取程序到指定的内存空间 阅读全文
posted @ 2016-02-29 10:41 PhiliAI 阅读(1328) 评论(0) 推荐(0)
摘要:12章其实是11章的拓展,代码基本不变,就是在保护模式下展开讨论。 ★PART1:存储器的保护机制 1. 修改段寄存器的保护 当执行把段选择子传到段寄存器的选择器部分的时候,处理器固件在完成传送之前,要检查和确认选择子是正确的,并且该选择子选择的描述符也是正确的。假如索引号是正确的,也就是说明索引号 阅读全文
posted @ 2016-02-25 20:38 PhiliAI 阅读(999) 评论(0) 推荐(0)
摘要:★PART1:进入保护模式 1. 全局描述符表(Global Descriptor Table,GDT) 32位保护模式下,如果要使用一个段,必须先登记,登记的信息包括段的起始地址,段的界限和各种访问属性,如果偏移地址超过了段的界限,就会引发异常中断。和一个段有关的信息需要8个字节来描述,这被称为段 阅读全文
posted @ 2016-02-23 21:11 PhiliAI 阅读(4230) 评论(2) 推荐(0)
摘要:★PART1:32位的x86处理器执行方式和架构 1. 寄存器的拓展(IA-32) 从80386开始,处理器内的寄存器从16位拓展到32位,命名其实就是在前面加上e(Extend)就好了,8个通用寄存器被命名为EAX,EBX,ECX,EDX,ESI,EDI,ESP和EBP,同样的,操作的时候必须要和 阅读全文
posted @ 2016-02-20 22:31 PhiliAI 阅读(1049) 评论(0) 推荐(0)
摘要:第八章是一个非常重要的章节,讲述的是实模式下对硬件的访问(这一节主要讲的是硬盘),还有用户程序重定位的问题。现在整理出来刚好能和保护模式下的用户程序定位作一个对比。 ★PART1:用户程序的重定位,硬盘的访问 1. 分段、段的汇编地址和段内汇编地址 NASM编译器使用汇编指令“SECTION”或者“ 阅读全文
posted @ 2016-02-19 19:44 PhiliAI 阅读(2111) 评论(0) 推荐(0)
摘要:第5-7章感觉是这一本书中比较奇怪的章节,可能是作者考虑到读者人群水平的差异,故意由浅入深地讲如何在屏幕上显示字符和使用mov,jmp指令等等,但是这样讲的东西有点重复,而且看了第六,第七章以后,感觉第5章的做法真是太笨了。 本来觉得,显卡与显存应该是放到1-4章的笔记来记录才对,可是这样一来这个5 阅读全文
posted @ 2016-02-18 23:50 PhiliAI 阅读(1455) 评论(0) 推荐(0)
摘要:其实很久之前就学完了实模式了,但是一直没有总结,感觉现在直接在书上做笔记的弊端就是有些知识点不能很很深刻地记下来(毕竟手写最明显的优点就是能深刻地记住知识,但是就是用太多的时间罢了)。一下内容都是一些这本书里面的知识和笔记。 ★PART1:进制计数: 1. 二进制到十进制的相互转换(带权乘法) a. 阅读全文
posted @ 2016-02-17 23:33 PhiliAI 阅读(1232) 评论(1) 推荐(1)
摘要:在16位的处理器上,做加法的指令是add,但是他每次只能做8位或者16位的加法,除此之外,还有一个带进位的加法指令adc(Add With Carry),他的指令格式和add一样,目的操作数可以是8位或者16位的通用寄存器或者内存单元,源操作数可以是与目的操作数宽度一致的通用寄存器,内存单元或和立即 阅读全文
posted @ 2016-01-24 20:40 PhiliAI 阅读(1178) 评论(0) 推荐(0)