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

我的博客

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

[2013-03-17 14:00] 实验15

assume cs:code

stack segment
  db 128 dup (0)
stack ends

code segment

start:    mov ax,stack
          mov ss,ax
          mov sp,128                  ;设置栈段

          push cs
          pop ds                      ;新中断例程的源地址的段地址

          mov ax,0
          mov es,ax                   ;安装新中断例程的目标地址的段地址

          mov si,offset int9
          mov di,204h
          mov cx,offset int9end-offset int9
          cld
          rep movsb                     ;安装新中断例程,入口地址在0:202h

          push es:[9*4]
          pop es:[200h]
          push es:[9*4+2]
          pop es:[202h]                  ;将int9中断例程的入口地址保存在0:200h
    
          cli
          mov word ptr es:[9*4],204h
          mov word ptr es:[9*4+2],0
          sti                         ;将新中断例程的入口地址放入中断例程表

          mov ax,4c00h
          int 21h
     
int9:     push ax                     ;以下为新中断例程
          push bx
          push cx
          push ds
          in al,60h                   ;读取端口内的值
          pushf
          call dword ptr cs:[200h]
          cmp al,1eh
          je h0                       ;是否按下的是‘a’键
t1:       cmp al,9eh               
          jne h0                       ;是否是松开‘a’键                   
          mov bx,0b800h
          mov ds,bx
          mov bx,0
          mov cx,2000
x0:       mov byte ptr [bx],41h
          add bx,2
          loop x0                     ;全屏显示‘A’              
               
h0:       pop ds
          pop cx
          pop bx
          pop ax
          iret
int9end:  nop 

code ends
end start
评论次数(0)  |  浏览次数(450)  |  类型(汇编作业) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码