因此,一位也在尝试学习和理解该语言的朋友问了我一个汇编问题。他问:
给定以下寄存器值:
D0: 364B 421E
D1: F3FC 9066
执行指令后:
cmp.w D0,D1
CCR 中的结果值是多少:
N: Z: V: C:
以及以下每个分支是否会发生:
BLO <Label> Yes or No?
BVC <Label> Yes or No?
BGE <Label> Yes or No?
BMI <Label> Yes or No?
BLT <Label> Yes or No?
BCS <Label> Yes or No?
有人可以帮助我理解它,这样当我向他解释时,我可以加深对概念和答案的理解。谢谢。
它可能有助于将这些概念映射到现代术语。 C 标志对应于无符号算术,N 和 V 标志对应于有符号算术。 Z 标志对两者都有效。
分支指令的完整说明如表 3-19 所示。M68000 程序员参考手册 http://www.freescale.com/files/archives/doc/ref_manual/M68000PRM.pdf。请注意,表中存在一些拼写错误。
对于无符号算术,请使用以下分支:
> BHI
<= BLS
>= BCC/BHS
< BCS/BLO
对于有符号算术,请使用以下分支:
>= BGE
< BLT
> BGT
<= BLE
这些对两者都适用:
== BEQ
!= BNE
最后是 BVS/BVC 对。当发生溢出时,V 标志被设置,这意味着结果的符号位不遵循输入的符号位。例如,从正数中减去负数应该总是得到正数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)