汇编网首页登录博客注册
dpjf的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
友情链接

[2008-07-19 16:14] 实验16,这下应该对了 大侠帮我看看

;author:dpjf 
;date:2008-07-16 
;编写并安装int 7ch中断例程 
;包含多个功能子程序的中断例程 


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 

assume cs:code 
code segment 
start: 
;;;;;;;;;;;;;;;;;;; 
;中断程序安装 
;;;;;;;;;;;;;;;;;;; 
mov ax,cs 
mov ds,ax 
mov si,offset setscreen 
mov ax,0 
mov es,ax 
mov di,200h 
mov cx,offset setscreenend-setscreen 
cld 
rep movsb 




;;;;;;;;;;;;;;;;;;; 
;设置中断向量 
;;;;;;;;;;;;;;;;;;; 
mov ax,0 
mov es,ax 
mov word ptr es:[7ch*4],200h 
mov word ptr es:[7ch*4+2],0 

;;;;;;;;;;;;;;;;;;;;;;;;;
mov ah,0 
mov al,7 
int 7ch 

mov ah,4ch 
int 21h 

;;;;;;;;;;;;;;;;;;; 
;中断处理程序 
;;;;;;;;;;;;;;;;;;; 
setscreen: 
jmp short set 
table:dw 200h+sub1-setscreen,200h+sub2-setscreen,200h+sub3-setscreen,200h+sub4-setscreen
set:push bx 
cmp ah,3 
ja sret 
mov bl,ah 
mov bh,0 
add bx,bx 
call word ptr cs:[bx+202h]
sret:pop bx 
iret 

sub1: 
push bx 
push cx 
push es 
mov bx,0b800h 
mov es,bx 
mov bx,0 
mov cx,2000 
sub1s: 
mov byte ptr es:[bx],' ' 
add bx,2 
loop sub1s 
pop es 
pop cx 
pop bx 
ret 


sub2: 
push bx 
push cx 
push es 
mov bx,0b800h 
mov es,bx 
mov bx,1 
mov cx,2000 
sub2s:and byte ptr es:[bx],11111000b 
or es:[bx],al 
add bx,2 
loop sub2s 

pop es 
pop cx 
pop bx 
ret 

sub3: 
push bx 
push cx 
push es 
mov cl,4 
shl al,cl 
mov bx,0b800h 
mov es,bx 
mov bx,1 
mov cx,2000 
sub3s:and byte ptr es:[bx],10001111b 
or es:[bx],al 
add bx,2 
loop sub3s 

pop es 
pop cx 
pop bx 
ret 

sub4: 
push cx 
push si 
push di 
push es 
push ds 
mov si,0b800h 
mov es,si 
mov ds,si 
mov si,160 
mov di,0 
cld  
mov cx,24 
sub4s:push cx 
mov cx,160 
rep movsb 
pop cx 
loop sub4s 

mov cx,80 
mov si,0 
sub4s1: 
mov byte ptr [160*24+si],' ' 
add si,2 
loop sub4s1 
pop ds 
pop es 
pop di 
pop si 
pop cx 
ret 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  

setscreenend:nop 

code ends 
end start
评论次数(2)  |  浏览次数(818)  |  类型(汇编作业) |  收藏此文  | 

[  starrynight   发表于  2008-07-19 19:11  ]

恩,没问题了
不过屏功能最好加上设置光标到第一行的中断调用指令

具体指令,查指令手册即知即可。

[  游客   发表于  2008-07-20 11:49  ]

mov word ptr es:[7ch*4],200h 
mov word ptr es:[7ch*4+2],0  

最好加上 cli,sti 屏蔽中断

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码