如何将数据作为字节加载到所需的内存字段?
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
我们可以在 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