标题: 51单片机中汇编语言IF语句怎么理解?很多没有介绍 [打印本页]

作者: 沧兴电子    时间: 2022-9-21 21:22
标题: 51单片机中汇编语言IF语句怎么理解?很多没有介绍
如题 谢谢大家

作者: zhxiufan    时间: 2022-9-22 08:35
亲,51单片机汇编语言中是没有IF语句的。
作者: yzwzfyz    时间: 2022-9-22 08:54
请先阅读完51的指令系统,读完自然就会了。
作者: angmall    时间: 2022-9-22 09:12
请先阅读完51的指令系统,特别是程序分支指令。
JNZ JZ CJNE DJNZ
跳转指令。
JB JNB JC JNC JBC

作者: 沧兴电子    时间: 2022-9-22 12:32
汇编预处理指令,我认为是给编译器看的,如果条件满足就编译
作者: 沧兴电子    时间: 2022-9-22 12:33
zhxiufan 发表于 2022-9-22 08:35
亲,51单片机汇编语言中是没有IF语句的。

碰到过,3000多行代码,出现多次
作者: angmall    时间: 2022-9-22 13:15
沧兴电子 发表于 2022-9-22 12:32
汇编预处理指令,我认为是给编译器看的,如果条件满足就编译

不要将 IF 指令与 IF 语句混淆。 它们不是等效的,并且不能与相同的符号一起使用。

IF 指令开始一个用于条件程序汇编的 IF-ELSE-ENDIF 结构。 对指定的表达式求值,如果值为非零 (TRUE),则汇编 IF 块内的代码。 如果表达式为零 (FALSE),则不组装 IF 块,并评估构造的后续块。

IF 块由 ELSEIF、ELSE 或 ENDIF 指令终止。

IF-ELSE-ENDIF 块最多可以嵌套 10 层。

  1. $IF (SWITCH = 1)
  2. .
  3. .
  4. .
  5. $ELSEIF (SWITCH = 2)
  6. .
  7. .
  8. .
  9. $ELSE
  10. .
  11. .
  12. .
  13. $ENDIF
复制代码



作者: angmall    时间: 2022-9-22 13:18
沧兴电子 发表于 2022-9-22 12:33
碰到过,3000多行代码,出现多次

Ax51 汇编器提供了许多可用于控制源文件汇编的指令。 指令由一个或多个字母或数字组成,除非另有说明,否则可以在命令行上的文件名之后或在源文件中以美元符号 ('$') 开头时指定。 例如:

  1. A51 SAMPLE.A51 SYMBOLS DEBUG
  2. or

  3. $SYMBOLS DEBUG
  4. or

  5. $SYMBOLS
  6. $DEBUG
复制代码

作者: coody_sz    时间: 2022-9-22 14:27
楼主你问问题最好贴一句例子。
汇编IF一般是用于条件编译,跟C语言的#if一个意思,而51的111条指令是没有IF的,判断指令是JNB、JBC、JZ、JNZ、CJNE等等。
作者: 沧兴电子    时间: 2022-9-22 21:58
感谢各位答复
作者: 188610329    时间: 2022-9-23 12:20
沧兴电子 发表于 2022-9-22 12:32
汇编预处理指令,我认为是给编译器看的,如果条件满足就编译

对的,就是这个意思。
所以,不是汇编语言, 是 编译标记。
分  if  和  $if  两种,一个是 文件层面的,一个是编译器层面的,
相对应的  也分, else   和  $else,  两者互不干涉,要分清。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1