11

嘿嘿,

我在大学的班级让我们编写汇编程序。直到现在,我才真正体会到 C 语言的易用性。

现在,当我在汇编中编程时,我经常不得不使用标签制作 while/for/if 循环和条件,例如:

SKIP:
    ...
COMP:ADD R1, R1, #0 ;Check for equality
     BRZ WHILEEND
     ...            ;code inside the while loop
     JMP COMP       ;Return to while loop
WHILEEND:
     ...

因此,在这个 while 循环(示例)中,我为子例程使用了 1 个标签,为循环本身使用了另外 2 个标签。对于我在汇编中所做的所有循环和分支,我已经用完了好的标签名称,你们如何保持它的多样性和描述性?

4

2 回答 2

14

大多数汇编器允许本地标签:

routine_1:
  ...
.loop:
  ...
  jne .loop

routine_2:
  ...
.loop:
  ...
  jne .loop
  ...
  jmp routine_1.loop

匿名标签,您可以在其中重复使用相同的标签名称并引用“最近的向后”或“最近的向前”:

routine_1:
  ...
@@:
  ...
  jne @b

routine_2:
  ...
@@:
  ...
  jne @b

b向后)

如果您的汇编程序都不支持,我想您可以在所有本地标签前面加上相关例程的标签:

routine_1:
  ...
routine_1.loop:
  ...
  jne routine_1.loop
于 2010-03-09T01:57:11.047 回答
3

在许多汇编器中,您可以使用相同(通常是数字)名称制作多个标签。该功能允许您为循环重复使用标签,用于jmp 1f向前跳转到最近的标签1jmp 1b向后跳转到最近的标签1

于 2010-03-09T01:51:22.153 回答