注意:本文经过原作者授权转译,转载请标明出处
原文地址:http://mrjester.hapisan.com/04_MC68/Sect07Part01/Index.html
条件允许建议阅读原文,网上非中文资料还是较多,当作锻炼英文岂不美哉
翻译若有不足之处欢迎批评指正
译文:
"自尊是人类最大的弱点,因为它是有条件的" ---- 阿尔伯特 艾利斯 (Albert Ellis, 1913-2007),美国临床心理学家
简介
这些S**指令和那些有条件分支指令差不多,它们都根据类似的条件来执行动作。不同之处在于,它们不会去分支跳转,而是会把目的操作数中的位都设置成1或是擦除成0
SEQ 指令
SEQ (Set on EQual) - 相等时置1
Z (零结果) 状态标志会被检测,如果是1的话,目的操作数会被置为1 (%11111111),如果Z是0的话,目的操作数会被置0 (%00000000)
例子
这是个简单的例子:
tst.l d0
seq.b d1
TST指令会去检查d0的内容是不是0,检查的长度是长字
- 如果
d0的内容是00000000,那么Z会被设置为1,于是SEQ指令就会把d1的内容设置为000000FF - 如果
d0的内容不是00000000,那么Z会被设置为0,于是SEQ指令就会把d1的内容设置为00000000
真是再简单不过了
SNE 指令
SNE (Set on Not Equal) - 不相等时置1
Z (零结果) 状态标志会被检测,如果是1的话,目的操作数会被置为0 (%00000000),如果Z是0的话,目的操作数会被置1 (%11111111)
例子
tst.l d0
sne.b d1
TST指令会去检查d0的内容是不是0,检查的长度是长字
- 如果
d0的内容是00000000,那么Z会被设置为1,于是SNE指令就会把d1的内容设置为00000000 - 如果
d0的内容不是00000000,那么Z会被设置为0,于是SNE指令就会把d1的内容设置为000000FF
跟SEQ差不多是反过来的
SPL 指令
SPL (Set on PLus) - 非负结果时置1
N (负结果) 状态标志会被检测,如果是1的话,目的操作数会被置为0 (%00000000),如果N是0的话,目的操作数会被置1 (%11111111)
例子
tst.b d0
spl.b d1
TST指令会去检查d0的内容是正还是负,检查的长度是字节
- 如果
d0的内容是在00和7F(正数) 之间,那么N会被设置为0,于是SPL指令就会把d1的内容设置为000000FF - 如果
d0的内容是在80和FF(负数) 之间,那么N会被设置为1,于是SPL指令就会把d1的内容设置为00000000
SMI 指令
SMI (Set on MInus) - 负结果时置1
N (负结果) 状态标志会被检测,如果是1的话,目的操作数会被置为1 (%11111111),如果N是0的话,目的操作数会被置0 (%00000000)
例子
tst.b d0
smi.b d1
TST指令会去检查d0的内容是正还是负,检查的长度是字节
- 如果
d0的内容是在00和7F(正数) 之间,那么N会被设置为0,于是SMI指令就会把d1的内容设置为00000000 - 如果
d0的内容是在80和FF(负数) 之间,那么N会被设置为1,于是SMI指令就会把d1的内容设置为000000FF
它和SPL也是反过来的
目录
上一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 陆 - 条件分支 | 8. 家庭作业答案 - 5
下一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 柒 - 条件指令及其他 | 2. SVC, SVS, ST & SF 指令