谁能把以下C语言 转换成stm32里面的汇编语言? 注意是stm32里的 因为有需求简短运行时间 急需!!!!
keil的反汇编其实非常简单,只需要下面步骤:
打开 options for target
点Debug,选择 Use Simaulator
点OK
打开菜单:debug
start debug
找到这段代码光标指向它
上面的反汇编窗口,会自动显示出它的汇编语言代码。
以上对所有keil支持的芯片都合适,不仅限于stm32.
STM32有多少条汇编指令,都是什么怎么用?
1、arm都是精简指令集,所有的指令(除stm、ldm外)都是单周期指令。
2、汇编语言输出只需要1条指令,但需要输出的数据通常要先存到特殊功能寄存器中
3、c语言在编译的时候,有可能将一条语句反汇编成多条汇编指令。根据复杂不同,生成的汇编数量也不同。无法统计。
学习STM32一定要用到汇编语言吗?我只会C语言怎么办?
学stm32汇编不是必须会用的,但是如果懂汇编,会使你写的c程序有更好的执行效率。
内容拓展:
一、在嵌入式开发中C语言和汇编两种语言相比。汇编作为低级语言,是仅次于机器语言和硬件联系最紧密的语言;而C语言,严格的说也只能算是半个高级语言,相对于其他高级语言来说。
二、这两者比较直观的差异是:汇编语言的实时性非常好,但可读性差,可移植性不强;相反,C语言的可读性强,可移植性高,但实时性相对汇编比较差。
三、利用C语言编写单片机程序,不用考虑程序的初始化地址,不用考虑ACC,PSW以及工作寄存器的保护,不用考虑溢出进位CY。而汇编这些都需要考虑到。
四、当然c语言的简单与方便这是汇编不能比的,个人觉得把单片机c语言和汇编语言结合来编成是最好的。在需要很精确的地方就嵌套一个汇编的子程序,其他就用c语言。
使用stm32单片机做毕设 c语言编程 老师问我寻址方式是什么 怎么回答?
用C语言编程不关心什么寻址方式,在汇编语言中有体现,寻址方式是指寻找操作数的方法。汇编指令一般格式是
操作码,操作数1 操作数2
一般操作码和操作数1是固定搭配的,寻找第二个操作数的方法就是寻址方式。
例如 ADD A,#12H
操作码和操作数1共同组成一个8位的机器码,而操作数2的来源有很多
上例中操作数2是立即数,这种寻址方式就叫立即寻址,
ADD A,30H
30H 是直接地址,这种寻址方式就是直接寻址
此外还有寄存器寻址,寄存器间接寻址等多种方式。
对于stm32,MDK下C和汇编如何混合编程
1.最简单的方法:
public static String reverse1(String str)
{
return new StringBuffer(str).reverse().toString();
}
2.最常用的方法:
public static String reverse3(String s)
{
char[] array = s.toCharArray();
String reverse = “”; //注意这是空串,不是null
for (int i = array.length – 1; i = 0; i–)
reverse += array[i];
return reverse;
}
3.常用方法的变形:
public static String reverse2(String s)
{
int length = s.length();
String reverse = “”; //注意这是空串,不是null
for (int i = 0; i length; i++)
reverse = s.charAt(i) + reverse;//在字符串前面连接, 而非常见的后面
return reverse;
}
4.C语言中常用的方法:
public static String reverse5(String orig)
{
char[] s = orig.toCharArray();
int n = s.length – 1;
int halfLength = n / 2;
for (int i = 0; i = halfLength; i++) {
char temp = s[i];
s[i] = s[n – i];
s[n – i] = temp;
}
return new String(s); //知道 char数组和String相互转化
}