【发布时间】:2011-06-02 15:51:35
【问题描述】:
我正在尝试进入汇编程序,我经常遇到以下形式的数字:
org 7c00h
; initialize the stack:
mov ax, 07c0h
mov ss, ax
mov sp, 03feh ; top of the stack.
7c00h, 07c0h, 03feh - 这个数字符号的名称是什么?他们的意思是什么?为什么要在“普通”十进制数字上使用它们?
【问题讨论】:
我正在尝试进入汇编程序,我经常遇到以下形式的数字:
org 7c00h
; initialize the stack:
mov ax, 07c0h
mov ss, ax
mov sp, 03feh ; top of the stack.
7c00h, 07c0h, 03feh - 这个数字符号的名称是什么?他们的意思是什么?为什么要在“普通”十进制数字上使用它们?
【问题讨论】:
这些是hexadecimal notation 中的数字,即以 16 为底的数字,其中 A 到 F 的数字值为 10 到 15。
一个优点是可以更直接地转换为二进制数。稍加练习,就很容易看出数字中哪些位是 1,哪些是 0。
另一个是内部使用的许多数字,例如内存地址,是十六进制的整数,即包含很多零。
【讨论】:
另外值得注意的是,0:7C00 是引导扇区加载地址。
另外值得注意的是:由于分段寻址的工作方式,07C0:03FE 与 0:7FFE 的地址相同。
这家伙给自己留下了一个 510 字节的堆栈(他在设置引导扇区的堆栈时犯了一个非常典型的 off-by-two 错误)。
【讨论】:
它是十六进制,由 0-9 和 A-F 组成的 16 位数字系统。内存地址以十六进制表示,因为它更短,更容易阅读,而且代表内存位置的数字对人类没有任何特殊意义,所以长数字没有意义。我猜在过去的某个地方,也有人不得不手动输入一些地址,还不如从那里开始。
【讨论】: