BEQ指令的确切作用是什么?

12

我有以下汇编代码片段,我正在尝试理解它。它是用于MC68332微控制器的汇编语言。

LOOP
    some instructions
    some more instructions
BEQ LOOP

我在谷歌上搜索了BEQ,发现它意味着结果为零时跳转,但我仍然不太明白它的作用。它是将上一条指令的结果与0进行比较,如果为0,则返回到LOOP行吗?


你能告诉我你指的是哪个微控制器吗? - Sedat Kapanoglu
微控制器是MC68332,谢谢。 - jazzybazz
已添加答案,希望能有所帮助。 - Sedat Kapanoglu
2个回答

10

在Motorola 68k系列中,“BEQ”代表“等于时跳转(branch if equal)”,即如果零标志位被设置,例如前面的比较成功,则跳转到给定地址。

然而,68332似乎有所不同。基于大写语法,它可能是另一条实际上执行相同操作的指令周围的一个宏指令。

将代码从其他系统移植的汇编程序员可以利用类似的宏指令来简化移植过程。


1
谢谢,这正是它所做的,我想。BEQ之前的最后一条指令是SUB D2,D2,它总是设置零标志。因此,这是一个无限循环。对吗? - jazzybazz
@jazzybazz 是的,抱歉回复晚了 :) - Sedat Kapanoglu

2

确切的答案取决于您使用的微控制器。一般来说,如果没有操作数,BEQ指令应该在累加器为0时分支。这在简单的微控制器上最有可能发生,因为累加器是计算的主要寄存器。

您使用的是哪种微控制器?您应该能够在该微控制器的手册中找到BEQ指令的定义。


MC68332。用户手册中没有关于BEQ命令的内容。 - jazzybazz
“to branch”这个动词是什么意思? - jazzybazz
Freescale的网站上有一份数据表,您可以在此处找到链接:http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MC68332。分支意味着跳转到程序中的特定点,这种情况下是“LOOP”标签。该代码的功能是循环直到累加器保存值“0”。 - Stefan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接