发布网友 发布时间:2022-03-31 03:09
共2个回答
热心网友 时间:2022-03-31 04:38
MOV就是操作码
一条指令的第一个字节就是操作码
你不需要管操作码。。那是单片机内部约定好了的是可以查到的
操作码是8位的低三位代表8个寄存器如果是R1那就是001,第5位是1所以用16进制表示低四位就是9
热心网友 时间:2022-03-31 05:56
那是OpCode
其实这些是由编译软件生成给51的.
最终会出现在编译软件所生成的hex档里,最后写入51
由於是由软件生成的,所以不用理会也可以了
而手上没资料的话看不懂很正常
对51来说E9就是MOV A ,R1这句asm指令了
给些资料你参考吧~
http://www.atmel.com/dyn/resources/prod_documents/doc0509.pdf
你要的资料在:<Instruction Set Summary>那部份
也就是第2~第3页部分
x轴是OpCode高8位
y轴是OpCode低8位
例如:
MOV dir, @R1这句的OpCode就是:87
资料在(MOV dir, @R1)下写的[2B, 2C]
应该就是指该指令会占用rom 2个byte长度,以及运行指令需要2个机械周期吧~
也就是说如果上面的指令改成:(MOV 01H, @R1)的话,
最后hex档出来的机械码会是:87 01 (这样就2个byte了...01就是上面指令dir部分的地址)
但acall跟ajmp比较特殊,没有特定的Opcode"
上面的pdf有很多其他关於指令方面的解析,你可以慢慢参考下~