汇编语言指令中的地址和指令中的地址码的区别

如题,分别解释指令中的地址和指令中的地址码,以及区别。2009年6月25号中午12点此题目过期,有最佳答案变采纳。
答非所问。

一、单字节指令,只有操作码,没有地址码,或者说,地址码是含在操作码之中。如,

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的不同。至于操作码与地址码是怎样定义的,它们又是以怎样的规律组合的,只有指令系统设计者知道了。到目前为止,我尚未见过这方面的资料。

由于知识的局限性,我也只能介绍这些了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-06-25
指令中的地址:指令中的地址有目的地址和源地址之分,是包含在指令码中的,总之都是参与本指令运算的操作数所存放单元的地址,根据寻址方式的不同,地址的形式也不同。
指令中的地址码:此说法不准确,应该是“指令的地址码”,如是,则理解为“本条指令的指令代码在ROM中存储的第一个单元的地址编码”
第2个回答  2009-06-25
地址分为物理地址和逻辑地址,逻辑地址由段地址和偏移地址组成 一个段地址对应一个偏移地址,物理地址就是有逻辑地址而求到的,物理地址=段地址*4+偏移地址(段地址乘以4就代表在段地址尾端加个0在加上偏移地址就是物理地址了)

地址码通常指定参与操作的操作数的地址。根据一条指令中有操作数地址数X,可将该指令称为X操作数指令或X地址指令。

参考资料:今年学习的汇编

本回答被提问者采纳
第3个回答  2009-06-25
指令中的地址,就是和指令中的立即数类似的东西,写在指令里面一个数。
指令中的地址码不知道什么概念,Intel的参考手册上就没有定义!
最接近的是Codes for Addressing Method
参考:
Intel,Software Developer's Manual Volume 2
我简要的说一下,有好几页纸。

指令可能包括几个部分,一般有
Opcode ,操作字(必须)
寻址方式字,说明操做数是内存/寄存器/立即数
编码,根据寻址方式字不同,可能是寄存器编码/内存地址编码/立即数编码

附录B有机器码编码格式,其中
地址受到ModRM的影响(尤其是段跨越之类)。所以完整的地址不仅仅包括一个立即数,还要包括段地址。是否这个是你说的地址码呢?总之地址码的概念很局限,不知道从哪里来。

唯一的有地址码的解释:
http://baike.baidu.com/view/178200.htm
按照里面的解释,寄存器/立即数/内存/寻址方式都是地址码的一部分
第4个回答  2009-06-25
地址和地址码? 是叫发不同吧 。都是指地址
相似回答