|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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 测试通过
复制代码 |
评分
-
查看全部评分
|