操作指定地址的宏定义
得到指定地址上的一个字节或字
#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
浙公网安备 33010602011771号