将指针的内存地址存储为整数

时间:2013-02-11 17:03:58

标签: c++ pointers visual-c++ assembly inline-assembly

好的人,我正在尝试使用一些内联汇编来编写outportb函数。但是,VS2010中的(内联)程序集不会接受char变量作为操作数。我想要做的是创建一个指向char输入的指针,然后将输入字符的内存地址作为整数传递,然后将数据从该地址复制到目标地址。如果我创建一个char指针并传递输入char变量的地址,如何将数据的内存地址提取为一个短整数以将其作为asm操作数传递?

1 个答案:

答案 0 :(得分:0)

由于unsigned char数据类型使用ASCII代码,因此处理器无法将其与无符号8位整数区分开来。所以我想出来的方法是创建一个char指针并将输入参数的内存地址传递给指针,然后将char指针MOV转换为16位寄存器,然后可以将MOVd直接MOVd存入内存。内联汇编代码实际上绕过了Windows内存管理;这就是它的美丽。 ; - )