[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 柒 - 条件指令及其他 | 1. SEQ, SNE, SPL & SMI 指令
注意:本文经过原作者授权转译,转载请标明出处
原文地址: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 指令