我有以下汇编代码片段,我正在尝试理解它。它是用于MC68332微控制器的汇编语言。
LOOP
some instructions
some more instructions
BEQ LOOP
我在谷歌上搜索了BEQ,发现它意味着结果为零时跳转,但我仍然不太明白它的作用。它是将上一条指令的结果与0进行比较,如果为0,则返回到LOOP行吗?
我有以下汇编代码片段,我正在尝试理解它。它是用于MC68332微控制器的汇编语言。
LOOP
some instructions
some more instructions
BEQ LOOP
我在谷歌上搜索了BEQ,发现它意味着结果为零时跳转,但我仍然不太明白它的作用。它是将上一条指令的结果与0进行比较,如果为0,则返回到LOOP行吗?
在Motorola 68k系列中,“BEQ”代表“等于时跳转(branch if equal)”,即如果零标志位被设置,例如前面的比较成功,则跳转到给定地址。
然而,68332似乎有所不同。基于大写语法,它可能是另一条实际上执行相同操作的指令周围的一个宏指令。
将代码从其他系统移植的汇编程序员可以利用类似的宏指令来简化移植过程。
确切的答案取决于您使用的微控制器。一般来说,如果没有操作数,BEQ指令应该在累加器为0时分支。这在简单的微控制器上最有可能发生,因为累加器是计算的主要寄存器。
您使用的是哪种微控制器?您应该能够在该微控制器的手册中找到BEQ指令的定义。