實驗十三
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