当前位置: 代码迷 >> 汇编语言 >> 汇编与C相互调用之内存有关问题,这应该是小弟我这学期汇编实验最头疼的有关问题
  详细解决方案

汇编与C相互调用之内存有关问题,这应该是小弟我这学期汇编实验最头疼的有关问题

热度:165   发布时间:2016-05-02 04:26:52.0
汇编与C相互调用之内存问题,这应该是我这学期汇编实验最头疼的问题
我在C中定义了许多全局变量,用于与汇编进行交互,为什么不用栈来传递 是由原因的

但不幸的是这些全局变量定义的地址不受我控制的,他们随意定义到内存的某个地方

在自己写的系统运行时,全局变量的改变会改变我加载到内存里面的程序,或是我加载到内存的程序会改变全局变量,这令我非常头疼,每次都是将程序挪位置,这个不行换一个位置,不行再换,毫无办法,在BOCHS下只能看到局部变量的分配,看过也是非常奇葩的方法

实模式就是这么坑,但我们老师一定要再实模式下搞操作系统,有没有过来人指点一二
------解决思路----------------------
程序(数据 代码)在内存中的地址 =  程序在文本编辑器中的偏移地址(ORG)+加载程序的方法。

------解决思路----------------------
你的汇编和 c 是不同的 exe 程序吗?如果不是,而是通过 link 组成一个 exe 程序文件的话,是不应该这样的;如果是,有些麻烦,或许可以将所涉及的变量组合在一起,然后通过一个调用进行地址传送。
  相关解决方案