assume cs:code
data segment
db 'welcome to masm!'
db 2,24h,71h
data ends
stack segment
db 16 dup(0)
stack ends
code segment
start:
mov ax,data
mov ds,ax ;加载data首地址到ds段寄存器
mov ax,stack
mov ss,ax ;加载stack首地址到es寄存器,用来存放颜色
mov sp,16 ;初始化栈 用来存放cx
mov ax,0B800h
mov es,ax ;加载缓冲区段地址到es段寄存器
mov si,06e0h ;存放字符从11行开始
mov cx,3 ;//循环写3此welcome to masm!
s:
mov bx,cx
mov ah,es:[bx+15] ;利用cx+15来将71h 24h 02h三种颜色 循序加载到每一行
push cx ;将外层循环cx缓存到栈中
mov cx,16
mov di,0 ;记录复制字符的下标
mov bx,40h ;缓冲区写入开始第32个字符是中间 (80-16) / 2 = 32
s0:
mov al,ds:[di] ;字符写入al
mov es:[si+bx],ax ;从第11行+ bx的偏移位置开始写入缓冲区
add bx,2 ;写入位置往后移动2字符
inc di ;复制的字符位置+1
loop s0
add si,0a0h ;换行
pop cx ;恢复外层循环
loop s
mov ax, 4c00h
int 21h
code ends
end start
汇编语言-实验9
最新推荐文章于 2023-05-20 20:08:01 发布