我确实在手册中找到了一个从CCR指令中移开的地方.manual/M68000PRM.pdf
但我一直收到一个“无效寻址模式”错误。我尝试过不同的语法形式,无论如何,我只想存储进位,而不是整个CCR。这些都是我尝试过的语法,但没有结果。它非常明确地表示大小必须是单词。
MOVE.W CCR,D6
MOVE.W CCR,CARRY
MOVE CCR,D6
MOVE CCR,CARRY
MOVE.B CCR,D6
MOVE.B CCR,CARRY什么都没有。我做错了什么?是否有更好的方法来专门存储执行位(C)?
发布于 2014-06-04 14:05:52
您不应该直接访问SR/CCR来获取单个标志的状态。
68K家族有非常方便的S(cc)指令(在条件下设置),它为(cc)接受条件谓词,并生成一个反映条件的字节。示例:
SEQ D0如果清除零标志,则D0.b变为0x00,否则为0xFF。所有条件谓词都对此指令有效,这包括基于进位的测试(SCS,SCC)。
CCR的问题在于它首先不允许在MC68000上使用(它根本不存在,它是MC68010引入的一个扩展)。我不确定从CCR执行移动是否触发了IllegalInstruction,或者它是否以静默方式从SR转换为从SR (它们的编码几乎相同,只移动SR是字大小的,移动CCR是字节大小的)。
您也不应该使用MOVE,这将在x> 0的所有MC680x0上崩溃,因为指令仅是这些处理器上的监控器(特权)。
由于家庭内部的这些差异,访问SR需要非常小心。
https://stackoverflow.com/questions/23880257
复制相似问题