- 博客(14)
- 资源 (8)
- 收藏
- 关注
原创 程序的加载和执行(四)——《x86汇编语言:从实模式到保护模式》读书笔记24
程序的加载和执行(四)——《x86汇编语言:从实模式到保护模式》读书笔记24通过本文能学到什么?1. 怎样跳转到用户程序 2. 用户程序通过调用内核过程完成自己的功能 3. 怎样从用户程序返回到内核
2016-03-27 11:05:41 1561
原创 call、ret、retf 指令详解
call、ret、retf指令详解本文讲解针对NASM编译器,8086处理器的call、ret、retf 指令。对于其他编译器和保护模式下的80x86,指令用法类似,可以作为参考。
2016-03-26 22:57:26 28386 1
原创 程序的加载和执行(三)——《x86汇编语言:从实模式到保护模式》读书笔记23
程序的加载和执行(三)——读书笔记23接着上次的内容说,关于过程load_relocate_program的讲解还没有完,还差创建栈段描述符和重定位符号表。内容提要:1. 创建用户栈段描述符2. 符号表的重定位
2016-03-26 18:28:28 2490 4
原创 Markdown编辑器攻略——字体,字号,颜色
写博客的时候,有时候需要突出显示某个标题或者文本,这时候如果能改变字体、字号或者颜色就太好了。你想实现下面的效果吗? 今天真开心 今天真开心 今天真开心 Hello World Hello World Hello World 以上实现代码如下:<font face="黑体"> 今天真开心 </font><font size=3 face=华文彩云> 今天真开心 </font><font s
2016-03-25 21:59:33 2155
原创 如何构造栈段描述符
如何构造栈段描述符本文要讨论的是:对于x86保护模式(32位),已知栈空间的起始地址和结束地址,如何定义栈段描述符?ESP的初始为多少?为了简化问题,设定约束条件如下: 1. 栈段向下扩展 2. B=1 3. G=1 4. 分页机制关闭问题分析:数据段描述符的格式如下 如果你不懂各个字段的含义,可以参考我的博文: 数据段描述符和代码段描述符(一)——《x86汇编语言:从实模式到保护模
2016-03-23 22:09:09 2594
原创 程序的加载和执行(二)——《x86汇编语言:从实模式到保护模式》读书笔记22
本博文对应原书13.3-13.4节的内容。内容提要:1. 显示处理器的品牌信息2. 用户程序的头部结构3. 加载用户程序到内存4. 根据头部信息为用户建立各种段描述符
2016-03-22 22:42:22 2197
原创 movsb movsw movsd 指令详解
movsb movsw movsd 指令详解这三个指令,都是数据传送指令,都是从源地址向目的地址传送数据。16位模式下: 源地址是DS:SI,目的地址是ES:DI 32位模式下: 源地址是DS:ESI,目的地址是ES:EDI注意:在传送完成之后,SI和DI(或者ESI和EDI)会增加或者减小。 当DF=0 时,表示正向传送,传送之后SI和DI(或者ESI和EDI)的值会增加; 当DF=1
2016-03-21 20:27:37 31826 1
原创 程序的加载和执行(一)——《x86汇编语言:从实模式到保护模式》读书笔记21
程序的加载和执行(一)本文及之后的几篇博文是原书第13章的学习笔记。 本章主要是学习一个例子,对应的代码分为3个文件: ;代码清单13-1 ;文件名:c13_mbr.asm ;文件说明:硬盘主引导扇区代码 ;代码清单13-2 ;文件名:c13_core.asm ;文件说明:保护模式微型核心程序 ;代码清单13-3 ;文件名:c13.asm ;文件说明:用户程序因为代码比较长,完整的
2016-03-20 19:35:11 2894 1
原创 独立式环境与宿主式环境————《标准C语言指南》读书笔记01
独立式环境与宿主式环境————《标准C语言指南》读书笔记01 在编写和转换一个C程序之前,需要考虑它的执行环境,因为这关系到源文件的内容(程序应当如何编写),也关系到转换后的程序能否正常执行。通常有两种不同的执行环境,分别是独立式环境(freestanding environment)和宿主式环境(hosted environment)。 这两种环境的划分基于C在不同领域里的广泛应用。
2016-03-15 22:37:02 2190 1
原创 存储器的保护(三)——《x86汇编语言:从实模式到保护模式》读书笔记20
存储器的保护(三) 修改本章代码清单,使之可以检测1MB以上的内存空间(从地址0x0010_0000开始,不考虑高速缓存的影响)。要求:对内存的读写按双字的长度进行,并在检测的同时显示已检测的内存数量。建议对每个双字单元用两个花码0x55AA55AA和0xAA55AA55进行检测。上面的文字选自原书第12章的习题1. 这篇博文就讨论一下这道题。由于是初学,我不对自己做太高的要求,只要实现功能
2016-03-13 17:27:39 2462 4
原创 PUSHA/PUSHAD POPA/POPAD 指令详解
PUSHA/PUSHAD POPA/POPAD 指令详解官方文档的解释在《Intel Architecture Software Developer’s Manual Volume 2:Instruction Set Reference》中说明了PUSHA/PUSHAD,POPA/POPAD指令的用法。PUSHA/PUSHAD他们的指令码是一样的。 当操作数的大小是32位时: 这两个指令的作
2016-03-12 18:27:44 33503 1
原创 NASM 中 SECTION 的默认对齐
NASM对于每个SECTION,默认按4字节对齐。 关于这一点我们可以通过实验来证明。 比如源文件是:SECTION s1 db 0x11SECTION s2 db 0x45SECTION s3 db 0x99编译后对应的二进制文件是: 可以看到section s1 和 section s2 都被扩展为4个字节(后面的3字节用0填充)。注意:可以用ALIGN来指定SECTION的对
2016-03-12 12:52:35 2498
原创 BIOS功能调用之滚屏与清屏
BIOS功能调用之滚屏与清屏每次启动Bochs的时候,显示出来的那些内容有没有干扰你的眼球呢?其实我早就想清屏了,今天就来探索一下怎样利用BIOS中断来清屏。清屏都有哪些方法?1.空格填充法如果单就”清屏幕”这个问题而言,解决办法有很多,最最“勤劳”的方法就是在屏幕上显示25*80的空格。除了这个,还有什么方法呢?对了,BIOS中断。它山之石,可以攻玉。2.滚屏与清除窗口调用 功能号:06H/0
2016-03-05 00:28:15 10579 1
原创 VMware上的ubuntu14.04与win7共享文件夹
如果你觉得在主机和客户机之间把文件拖来拖去很麻烦,那么就可以采用本文的方法,之后在Ubuntu上可以访问win7上的文件夹。 第一步:安装VMware Tools 启动Ubuntu后,找到菜单,因为我已经安装了,所以显示“重新安装VMware Tools”。如果你已经安装了,可以跳过这步。如果你曾经安装过,但是尝试了本文的方法,还是不行(比如说/mnt/下找不到hgfs),那么强烈建议你重
2016-03-02 21:55:32 9383
themes.zip
2020-04-12
《从实模式到保护模式》第14章的代码(修改版)
2016-06-04
《从实模式到保护模式》配书源码和工具
2016-01-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人