首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解68000汇编的"S[cc]“指令

理解68000汇编的"S[cc]“指令
EN

Stack Overflow用户
提问于 2014-07-30 18:56:10
回答 4查看 1.1K关注 0票数 1

我正在尝试理解68000汇编中的"Scc“指令集。

指令的格式如下:

代码语言:javascript
复制
S[cc] reg

[cc]是一个条件码(例如SEQ的意思是"set if equals")。如果[cc]指定的条件为真,则将寄存器设置为全1。否则,将寄存器设置为全0

有一件事我不明白:S[cc]操作在哪里检查条件是否为真?它会检查旗帜吗?

如果是这样,那么如果我希望寄存器D0保存表达式D0 = D1的结果,这就是我需要做的:

代码语言:javascript
复制
CMP D0,D1 ; this sets the flags according to the result
SEQ D0 ; sets D0 to true if the flags indicate the condition is true. else, sets it to false.

这是正确的吗?或者我没有正确理解这个操作?

EN

回答 4

Stack Overflow用户

发布于 2014-07-30 19:05:11

是的,它检查标志,这应该在查看助记符时变得明显:

代码语言:javascript
复制
SCC set on carry clear (!C)
SCS set on carry set (C)
SEQ set on equal (Z)
SGE set on greater than or equal (N.V + !N.!V)
SGT set on greater than (N.V.!Z + !N.!V.!Z)
SHI set on higher than (!C.!Z)
SLE set on less than or equal (Z + N.!V + !N.V)
SLS set on lower than or same (C + Z)
SLT set on less than (N.!V + !N.V)
SMI set on minus (i.e., negative) (N)
SNE set on not equal (!Z)
SPL set on plus (i.e., positive) (!N)
SVC set on overflow clear (!V)
SVS set on overflow set (V)
SF  set on false (i.e., set never) (0)
ST  set on true (i.e., set always) (1)

摘自http://de.scribd.com/doc/418461/Easy-Motorola-68k-Reference第51页。我不知道68k ASM的第一件事。;-)

票数 5
EN

Stack Overflow用户

发布于 2014-07-30 19:06:00

看看摩托罗拉的68K Programmer's Reference Manual (1992年)

3-23给出了答案:条件码检查状态寄存器中的位。状态寄存器不仅通过比较操作来设置。有关它们如何影响状态寄存器的详细信息,请参阅其他助记符。

票数 1
EN

Stack Overflow用户

发布于 2015-08-15 05:13:58

我还想指出,s[cc]只影响最低有效字节(例如,如果使用st d0d0将为$xxxxxxFFxx意味着这将是寄存器上的任何内容)。此外,在条件为真的情况下,字节将被设置为$FF而不是1。在错误的情况下,它将被清除。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25035030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档