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

我的博客

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

[2010-03-12 17:33] 实验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:204h单元

        push    es:[4*9]
        pop     es:[200h]
        push    es:[4*9+2]
        pop     es:[202h]
;原中断例程入口地址存0:200h

        cli
        mov     word ptr es:[4*9],204h
        mov     word ptr es:[4*9+2],0
        std
;将新的中断例程入口地址写入中断向量表

        mov     ax,4c00h
        int     21h


int9:   push    ax
        push    bx
        push    cx
        push    es

        in      al,60h

        pushf
        call    dword ptr cs:[200h]
;调用原中断例程,处理硬件细节

        cmp     al,1eh
        jne     int9ret
;如果按键不是A,则中断返回

s:      in      al,60h
        cmp     al,9eh
        jne     s
;若是A,则循环等待按键松开

        mov     bx,0
        mov     ax,0b800h
        mov     es,ax
        mov     cx,2000
s1:     mov     byte ptr es:[bx],'A'
        add     bx,2
        loop    s1
;显示满屏幕的'A'

int9ret:pop     es
        pop     cx
        pop     bx
        pop     ax
        iret
int9end:nop

code    ends
        end     start

运行完安装int 9中断例程的程序,如果在cmd命令行模式下按下A键,看不出效果,若进入edit编辑环境,就能够看出效果。另外,P283程序也是这样。在edit环境中按F1,则会出现帮助窗口并且颜色发生改变。
在command命令行模式下安装了新的int 9,就可以直接在命令行中按键并看到效果。

这里把cmd和command的区别总结如下:
command是16位命令行,cmd是32位命令行。 
CMD是最常用的命令行环境,提供对系统中所有命令行程序的支持,包括32位PE格式(PE格式,是微软Win32环境可执行文件的标准格式,Portable Executable。)的控制台程序和16位MZ格式的DOS程序;但它本身是一个32位的PE程序,所以在运行16位DOS程序前需要模拟一个环境,那就是“NT下的DOS虚拟机(NT Virtual DOS Machine,简称NTVDM)”,由%SystemRoot%\system32下的ntvdm.exe提供支持。因此,当我们刚刚打开CMD时,进程管理器中会显示出cmd.exe进程,而当在其中运行了一个16位的DOS程序后(比如debug),又会多出一个ntvdm.exe进程。
COMMAND是运行16位DOS程序的兼容性命令行环境,这个环境仍然由ntvdm.exe提供,而COMMAND不再是一个独立的“命令解释器”,而只是一个为了与低版本系统相兼容,而设计出的一个16位命令行环境的入口。所以,在运行COMMAND后,进程管理器只有一个ntvdm.exe进程,而不会有command.com进程。
(以上引用自http://zhidao.baidu.com/question/99866493.html)
评论次数(0)  |  浏览次数(1265)  |  类型(汇编作业) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码