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

我的博客

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

[2012-03-03 21:01] 15·2

assume cs:code

stack segment

     db 128 dup (0)

stack ends

data segment

     dw 0,0

data ends

code segment

start:   mov ax,stack

     mov ss,ax

     mov sp,128

     mov ax,data

     mov ds,ax

 

     mov ax,0

     mov es,ax

 

     push es:[9*4]

     pop ds:[0]

     push es:[9*4+2]

     pop ds:[2]

 

;在中断向量表中设置新的int 9中断例程的入口地址

     cli           ;设置IF=0屏蔽中断

     mov word ptr es:[9*4],offset int9

     mov word ptr es:[9*4+2],cs

     sti           ;设置IF=1不屏蔽中断

     mov ax,0b800h

     mov es,ax

     mov ah,'a'

s:   mov es:[160*12+40*2],ah ;第12行第40列

     inc ah

     cmp ah,'z'

     jnb s

     mov ax,0

     mov es,ax

 

     push ds:[0]

     pop ss:[9*4]

     push ds:[2]

     pop es:[9*4+2]

     mov ax,4c00h

     int 21h

delay:   push ax

     push dx

     mov dx,1000h

     mov ax,0

delay1:  sub ax,1

     sbb dx,0      ;(dx)=(dx)-0-CF

     cmp ax,0

     jne delay1

     cmp dx,0

     jne delay1

     pop dx

     pop ax

     ret

int9:push ax

     push bx

     push es

     in al,60h     

     pushf             

     call dword ptr ds:[0]  

     cmp al,1      

     jne int9ret        

     mov ax,0b800h

     mov es,ax

     inc byte ptr es:[160*12+40*2+1]  

int9ret:pop es

     pop bx

     pop ax

     iret

 

code ends

end start
评论次数(1)  |  浏览次数(396)  |  类型(汇编作业) |  收藏此文  | 

[  游客   发表于  2012-03-04 09:37  ]

应该有两个地方,一个是设置,另一个是还原。

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