|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:code,ss:stack,ds:data
stack segment stack
db 02h,24h,71h ;属性字节存放在堆栈段,方便用bp索引,本程序不用担心堆栈被覆盖
db 13 dup(0)
stack ends
data segment
db 'welcome to masm!' ;字符串,用si索引 0~15
data ends
code segment
start: mov ax,0b800h
mov es,ax ;初始化ES段,位于显存空间
mov ax,stack
mov ss,ax
mov sp,16 ;初始化栈段
mov ax,data
mov ds,ax ;初始化数据段
mov bx,1984 ;bx的起始地址,第12行32列
mov bp,0 ;bp初始化,指向数据段第一个属性字节
mov cx,3 ;外层循环变量
s1: push cx ;入栈保护cx
mov si,0 ;si指向第0个字符
mov di,0
mov ah,[bp] ;将属性字节暂存到ah
mov cx,16
s2: mov al,[si]
mov es:[bx+di],al ;通过al,装入ascii码字节内容
inc di ;di+1,指向属性字节
mov es:[bx+di],ah ;装入属性字符
inc di ;再次di+1,指向下一个字符的ascii码字节
inc si
loop s2 ;内层循环,对一行写入16列
inc bp ;bp+1,对应下一行属性字节
add bx,160 ;bx指向下一行
pop cx ;cx出栈
loop s1 ;外层循环
mov ax,4c00h
int 21h
code ends
end start
|
|