功能
在指定位置用指定的颜色,显示一个用0结束的字符串
在屏幕的8行3列,用绿色显示data段中的内容
代码部分
1.初始化
首先data段中给定指定的字符串并且以0结尾
stack栈段初始为空
assume cs:code,ds:data,ss:stack
data segment
db 'Welcome to masm!',0
data ends
stack segment stack
db 128 dup(0)
stack ends
初始化ss,sp表示栈
mov ax,stack
mov ss,ax
mov sp,128
调用初始化函数,用来初始化ds表示数据段,es表示屏幕中的位置
init_reg:
mov bx,0b800h
mov es,bx
mov bx,data
mov ds,bx
ret
题目要求我们显示在第八行第三列,我们分别写设置行和列的函数
行的函数,每行占160字节所以我们只要将寄存器设置成160*行数,然后再用es+寄存器即可
get_row:
mov al,160
mul dh
ret
列的函数,每个位置占两个字节第一个表示内容,第二个表示颜色,所以这里我们要给列数*2,然后用es+寄存器即可
get_col:
mov al,2
mul dl
ret
2.清理屏幕
题目中没有让清理屏幕,但是这里为了美观我们写一个清理屏幕的函数
直接将dx设置成0700h 07表示空 00表示没有颜色,然后设置循环次数2000次,每次将dx赋值给es:[di]即可,记得要push pop用到的寄存器
clear_screen:
push bx
push cx
push es
push si
mov bx,0b800h
mov es,bx
mov si,0
mov dx,0700h
mov cx,2000
clearscreen:
mov es:[si