摘要:
特权级的基本概念 CPL 当前代码的特权级 = CS寄存器中的RPL RPL 选择子中要求的特权级 DLP 目标段中要求的特权级 好比如说我是ROOT 用户拥有root权限, 我是用读权限打开一个文件, 这个文件的权限是 777 CPL = ROOT 权限 RPL = 读权限 DLP = 777 数 阅读全文
摘要:
总览图 说明 寄存器: CR0,CR1,CR2,CR3 的作用如上图所示,其中需要注意的就是PE和PG两个位开关,他们分别指示了分段内存和分页内存的启用和禁用,同时PE也指示CPU工作的模式是实模式还是保护模式,所以实模式是和分段的内存管理捆绑的 GDTR: 记录了全局段表的位置和长度,是全局共用的 阅读全文
摘要:
根据最近学习的内容写了一个运行在裸机上的16位汇编程序github: AsmSystem练习内容: 1. 宏的使用 2. 子过程的调用 参数传递,%arg,%local的使用 3. 多文件编译 4. 文本打印 / 磁盘操作 / 字符串比较 / 键盘操作 / 内存操作 / SLEEP 5. 段切换 r 阅读全文
摘要:
简述 80386相比于8086 地址线从20位扩展为32位,这意味着80386可以最多访问4G的内存,同时所有的寄存器都扩展为32位寄存器,80386扩展了原来的寄存器,增加了一些新的指令,并增加了新的寄存器 80386的寄存器主要分如下几类:通用寄存器,段寄存器,指令寄存器,标志位寄存器,系统地址 阅读全文
摘要:
%include 格式 %include file.asm 说明 包含其他的asm源文件,可使用C常用的防止被重复包含的方法 %ifndef MACROS_MAC %define MACROS_MAC ; 文件内容 %endif %rep 格式 %rep 重复次数 XXXXX 要重复的代码内容 %e 阅读全文
摘要:
简述 这一些预处理指令是为了方便我们使用堆栈传参的时候的程序调用的。 我们一般的调用过程如下 proc1: push 参数1 ; 参数1 压栈 push 参数2 ;参数2 压栈 push 参数3 ;参数2 压栈 call proc2 proc2: push bp ; bp内容压栈, 为的是保存bp寄 阅读全文
摘要:
结构定义 格式 struc xxx .aaa resw 1 .bbb resw 1 endstruc 说明 他并非真正的结构体支持,而是相当于定义了一系列的LABEL,并且这些LABEL的地址都是相对于结构体开始处的偏移地址 所以 .aaa = 0; .bbb = 2;因为.aaa 占用了2个字节 阅读全文
摘要:
上下文堆 解释 就是一个在编译期间由编译器维护的堆栈 之前说了预处理器的作用是在编译阶段执行一些代码,以简化或者增强汇编代码的能力,就像汇编代码本身执行的过程中需要一个堆栈存储一些信息一样,预处理器的指令在运行过程中也是需要存储一些信息的,那么这个上下文栈就是存储信息的地方 但是它比堆栈更强大,堆栈 阅读全文
摘要:
基本格式 %if<condition> %elif<condition> ……;elif 的数量不限制 %elif<condition> %else ;else也可由可无 %endif 所以基本就是C 的语法 条件判断 指令 %if <condition> %elif <condition> 说明 阅读全文
摘要:
简要说明 所谓预处理器,就是在编译阶段由编译器解释执行的代码,所以代码的结果应该是在编译阶段就能确定,否则就会报错。 强大的预处理器可以简化和增强汇编代码的能力。 单行宏 %define / %idefine 基本格式: %define a mov ax,1 %define a(p1,p2) mov 阅读全文