2010-10-18 103 views
1

我正在读这本书汇编语言的艺术。我遇到了这两条线。关于汇编语言的问题

the three byte encoding for mov ax, [1000] would be 0C6h, 00h, 
10h and the three byte encoding for mov ax, [2000] would be 0C6h, 00h, 20h. 

谁能告诉我MOV AX,[1000]如何转换为oc6h,哦,10H和MOV AX,[2000]转化为0C6h,00H,20H。任何人都可以告诉我计算结果吗?提前致谢。

编辑:我是一个汇编程序设计的入门者,请随意说明。

回答

4

我假设你的困惑在于1000被编码为10h的事实。

ax是32位eax寄存器的低16位的别名。所以mov ax,1000知道这是一个16位操作。 1000在内存中编码为00 10,因为它使用little-endianness编码,这基本上意味着最重要的字节是物理顺序的最后一个。

+0

感谢哥们。这是我想要的。再次感谢。 – narayanpatra 2010-10-18 17:05:54

5

只是猜测,但在我看来像:

0C6h - This is the opcode for "mov ax," 
00h 10h - This is the address 1000h, Little Endian 
00h 20h - This is the address 2000h, Little Endian 
+0

感谢马克 - 不能相信我居然类型化:) – 2010-10-18 17:03:20

+0

啧,这应该是小美洲原住民。 – ninjalj 2010-10-18 19:53:11

3

00H是存储器地址

20H的LoByte是内存地址

OC6h的HIBYTE是操作码指令mov, ax