assume cs:code
data segment
db 'welcome to masm!', 0
data ends
code segment
begin:
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 begin
答案
assume cs:code
data segment
db 'welcome to masm!', 0
data ends
code segment
begin:
// 安装 int 7ch中断例程对应的程序在 0000:0200H处
mov ax, code
mov ds, ax
mov si, offset scstart
mov ax, 0h
mov es, ax
mov di, 200h
mov cx, offset scsend-offset scstart
cld
rep movsb
// 设置中断向量表
mov ax, 0
mov es, ax
mov word ptr es:[7ch*4], 200h
mov word ptr es:[7ch*4+2], 0h
// 测试程序
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
// int 7ch 的中断例程
scstart:
push dx
push cx
push bx
push ax
// 设置要显示的位置
mov ax, 0B800h
mov es, ax
mov al, 50
mul dh
mov si, ax
mov al, 4
mul dl
add si, ax
s:
// 循环遍历显示字符串
mov cl, [bx]
mov ch, 0
// 如果cx=0000 跳转至ok标号处
jcxz ok
// 要显示的字符
mov es:[si], cl
// 要显示的字符的属性
mov es:[si+1], dl
inc bx
add si, 2
jmp short s
// 退出int 7ch的程序
ok:
pop ax
pop bx
pop cx
pop dx
iret
scsend: nop
code ends
end begin