理解68000装配的"S [cc]"指令

Avi*_*ohn 1 assembly 68000

我试图理解68000汇编中的"S [cc]"指令集.

指令的格式如下:

S[cc] reg
Run Code Online (Sandbox Code Playgroud)

[cc]是条件代码(例如,SEQ表示"如果等于设置").如果指定的条件[cc]为真,则寄存器设置为全部1s.否则,寄存器设置为全部0s.

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

如果是这样,那么如果我想要注册D0来保存表达式的结果,那么D0 = D1这就是我需要做的:

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.
Run Code Online (Sandbox Code Playgroud)

它是否正确?或者我不能正确理解这个操作?

Dev*_*lar 5

是的,它会检查标志,在查看助记符时应该会显而易见:

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)
Run Code Online (Sandbox Code Playgroud)

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

  • 您可能会说:当相应的B [cc]指令执行跳转时,S [cc]将目标字节设置为0xFF.如果B [cc]指令不执行跳转,它会将字节设置为0x00. (3认同)