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

我的博客

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

[2011-08-04 19:01] 实验十五~。~

assume cs:code,ss:stack

stack segment
 db 16 dup(0)
stack ends

code segment 
start:
     mov ax,stack
     mov ss,ax
     mov sp,16
   
     mov ax,code
     mov ds,ax
     mov si,offset int9A ;设置数据源
     
     mov ax,0
     mov es,ax
     mov di,204h ;设置程序存放的地址
     
     mov cx,offset int9Aend-offset int9A
     cld
     
     rep movsb ;程序复制写入内存
     
     push es:[9*4]
     pop es:[200h]
     push es:[9*4+2]
     pop es:[202h]  ;将原int9例程的入口地址存放
     
     ;设置新的中断向量
     cli
     mov word ptr es:[9*4],204h
     mov word ptr es:[9*4+2],0
     sti
     
     mov ax,4c00h
     int 21h
     
     
     ;--------int9A
     int9A:
         ;如同子程序一样,各种寄存器的保存
          push ax
          push bx
          push dx
          push cx
          
          in al,60h;从60h端口读入扫描码
          
          ;模拟int9中断调用,以便处理其它硬件细节
          pushf
          call dword ptr cs:[200h]
          
          cmp al,9eh ;是否为A的断码
          jne ok
          ;调用int10h设置光标
          mov ah,2
          mov bh,0
          mov dh,0
          mov dl,0
          int 10h
          ;调用int10h在光标处显示字符
          mov ah,9
          mov al,'a'
          mov bl,7
          mov bh,0
          mov cx,80*24
          int 10h
          ok:
          pop cx
          pop dx
          pop bx
          pop ax
          iret ;程序返回
     int9Aend:nop
   ;-----end .
code ends
end start
评论次数(1)  |  浏览次数(699)  |  类型(汇编作业) |  收藏此文  | 

[  tomato   发表于  2011-08-05 23:49  ]

结果也贴上来晾凉吧。

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