8088 内存组织与使用详解
1. 地址与变量
在 8088 的内存分段组织中,每个可能的寄存器模式都代表内存中的一个字节位置。对于更大的数据模式,如 16 位字、32 位双字或 80 位的 tbyte(包含 10 个字节,用于存储 FPU 值),可以占用两个或更多相邻的字节位置。只要计算机能确定使用的字节数,访问不同大小的内存就相对简单。
然而,计算机并非总能获取这些信息。例如, ADD [BX], 1
这条指令,由于 BX 存储的是一个位置,无法轻易判断目标是 16 位还是 8 位的量,这条语句可能会被解释或汇编成三种不同的机器指令。
为了解决这个问题,有两种方法:
- 指定类型 :通过重写指令来明确含义,如 ADD WORD PTR [4000h], 1
,这里使用 WORD PTR
表示将 [4000h]
解释为一个 16 位字的地址。类似地, BYTE PTR
表示 8 位, DWORD PTR
表示 32 位。
- 预先声明 :提前告知汇编器要使用的特定内存位置和预期的大小。这类似于在高级语言(如 Java、C++ 或 Pascal)中声明变量。例如:
example1 WORD 1000 ; 1000
example2 DW 2000h ; 2000h == 0x2000