摘要:
用汇编访问com对象
ernest murphy ernie@surfree.com
revised dec 26 2000 for inclusion as part of masm32
revised july 10 2000 for the new form of coinvoke.
sample code for this article ......
摘要:描述符 前面已经提到,描述符是描述一个段的大小,地址及各种状态的8个字节的结构,在编程时它可以定义它. 如图2所示,根据描述符所描述对象的不同,描述符可分为存储段描述符、系统段描述符、门描述符三种,而门描述符又可分为调用门、任务门、中断门和陷阱门四类。下面将分别介绍各描述符作用及其各位的意义: 一、存储段描述符 存储段描述符是描述程序中的代码段和数据段的,这其中也包括堆栈段,在保护模式下,应该把堆......
80386ASM程序设计基础(二) 80386处理器的寻址方式 在保护模式下,80386处理器可以使用所有的物理内存.段基址可以是32位,也可以不是16的倍数,同时它的最大长度为4g,这与8086完全不同,在形成逻辑地址时用段基址直接加上段内偏移地址,而并不将段基址左移4位(乘以16).通常情况下,除了访问堆栈外,默认的段都为ds,有跨段前缀就另当别论了.在以bp,ebp,esp作为基址寄存器时,这时默认的段寄存器应该是ss,举几个简单的例子: 【程序编程相关:
c++标准库中提供c中的div_t di】 在实式模式下,80386处理器的最大寻址空间仍然为1m,与8086/8088相似.即段地址*10h+段内偏移地址,从而形成20位地址.此种模式下,段基址是16的倍数,长度最大不超过64k. 【推荐阅读:
循环链表实验】 mov eax,fs:[esi];这里的段寄存器是fs,因为指令中使用跨段前缀显示指定了 【扩展信息:
malloc,free和new dele】 mov eax,[si];这里的段寄存器是ds mov eax,[bp];这里的段寄存器是ss,因为指令中使用了bp作为基址寄存器 mov eax,gs:[bp];这里段寄存器是gs,因为指令中使用跨段前缀显示指定了 80386中32位数的操作的顺序是“高高低低”,即是说高16-»高16,高8-»高8,低16-»低16,低8-»低8,这与8086相似.同时80386微处理器兼容所有8086的寻址方式,而且对8086的寻址方式有很大的改进与扩展.在8086下,只允许bp,bx,si,di作为寻址寄存器,但在80386下,8个通用寄存器都可以作为寻址寄存器.不过有一点要注意的是在基址变址寄存器寻址方式或相对基址变址寻址方式中,段寄存器由基址寄存器来确定,而不是由变址寄存器来确定,同时除esp外其它的7个通用寄存器都可以作为变址寄存器,用代码来表示就是: mov eax,[ebp+esp+2];这条指令是错误的,因为不可以用esp作为变址寄存器 mov eax,[ebp+esi+10h];这里的段寄存器应该有基址寄存器来决定.基址寄存器是bp,那么这里的段寄存就是ss mov eax,gs:[ebp+edi+100h];不用看了,这里的段寄存器应该是gs,因为指令通过跨段前缀显示指定了 80386支持的基地址+变址+位移量寻址进一步满足了高级语言支持的数据类型....
下一页 摘要:序!
对于学习任何编程语言的朋友来说掌握cpu的操作模式都是一件非常重要的事,其中就数保护模式这部分最重要了,现在关于保护模式的中文资料就只有杨季文先生那一家还算全面,但有些人还是觉得看不太懂,为此我就写了这篇文章,看看是否对您的胃口!
一、保护模式概述
顾名思义,就是对程序的运行加以保护。我们知道在实模式下通常只能寻址1m的内存空间,且只能是单任务,就是说同一时间不能有两个任务被激活。......