assume cs: codes, es: extdatas, ss: stacks
extdatas segment
db "welcom to masm !" ; 16 chars
db 42H,71H,71H,71H, 71H,71H,71H,71H, 71H,71H,71H,62H, 62H,71H,71H,71H; 16 colors
extdatas ends
stacks segment
dw 0H, 0H
stacks ends
codes segment
mainproc: mov ax, extdatas
mov es, ax
mov ax, 0B800H
mov ds, ax
mov ax, stacks
mov ss, ax
; top distance lines
mov di, 0H
mov cx, 8H
calc_begin: add di, 0a0H
loop calc_begin
mov cx, 04H
fill_lines: mov si, 0H
add di, 40H ; horizontal center
push cx
mov cx, 10H ; 16 chars
fill_line: mov byte ptr dl, es:[si]
mov byte ptr dh, es:[si + 10H]
mov ds:[di], dx
inc si
add di, 2H
loop fill_line
pop cx
add di, 040H ; to next line
loop fill_lines
mov ax, 4C00H
int 21H
codes ends
end mainproc
在DosBox环境下运行(假定调用ml编译出的exe文件名为colors.exe):
step1: debug colors.exe
step2: 调用u命令, u命令查看代码段内存中汇编代码分布情况
step3: 调用g命令执行汇编代码。 从代码起始位置执行到到指定代码段内存位置。如: g 003D
运行效果如下: