一、单字节指令,只有操作码,没有地址码,或者说,地址码是含在操作码之中。如,
1、CLD、STI等对状态寄存器操作的指令,地址就是状态寄存器,是隐含的。
2、LODSB、LODSW、LODSD等字符串操作指令,指令中没有地址码,其操作数地址隐含在DS:SI、AL、AX、EAX中;而STOSB、STOSW、STOSD等字符串操作指令,操作数地址隐含在ES:DI、AL、AX、EAX中;而数据块传送指令REP MOVS,操作数地址隐含在DS:SIES:DI中。
二、多字节指令,操作码与地址码是组合在一起的。若有立即数,立即数直接写在指令码之后。同样的操作,其指令码与寻址方式有关。凡涉及寄存器的,每个寄存器都有其固定的地址码。参见下图:
同样的数据传送指令MOV,不同的操作数有不同的地址码。如,
MOV AX,6789
指令代码是:B8。而,
MOV BX,6789
其指令代码却是:BB。
B8与BB的区别就在于源操作数AX、BX的不同。至于操作码与地址码是怎样定义的,它们又是以怎样的规律组合的,只有指令系统设计者知道了。到目前为止,我尚未见过这方面的资料。
由于知识的局限性,我也只能介绍这些了。
参考资料:今年学习的汇编
本回答被提问者采纳