实验十三
1、编写并安装int7ch中断例程,功能为显示一个用0结束的字符串,中断例程安装在0:200处
参数:(dh)=行号 (dl)=列好 (cl)=颜色 ds:si指向字符串首地址
assume cs:code
data segment
db "welcome to masm!",0
data ends
code segment
start: mov dh,10
mov dl,10
mov cl,2
mov ax,data
mov ds,ax
mov si,0
int 7ch
mov ax,4c00h
int 21h
code ends
end start
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset do0end-offset do0
cld ; 安装程序
rep movsb
mov ax,0 ; 设置中断向量表
mov es,ax
mov word ptr es:[7ch*4+0],200h
mov word ptr es:[7ch*4+2],0
mov ax,4c00h
int 21h
do0: push ax ; 保护现场
push es
push di
push si
mov ax,0b800h ; 设置段地址
mov es,ax
mov al,0A0H ; 设置偏移地址
mul dh
mov di,ax
mov al,2
mul dl
add di,ax
s: push cx
mov ch,0
mov cl,[si]
jcxz retend
pop cx
mov al,[si]
mov es:[di],al
mov es:[di+1],cl
add di,2
inc si
jmp short s
retend: pop cx ; 恢复现场
pop si
pop di
pop es
pop ax
iret
do0end: nop
code ends
end start
3、补全程序,分别在屏幕的第2、4、6、8行显示4句英文诗
assume cs:code
code segment
s1: db 'Good,better,best,','$'
s2: db 'Never let it rest','$'
s3: db 'Till good is better','$'
s4 :db 'And better,best.','$'
s: dw offset s1, offset s2, offset s3, offset s4
row: db 2,4,6,8
start: mov ax,cs
mov ds,ax
mov bx,offset s
mov si,offset row
mov cx,4
ok: mov bh,0 ; 第0页
mov dh,cs:[si] ; 行号
mov dl,0 ; 列号
mov ah,2 ; 设置光标位置
int 10h
mov dx,cs:[bx] ; ds:bx指向字符串的首地址
mov ah,9 ; 功能号9,在光标处显示字符串
int 21h
inc si ; 换行
add bx,2 ; 下一个字符串
loop ok
mov ax,4c00h
int 21h
code ends
end start