. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  王爽《汇编语言》第2版实验15:dos下松开A键,就显示满屏A,否则其它键正常(带图片)  [待解决] 回复[ 1次 ]   点击[ 455次 ]  
chinaljg
[帖 主]   [ 发表时间:2011-02-08 22:36 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:0
注册日期:2011-01-04 11:04
王爽《汇编语言》第2版实验15:dos下松开A键,就显示满屏A,否则其它键正常(带图片) assume cs:code 
stack segment 
        db 128 dup (0) 
stack ends 
code segment 
start:        mov ax,stack 
        mov ss,ax 
        mov sp,128  ;ss:sp指向栈顶 
         
        mov ax,cs 
        mov ds,ax 
        mov si,offset int9  ;ds:si指向源地址 

        mov ax,0 
        mov es,ax 
        mov di,204h   ;es:di指向目的地址,0:200-0:201 保存原来int9的ip,0:202-0:203保存原中断cs 

        mov cx,offset int9end - offset int9 
        cld  
        rep movsb  ;将中断例程安装到0:204地址处 

        push es:[9*4]  ;保存原来的int 9h中断入口地址 
        pop es:[200h] 
        push es:[9*4+2] 
        pop es:[202h] 

        cli                      ;设置新的int 9h号中断指向0:204 
        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 es  ;保存用到的寄存器 

        in al,60h   ;从键盘读数据到al 
         
        pushf       ;引发int9中断 
        call dword ptr cs:[200h] ;执行原int9中断 

        cmp al,9eh   ;A的断码为9eh 
        jne int9ret 
         
        ;若松开A键,则显示满屏幕的A 
        mov ax,0b800h 
        mov es,ax 
        mov bx,0 
        mov cx,2000 
s:        mov byte ptr es:[bx],'A' 
        add bx,2 
        loop s 

int9ret:        pop es  ;用到的寄存器出栈 
        pop cx  ;用到的寄存器出栈 
        pop bx  ;用到的寄存器出栈 
        pop ax  ;用到的寄存器出栈 
        iret   
int9end:        nop 
code ends 
end start 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;;向大家学习  QQ:1250609960 
;链接地址:http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=37247&kindId=52075&postId=50861
chinaljg
[第1楼]   [ 回复时间:2011-02-08 22:47 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:0
注册日期:2011-01-04 11:04
王爽《汇编语言》第2版实验15:dos下松开A键,就显示满屏A,否则其它键正常

这章的实验要想看到效果,需要在实模式dos下。需要帮助的可以联系我。
qq:1250609960
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved