上一页 1 ··· 4 5 6 7 8 9 10 11 下一页

2012年9月1日

我对jmp selector:offset模型的理解

摘要: jmp selector:offset,其中的selector可能指示段描述符或门描述符,cpu执行该指令的流程应该是这样: 以上就是我对jmp selector:offset执行过程的理解,其实call selector:offset类似,仅仅是首尾多了cs,eip的堆栈,出栈。 (图示的箭头画的有些扎眼,希望没影响到你心情,我也没办法,flash cs里做的图,它又不带箭头工具,我只能自己画...) 阅读全文

posted @ 2012-09-01 15:57 weiweishuo 阅读(235) 评论(0) 推荐(0)

2012年8月31日

我对call gate的理解

摘要: call gate(调用门)提供一种机制,允许通过call指令实现向更高级非一致代码段的跳转,同时cpl发生相应跃迁。 所以说call gate是call指令的专用门。猜测call gate之名定取the gate for call是也。 对上面两点作下解释: “允许通过call指令实现向更高级非一致代码段的跳转”,为什么是非一致代码段?我们知道,若目标段是一致代码段,那么无论是普通跳转还是使用调用门跳转,无论跳转方式是call还是jmp,cpl都保留跳转前等级。这是一致代码段的特点。 “call gate是call指令的专用门”,可明明jmp指令后面也可以跟上调用门的描述符呀!确实,但jm. 阅读全文

posted @ 2012-08-31 17:20 weiweishuo 阅读(500) 评论(0) 推荐(0)

[置顶] orange's 推荐博客

摘要: 把遇到的好博客贴出来,希望能帮到正在学习orange's的朋友 1,http://blog.chinaunix.net/uid/587665/frmd/115190.html 这个链接并未指向博客首页,而指向文章分类中的x86 & x64 体系。作者是“chinaunix->cpu与编译器 ”的版主。 如果你对80x86体系下实模式保护模式各种概念和细节不慎理解,建议去看看。文章的水平很高,文字浅显准确,不时让人觉得切中痛处。并且作者很喜欢用c代码解释一些机制的原理,跟王爽老师很像。2,http://www.cnblogs.com/Aoysme/ 是一步步学习orange 阅读全文

posted @ 2012-08-31 16:38 weiweishuo 阅读(178) 评论(0) 推荐(0)

2012年8月28日

linux网购,还是用virtualbox省事儿些(万万别用ose版本的)

摘要: 总以为virtualbox不支持usb,原来是ose版本的不支持(似乎也支持,反正比较难调)。我是在官网上下载的闭源版本: virtualbox-4.1_4.1.20-80170~Debian~squeeze_i386.deb 安装的过程中遇到两个问题: 第一个问题 -------------------- Could not load the Host USB Proxy Service (VERR_FILE_NOT_FOUND). The service might be not installed on the host computer. -------------------- 这. 阅读全文

posted @ 2012-08-28 19:52 weiweishuo 阅读(337) 评论(0) 推荐(0)

2012年8月25日

nasm报错:operator may only be applied to scalar values

摘要: 搜到了一篇不错的帖子: (回答的那个人实在是太敬业了)Hey all.I'm a complete beginner in assembly and have chosen NASM to work my way up with. But I have a problem with the pseudo-instruction set. More precisely, I don't understand how the expressions "$ and $$" are used in correlation with times.It's no 阅读全文

posted @ 2012-08-25 23:16 weiweishuo 阅读(497) 评论(0) 推荐(0)

保护模式下寻址

摘要: 保护模式下寻址,使用“段选择子+段偏移” 在pmtest1.asm中有句:jmp secletorCode32:0 这就是直接使用“段选择子+段偏移”寻址 还有一种: mov ax,selectorCode32 mov gs,ax mov edi,(80*11+79)*2 ... mov [gs:edi],ax 是把段选择子放在段寄存器中,使用“段寄存器:段偏移”寻址 阅读全文

posted @ 2012-08-25 19:53 weiweishuo 阅读(163) 评论(0) 推荐(0)

先熟悉nasm 【4】 ——SECTION和标签

摘要: 1,nasm下,自定义段默认按4byte对齐。 手册上说,“ 通过在段定义行的后面加上'ALIGN'限定符实现的。比如:section .data align=16 它切换到段'.data',并指定它必须对齐到 16 字节边界。” 我也在自定义段里加上align 16,发现编译生成的代码仍按照4byte对齐。很诡异。 2,再说标签。 看下面一段代码(可正常运行),它们被写到mbr,会被加载到0x7c00处----------------------------org 0hs:mov ax,sinc ax.....------------------------- 阅读全文

posted @ 2012-08-25 17:35 weiweishuo 阅读(1014) 评论(0) 推荐(0)

2012年8月19日

终于把int 8h调通了

摘要: 摘要:---------------------------------------------------------------------------------------最近一直在折腾int8h,明明已经把中断处理程序的入口地址注册到0000:0020处,显式调用int8h可以正常转移到中断处理程序,但就是不可以自动中断。后来还是在于渊前辈的书里找到答案,“说起EOI,如果你有过在实模式下的编程经验,那么对它因该不会陌生。当每一次中断处理结束,需要发送一个EOI给8259A,以便继续接受中断”。 于是我在程序中加了两行代码: mov al,20h out 20h,al 编译测试,果然 阅读全文

posted @ 2012-08-19 12:18 weiweishuo 阅读(1331) 评论(0) 推荐(0)

org是做什么的

摘要: 于渊前辈有这么一句注释:------------------------------------------------------org07c00h;告诉编译器加载到7c00h处------------------------------------------------------到了第三章,编译com文件时,要把07c00h改成0100h。如果按照之前的逻辑,就应该这样注释:-----------------------------------------------------org0100h;告诉编译器,这个com文件将来肯定被加载到0100h处------------------ 阅读全文

posted @ 2012-08-19 12:16 weiweishuo 阅读(691) 评论(0) 推荐(0)

com文件与bin文件是很相似的

摘要: 我觉得com文件只比bin文件多了个标签:org 0100h,告诉你此文件dos专用。 两者都是可执行程序的内存映象文件:所谓映像,就是说把硬盘上的bin文件或com文件加载回内存中,再设置cs:ip指向文件的第一条指令,cpu就可以顺利的跑起来。 它们仅具备程序基本的要素:指令和数据。 dos执行com文件时,会先创建一个256byte的psp内存空间(用于和com程序通信),4个段寄存器都指向psp,接着将com文件加载到cs:100h处。dos将cs:100h作为程序的入口。 bin文件我只在系统的启动引导时用到,它似乎更为底层。有篇相关的文章,文字很准确:http://blog.si. 阅读全文

posted @ 2012-08-19 12:08 weiweishuo 阅读(327) 评论(0) 推荐(0)

上一页 1 ··· 4 5 6 7 8 9 10 11 下一页

导航