马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
安装7ch中断例程
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 ;将do0写到0:200处
mov cx,offset do0end-offset do0
cld
rep movsb
;设置中断向量表
mov ax,0
mov es,ax ;将es指向中断向量表
mov word ptr es:[7ch*4],200h ;发生7ch中断时跳转到0:200处执行
mov word ptr es:[7ch*4+2],0
mov ax,4c00h
int 21h
;中断例程,跳转到s处
;S的地址相对于进入中断时程序执行的偏移地址的偏移量存储在bx中
;进入中断时程序执行的偏移地址存放在ss:[sp]处
do0:
push bp
mov bp,sp
add ss:[bp+2],bx
pop bp
iret
do0end: nop
code ends
end start
应用调起7CH中断(题目给的程序,改了字体颜色,测试的时候按题目中不给字体颜色不显示字符,感觉奇怪...)
assume cs:code
data segment
db 'conversation',0
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax ;指向显存
mov di,160*12
s: cmp byte ptr [si],0
je ok ;(ds:[si])=0时则跳转
mov al,[si]
mov ah,02; ;绿色字体
mov es:[di],ax ;写显存
inc si
add di,2
mov bx,offset s-offset ok; bx保存ok到s的程序长度
int 7ch
ok: mov ax,4c00h
int 21h
mov ax,4c00h
int 21h
code ends
end start
|