因为需要写16位的汇编代码,as产生的是32位的,没办法只能用二进制直接写,但是对应指令不知道,于是写了这么个变态的调用程序
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
char code[50]=".globl _start\n_start:\n\t";
short test=strlen(code);
FILE *fd;
if(NULL==(fd=fopen("ant.s","wt")))
{
printf("Error!\n");
exit(1);
}
printf("汇编代码:");
fgets(&code[test],50,stdin);
fputs(code,fd);
fclose(fd);
system("as ant.s -o ant.o&&ld ant.o -o ant. --oformat binary");
if(NULL==(fd=fopen("ant","rb")))
{
printf("Error!\n");
exit(1);
}
printf("机器代码:");
while(!feof(fd))
{
fread(&test,1,1,fd);
printf("%02X ",test);
}
putchar('\n');
fclose(fd);
system("rm ant.*");
return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
char code[50]=".globl _start\n_start:\n\t";
short test=strlen(code);
FILE *fd;
if(NULL==(fd=fopen("ant.s","wt")))
{
printf("Error!\n");
exit(1);
}
printf("汇编代码:");
fgets(&code[test],50,stdin);
fputs(code,fd);
fclose(fd);
system("as ant.s -o ant.o&&ld ant.o -o ant. --oformat binary");
if(NULL==(fd=fopen("ant","rb")))
{
printf("Error!\n");
exit(1);
}
printf("机器代码:");
while(!feof(fd))
{
fread(&test,1,1,fd);
printf("%02X ",test);
}
putchar('\n');
fclose(fd);
system("rm ant.*");
return 0;
}