实验九 根据材料编程
————————————————————————
assume cs:code,ds:data
data segment
db 'welcome to masm!'
db 02h,24h,71h
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,0 ;取数据,用bx取字符的时候不用把bx清零,保持inc就行
mov ax,0b800h
mov es,ax
mov di,0 ; 屏幕位置,这是指以bp为行,idata为列的0点坐标,第一个字节的位置,然后在同一个循环内加两次,第一次加了之后放属性,第二次为下一次循环准备
mov si,16
mov bp,6e0h ;这是表示第12行,列用idata表示
mov cx,7 ;打印welcome
s:
mov al,[bx]
mov es:[di+bp+40h],al ;12行第64字节起
inc di
mov al,[si] ;设置一个默认访问ds段寄存器的si为零,否则会取10h放入al,结果al内为10h
mov es:[di+bp+40h],al ;屏幕后一字节放属性
inc bx
inc di
loop s
add bp,0a0h ;换一行重新打印
inc si ;换文字属性
mov cx,4 ;字符串to
mov di,0
s1:
mov al,[bx]
mov es:[di+bp+40h],al
inc di
mov al,[si]
mov es:[di+bp+40h],al
inc bx
inc di
loop s1
add bp,0a0h
inc si
mov cx,5 ;字符串masm!
mov di,0
s2:
mov al,[bx]
mov es:[di+bp+40h],al
inc di
mov al,[si]
mov es:[di+bp+40h],al
inc bx
inc di
loop s2
mov ax,4c00h
int 21h
code ends
end start
——————————————————
可以运行,虽然没按照题目标准,我快乐就行