. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->汇编语言学习交流区
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  程序驻留,为什么按ESC会出错????  [待解决] 回复[ 0次 ]   点击[ 617次 ]  
yang5731
[帖 主]   [ 发表时间:2011-03-21 10:31 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-26 12:14
zhzh        macro        reg        ;宏:将reg中的低8位转化成10进制的字符保存在AX中。
        push        bx
        mov        ax,reg
        xor        ah,ah
        mov        bl,10
        div        bl
        add        ax,3030h
        pop        bx
        endm
assume        cs:code,ds:code
code        segment
old9        dd        ?
hhhh        db        ?,?,':'
mmmm        db        ?,?,':'
ssss        db        ?,?,'$'
new9:        pushf
        pushf
        call        DWORD ptr cs:old9
        sti
        push        bx
        push        ax
        push        dx
        push        cx
        mov        ah,1
        int        16h
        jz        nret
        cmp        ah,01h
        jnz        nret                                ;按ESC
        mov        ah,0ch
        int        21h
        mov        ah,2ch                                ;取时间
        int        21h
        zhzh        cx
        mov        WORD ptr mmmm,ax
        xchg        cl,ch
        zhzh        cx
        mov        WORD ptr hhhh,ax
        xchg        dl,dh
        zhzh        dx
        mov        WORD ptr ssss,ax
        mov        dx,offset hhhh
        mov        ah,9
        int        21h
        
nret:        
        pop        cx
        pop        dx
        pop        ax
        pop        bx
        popf
        iret
start:
        push        cs
        pop        ds
        mov        ax,3509h
        int        21h
        mov        WORD ptr old9,bx
        mov        WORD ptr old9+2,es                ;保存旧中断
        mov        dx,offset new9                        ;设置新中断
        mov        ax,2509h                        
        int        21h
        
        mov        dx,offset start
        add        dx,15
        mov        cl,4
        shr        dx,cl
        add        dx,10h
        mov        ah,31h                                ;结束并驻留
        int        21h
code        ends
end        start
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved