实验10
在屏幕8行3列,用绿色显示data段中的字符串
assume cs:code
data segment
db'Welcome to masm!',0
data ends
code segment
start:
mov dh,8 ;行
mov dl,3 ;列
mov cl,2 ;颜色
mov ax,data
mov ds,ax
mov si,0 ;字符串首地址
call show_str
mov ax,4c00h
int 21h
show_str:
push ax ;用到的寄存器入栈
push bx
push cx
push dx
push es
push di
mov ax,0B800h ;定义显示缓冲区的段地址
mov es,ax
;N为行,M为列
;计算写入首地址的偏移地址 公式:1) 0A0H*(N)+M*2
mov al,dh
mov ah,0
mov bl,0A0h ;每行偏移A0H
mul bl
mov bl,dl
mov bh,0
add ax,bx
add ax,bx
mov di,ax ;ax为首地址的偏移地址
mov dl,cl ;dl存颜色
mov ch,0
nx:
mov cl,ds:[si] ;判断字符是否为00
jcxz over
mov bl,cl
mov bh,dl
mov es:[di],bx ;赋值
add si,1
add di,2
jmp short nx
over:
pop di
pop es
pop dx
pop cx
pop bx
pop ax
ret
code ends
end start