操作指定地址的宏定义

得到指定地址上的一个字节或字

 

#define MEM_B( x ) ( *( (byte *) (x) ) ) 

#define MEM_W( x ) ( *( (word *) (x) ) )

用法如下:

#include <iostream>

#include <windows.h>

#define MEM_B(x) (*((byte*)(x)))

#define MEM_W(x) (*((WORD*)(x)))

int main()

{

     int bTest = 0x123456;

     byte m = MEM_B((&bTest));/*m=0x56*/

     int n = MEM_W((&bTest));/*n=0x3456*/

     return 0;

}

用宏定义来访问固定的地址

#define rDATA (*((volatile unsigned int *)0x********)),

这样data = rDATA; rDATA = data;就可以实现对固定内存地址的读写了

 

在指定地址上写一个值,先把该地址转化成一个指针

#define MEM_ADDR(addr) *((volatile unsigned long *) (adr));

MEM_ADDR(0x22000000)=0x02;

MEM_ADDR(0x22000000)=MEM_ADDR(0x22000000)|0x01;

MEM_ADDR(0x22000000)读出来为0x03

posted on 2015-01-12 19:21  童心醒悟  阅读(1684)  评论(0)    收藏  举报

导航