assume cs:code
data segment
db 'welcome to masm!'
data ends
color segment
db 00000010B, 00100100B, 01110001B
color ends
stack segment
dd 0, 0, 0, 0
stack ends
code segment
start:
mov ax, 0B800H
mov es, ax
mov ax, stack
mov ss, ax
mov sp, 10H
;将color存入栈
mov ax, color
mov ds, ax
mov bx, 2
mov cx, 3
lcolor:
mov ah, 0
mov al, ds:[bx]
push ax
dec bx
loop lcolor
mov ax, data
mov ds, ax
mov bp, 0
mov cx, 3
lrow:
mov bx, 0
mov di, 0
pop dx
push cx
mov cx, 16
levyrow:
mov al, ds:[bx]
inc bx
mov es:[bp+di], al
inc di
mov es:[bp+di], dl
inc di
loop levyrow
add bp, 0A0H
pop cx
loop lrow
mov ax, 4c00h
int 21h
code ends
end start
写的啰嗦了一点,但是思路还是清晰的。
因为welcome to masm!写在了屏幕的前三行,所以在debug的时候,千万不要超出第一屏,否则看不到效果。
我开始就是因为程序写对了,看不到效果,以为自己写的不对。。
示例:
debug xxxx.exe
g cs:004A
就看到效果了 |