我用c语言写了一个程序,在这个程序中,我可以通过指向特定地址的指针来访问,并且操作码可以打印它。我用这种方法编写了自修改代码。我在8086中做了这个建筑学。我希望它在微控制器 PIC18F2550 上运行。我正在使用带有 Mplab C18 3.46 的 Mplab IDE 8.92。我以前从未在微控制器上这样做过。不像 8086 这里我没有访问操作码!指针是操作码的地址。但是,返回值为0X00!这是一个代码示例
#include <stdio.h>
#include <stdlib.h>
void fsub(void){
int a,b;
a=3;b=5;
a-=b;
printf("a-b=%d\n",a);
}
void fadd(void)
{
int a,b;
a=3;b=5;
a+=b;
printf("a+b=%d\n",a);
}
void retadd(void);
void main()
{
int i;
unsigned char *instSub,*instAdd;
unsigned char instructionSub[2];
void *retadd_addr=(void*)retadd;
retadd();
instSub=(unsigned char*)retadd_addr;
instAdd=(unsigned char*)retadd_addr+2;
printf("%x\n", *instSub);
printf("%x\n", *instAdd);
while(1);
}
void retadd(void)
{
fsub();
fadd();
}
![图片来自mplab]这张图片显示Values 1