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)

DOS下COM文件和EXE文件的比较

摘要: 【来源】http://www.cnsharenet.com/DOS/f/dft/dexecom.htmCOM文件是一种可执行程序的内存映象文件,它与只有16位地址线的8位机上的CP/M操作系统下的可执行程序结构相似。在COM程序执行过程中,除了调用DOS功能和 ROM BIOS功能,以及用户特意安排外,段寄存器一般不发生变化。四个段寄存器具有同样的内容,都指向PSP,因此程序的大小仍限于64k以内。COM文件的入口必须是100H,而EXE文件可以有多个段。其中CS和SS以及IP和SP在程序装入时由DOS根据文件头中的信息初始化,ES和DS则指向PSP。EXE文件除了程序本身外,还要包括文件头( 阅读全文

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

关于tink的碰撞检测类【2】

摘要: 分析算法的思路:Step1:假设stage(黑色)上有4个显示对象red_mc,green_mc,blue_mc,yellow_mc,层级关系是stage>root>red_mc,stage>root>yellow_mc>blue_mc>green_mc。要检测碰撞的对象是red_mc和green_mc。如图图1补充约定:为方便表述,这里约定显示对象的“初始状态”为相对父级容器坐标系未进行旋转,缩放,即对象的transform.matrix对象是[a=1,b=0,c=0,d=1]。Step2:一开始,图1中的4个mc都处于初始状态。但这样的碰撞检测不考验算法 阅读全文

posted @ 2012-08-19 11:50 weiweishuo 阅读(462) 评论(0) 推荐(0)

先熟悉nasm 【3】

摘要: nasm下,向内存写数据可以这样: mov byte [0200h],64h 上面代码是可以通过编译的,反汇编得到:mov byte ptr ds:0x200, 0x64 我记得在masm下,偏移寻址是必须要用寄存器。 我试着写“mov byte [0x0000:0x0200],64h”,nasm就报错了,看来段寄存器还是少不了的。不过可以用立即数寻址,已经很满足了! 2012,8,19 吉首 阅读全文

posted @ 2012-08-19 01:35 weiweishuo 阅读(215) 评论(0) 推荐(0)

导航