assume cs:code,ds:data,ss:stack
data segment
db 'Welcome to masm!'
data ends
stack segment
dw 0,0,0,0,0,0200H,2400H,7100H
stack ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,0AH
mov ax,0b800H
mov es,ax ;将色彩的内存段地址的值给es段寄存器;
mov si,0H
mov cx,03H
sou: mov bx,0H
mov bp,0H
pop ax ;将栈中的色彩属性值出栈;
push cx ;将外层循环的CX值压栈;
mov cx,10H ;设置内层循环次数;
sin:mov al,[bx]
mov es:[160D*12D+80D-16D+bp+si],ax ;bp用来定位每一行中的列,si用来定位到下一行si每次加0A0H;
inc bx ;指向下一个字符;
add bp,02H ;指向下一个内存单元,用于写入下一个字符与字符属性值;
loop sin
add si,0A0H
pop cx ;将外层循环次数出栈;
loop sou
mov ax,4200H
int 21H
code ends
end start |