汇编颇为繁复,随手所记,偶有复习。
assume cs:codes, ds:datas, ss:stacks
datas segment
db 'welcome to masm!'
db 02h, 24h, 71h
datas ends
stacks segment
dw 8 dup(0)
stacks ends
codes segment
start: mov ax, datas ;数据段地址
mov ds, ax
mov ax, stacks ;栈段地址
mov ss, ax
mov sp, ss
mov ax, 0b87cH ;显存段地址
mov es, ax
mov cx, 3
mov si, 0 ;颜色偏移地址
mov di, 0 ;显示位置偏移地址
s1: push cx
mov ah, ds:[si+16] ;修改高位颜色
mov bx, 0 ;字符偏移地址
mov cx, 16
s2: mov al, ds:[bx] ;修改低位字符
mov es:[di], ax ;设置显存值
inc bx
add di, 2 ;每个字符在显存中占2位
loop s2
add di, [128] ;换行整体偏移160, 写入字符时本身有偏移
pop cx
inc si
loop s1
mov ah, 4ch
int 21h
codes ends
end start
网友评论