mov r5,a
mov a,r6
rrc a
mov r6,a
mov a,r7
rrc a
mov r7,a
#pragma endasm
return(x);
}
//end of asm.c
x=x*2;
x 为 4 位长整型。
r4567 是放 x 的
在 C51 中插入汇编问题!请教各位:
1、我想在 C51 的程序中插入汇编程序,然后用 KEIL 编译。使用的格式是
asm(" ljmp 8000h ");。但在用 keil 编译是提示有错。是否要 include
什么头文件。
2、在 C51 的源程序中能否进行绝对地址的调用与跳转。如;LCALL 8000H
LJMP 8000H。
1。混合编程我也想学哦,不过我用 WAVE 试过几次都不行,现在听说 WAVE 有指令能用了,不过我没试过哦!
2。好象没有哦,不如没必要有呀,因为有都没用!
KEILC51 中是不能直接嵌入汇编,C196 就可以。
{f2)我使用的是 wave,可以先用 c51 编个子程序接口(定好接口变量),再在 a51 下用汇编编子程序。最后用 L51 把这两部分联结起来(注意用参数,避免
程序重叠)。我没用过什么特殊的头文件,至于是否可以用长跳转语句不是很清楚。
绝对地址跳转应该不能用。
楼上的说的对,keilc51 中要想嵌入汇编,必须单独写一汇编的程序文件,然后和 c51 的程序文件连接编译。其中还牵扯一些问题,参数、程序名等,去老古
那里看看吧
KEILC51 中是可以直接嵌入汇编,方法为#Pragma asm
汇编行 #pragma ,注意在写汇编之后要
记得加 END 这样子就 OK 了。( 这样我试过了,编译时时需要勾选 SRC 项,不过软仿真执行时遇到莫名其妙的问题。如整个程序不从 MAIN 处执行等,不知
怎么回事?)