关于指令定义文档的语法疑问:Operation与ADD汇编语法解析
68000汇编指令疑问解答
1. 关于Operation: source destination -> destination的含义
这是68000指令文档里的标准操作描述格式,直白拆解:
source指源操作数,destination指目标操作数-> destination表示运算结果会直接覆盖写入目标操作数,源操作数的值全程保持不变
拿ADD指令举例,就是「源操作数的值 + 目标操作数的值 = 新的目标操作数的值」,比如执行ADD D1,D0后,D1的数值不变,D0会被更新为两者相加的结果。
2. ADD指令的操作数顺序与合法性问题
先看文档里的Assembler Syntax: ADD <ea>, Dn ADD Dn, <ea>:
<ea>是**有效地址(Effective Address)**的缩写,涵盖立即数、内存地址、寄存器间接寻址等多种寻址方式,但有个核心限制:立即数不能作为目标操作数(因为它是只读的,无法存储运算结果)- 这两行语法是说ADD支持两种合法的操作数组合:
ADD <ea>, Dn:把对应的源值加到数据寄存器Dn中,最终结果存在Dn里 ADD Dn, <ea>:把Dn的值加到对应的目标位置(比如内存、其他可写寄存器),结果存在该位置
针对你提到的两个指令:
ADD #33,D0是合法指令,属于第一种组合,功能是将立即数33加到D0,结果存入D0ADD D0,#33是非法指令,汇编器会直接报错——因为立即数#33无法作为目标操作数来存储运算结果,所以这两者不存在功能一致的说法,其中一个根本无法执行。
内容的提问来源于stack exchange,提问作者skushu
相关产品推荐
相关产品推荐

