assume cs:code,ds:data,ss:stack
data segment
db 'Welcome to masm!',0
data ends
stack segment
db 10H dup(0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov si,0 ;这三行代码设置ds:si指向字符串首地址
mov ax,stack
mov ss,ax
mov sp,11H ;设置栈
mov dh,07H ;行号
mov dl,05H ;列号
mov cl,8AH ;颜色 11111001B
call show_str
mov ax,4c00H
int 21H
show_str: mov ax,0B800H
mov es,ax
mov di,0 ;设置es:di指向显存地址
mov ah,0
mov al,cl ;颜色存放到al中
push ax ;将颜色入栈
mov al,dl ;列号存放到al中
push ax ;将列号入栈
mov al,dh ;将行号存放到al中
mov ch,0A0H ;行数
mul ch
sub ax,0A0H ;求出行号的首地址
pop dx ;从栈中取出列号
dec dx
add dx,dx ;求出列号的首地址
add ax,dx ;求出几行几列的首地址
mov di,ax ;设置显存的起始地址
pop ax ;从栈中取出颜色
j1: mov cl,ds:[si] ;取字符串的第一个字符放到ah中
mov es:[di],cl ;将ah中的数据存放到显存处,用于显示字符
mov es:[di+1],al ;将字符颜色存放到显存
inc si
add di,2
mov ch,0
jcxz r ;判断是否取到最后一个字符0.为0则结束程序,不为0则继续向下取
jmp short j1
r: ret
code ends
end start
王爽汇编语言第三版 实验十第一题
最新推荐文章于 2022-06-06 18:41:25 发布