. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  15.4疑问求助大神  [待解决] 回复[ 0次 ]   点击[ 131次 ]  
xuyijun666
[帖 主]   [ 发表时间:2020-08-03 00:16 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2020-08-03 00:14
assume cs:code,ss:stack
data segment
        dw 128 dup(0)
data ends

stack segment
        db 128 dup (0)
stack ends


code segment 

start:                mov ax,stack
                        mov ss,ax
                        mov sp,128
                        
                        mov ax,data
                        mov ds,ax
                        
                        
                        call show_set
                        call sav_old_int9
                        call cpy_i9
                        call new_int9
                        
                        
                        mov ax,4c00h
                        int 21h
                        
                
;=============================================show        
show_set:        push ax
                        push bx

                        
                        mov bx,0
                        mov ax,0b800h
                        mov es,ax
                        mov bl,'a'        
show_screen:        mov es:[160*10+40*2],bl
                                call delayed
                                inc bl
                                cmp bl,'z'
                                jna show_screen
                                
                                pop bx
                                pop ax
                                ret
;===========================================delayed
delayed:        push ax
                        push dx
                        
                        mov dx,10h
                        mov ax,0
dela:                sub ax,1
                        sbb dx,0
                        cmp ax,0
                        jne dela
                        cmp dx,0
                        jne dela
                        
                        pop dx
                        pop ax
                        ret
;===========================================
sav_old_int9:        push ax
        
                                mov ax,0
                                mov es,ax
                                

                                push es:[9*4]
                                pop ds:[0]
                                push es:[9*4+2]
                                pop ds:[2]
                                
                                mov word ptr es:[9*4],200h
                                mov word ptr es:[9*4+2],0
                
                                
                                pop ax
                                ret
                                
;=======================================================
new_int9:        in al,60h
                        pushf
                        
                        call dword ptr ds:[0]
                        cmp al,1h
                        jne bc
                        mov ax,0b800h
                        mov es,ax
                        inc byte ptr es:[160*10+40*2+1]
                
        bc:                iret

;==============================================================
cpy_i9:                push ax
                        push di
                        push si
                        push es
                        push ds
                        
                        mov ax,0
                        mov es,ax
                        mov di,200h
                        mov ax,cs
                        mov ds,ax
                        mov si,offset new_int9
                        mov cx,offset new_int9-offset bc
                        cld
                        rep movsb
                        
                        pop ds
                        pop es
                        pop si
                        pop di
                        pop ax
                        
                        ret
                        


code ends
end start


不知道是哪里出了错没反应,求大神谢谢
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved