马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:code
data segment
dd 2 dup(0) ;调试时临时存放段地址和偏移
str db 'http://www.fishc.com/',0 ; str当变量名用
first:
;--------------要安装的内容--------------------
;功能:在7ch中断处显示用0结束的字符串
;参数:dh=行号 dl=列号 cl=颜色 DS:SI 指向字符串首地址
push ax
push bx
push es
mov ax,0b800h
mov es,ax;显示区---段地址
mov ax,0
;计算行偏移
mov al,dh
mov bl,80*2
mul bl
push ax
;计算列偏移
mov al,dl
mov bl,2
mul bl
pop bx
add bx,ax;显示区---总偏移
s:
mov al,[si]
cmp al,0 ;比较是否到字符串尾部
je ok
mov es:[bx],al
mov es:[bx+1],cl ;置颜色属性
inc si
add bx,2
JMP short s
ok:
pop es
pop bx
pop ax
iret
;--------------要安装的内容--------------------
last:
nop
data ends
code segment
start:
mov ax,data
mov ds,ax
;------调试安装内容代码--------
;调试无错后去除这段
;mov word ptr [2],data
;mov word ptr [0],offset first
;mov dl,12 ;参数
;mov dh,5 ;参数
;mov cl,11001010b ;参数
;mov si,offset str ;参数
;jmp dword ptr ds:[0]
;-------------------安装----------------
mov si,offset first
mov ax,0
mov es,ax
mov di,200h
mov cx,offset last - offset first ;安装内容-长度
cld
rep movsb
;-------改变中断地址---------------------
mov word ptr es:[7ch*4],200h ;一个地址4字节 地址=编号*4
mov word ptr es:[7ch*4+2],0 ;偏移占2字节 段占2字节
;---------调用改变后的7ch中断--------------
mov dh,10 ;参数
mov dl,10 ;参数
mov cl,2 ;参数
mov si,offset str;参数
int 7ch
mov ax,4c00h
int 21h
code ends
end start
;emu8086 4.08 测试通过
|