如何将数据作为字节加载到所需的内存字段?

How the datas are loaded to wanted memory fields as byte?

我们可以在 emu8086 中编写 ASSIGN DB 10, 20, 30, 40, 50 命令,但它会将这些字节加载到随机内存字段。

如何将这些字节加载到我想要的内存字段?例如,我想定义从 A40EH 开始的这些字节。

内存地址包含两部分:段和偏移量。段由操作系统分配,偏移量由数据本身决定。程序员可以控制偏移量。在您的情况下,如果您想要特定位置的一些数据,您可以用大量字节填充数据段,直到获得所需的位置,例如:

.model large
.stack 100h
.data
            ▼
filler db 0A40Eh dup(?)               ;◄■■ BYTES 0 TO 0A40DH.
ASSIGN DB 10, 20, 30, 40, 50, 'END$'  ;◄■■ BYTES START AT 0A40EH.

.code
  mov ax, @data
  mov ds, ax

  mov ah, 9
  lea dx, ASSIGN
  int 21h             ;◄■■ DISPLAY ASSIGN TO CHECK IF WORKS.

  mov ah, 0
  int 16h             ;◄■■ WAIT FOR A KEY PRESS.

  mov ax, 4c00h
  int 21h