汇编程序内存地址表示

时间:2011-01-03 01:15:43

标签: hex assembly

我正在尝试进入汇编程序,我经常会遇到以下形式的数字:

org 7c00h

; initialize the stack:
mov     ax, 07c0h
mov     ss, ax
mov     sp, 03feh ; top of the stack.

7c00h,07c0h,03feh - 这个数字符号的名称是什么?他们的意思是什么?为什么他们使用“正常”十进制数?

3 个答案:

答案 0 :(得分:1)

它是十六进制的,数字系统有16位0-9和A-F。内存地址以十六进制给出,因为它更短,更容易阅读,而代表内存位置的数字对人类来说并不意味着任何特殊的东西,所以没有长数字的意义。我猜想在过去的某个地方,有人不得不手工输入一些地址,也可能已经开始了。

答案 1 :(得分:1)

值得注意的是,0:7C00是引导扇区加载地址。

进一步值得注意:由于分段寻址的工作方式,07C0:03FE与0:7FFE的地址相同。

这家伙给自己留下了一个510字节的堆栈(他在设置引导扇区的堆栈时犯了非常典型的2分之一错误。)

答案 2 :(得分:1)

这些是hexadecimal notation中的数字,即基数为16,其中A到F的数字值为10到15.

一个优点是可以更直接地转换为二进制数。通过一些练习,很容易看出数字中的哪些位是1,哪些是0。

另一个原因是内部使用的许多数字,例如内存地址,都是十六进制的圆数,即包含很多零。