If statement 有人知道如何在汇编中为Atmega328p执行if语句吗?

If statement 有人知道如何在汇编中为Atmega328p执行if语句吗?,if-statement,assembly,If Statement,Assembly,我需要你的帮助,我不知道如何在汇编中编写if语句,对于ATmega328p,请帮助我 好的,这个处理器有所谓的条件代码。某些指令设置它们,其他指令读取它们。条件分支是通过使用加法、减法或比较指令来设置条件代码,然后是一条条件分支指令来测试所需的条件。我们使用条件分支来完成if-then语句的控制流 基本思想是,如果C条件为false,我们希望处理器跳过then部分 常规C代码: if ( i < 10 ) { printf ("i < 10!"); /

我需要你的帮助,我不知道如何在汇编中编写if语句,对于ATmega328p,请帮助我

好的,这个处理器有所谓的条件代码。某些指令设置它们,其他指令读取它们。条件分支是通过使用加法、减法或比较指令来设置条件代码,然后是一条条件分支指令来测试所需的条件。我们使用条件分支来完成if-then语句的控制流

基本思想是,如果C条件为false,我们希望处理器跳过then部分

常规C代码:

if ( i < 10 ) {
    printf ("i < 10!");   // then part "fires" when i < 10 is true
}
使用条件分支(以及偶尔的无条件分支),我们可以创建while、for和repeat循环、if-then语句和if-then-else——结构化编程的所有控制结构


一旦你知道了这一点,你将能够更好地阅读汇编。你可以访问godbolt.org,那里有编译器可供实验。所以,你可以给编译器一个C语言的小函数,看看它为你提供的语句和表达式生成了什么样的代码。他们有一个Arduino Mega编译器,但我不知道它是否与你的芯片兼容,尽管它可能会让您更好地了解如何使用特定的if语句。

当您反汇编一些已编译的C代码时,您看到了什么?或者,当您阅读学习asm之前必须拥有的指令集文档时?它与任何其他汇编语言相同:如果if条件为false,则使用条件分支跳过then部分。否,它不是用c代码编译的,我只是阅读了说明书集,它没有说明我在asm之前需要学习什么。这是我的数据表的链接,所以你也许可以理解我需要什么。非常感谢,我非常感谢你的回答。我在学习汇编语言时遇到了很多问题,所以我真的不知道如何用汇编语言来做。我不知道你是否有任何例子可以给我看,谢谢!谢谢你的回答!但我有一个问题,在汇编代码中,bee和past是什么?谢谢你
    if ( i >= 10 ) goto pastThen;   # this is a conditional branch that skips the then part 
                                    # when i < 10 is false
                                    #  ! (i<10) or "(i<10) is false" is the same as  i>=10
    printf ("i < 10!");
pastThen:
    load r0,i
    compare r0,#10
    bge pastThen
    ... # code to call printf ("i < 10!");
pastThen: