. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
主题 : :  实验15,按任意皱键也能全屏显示A!  [待解决] 回复[ 6次 ]   点击[ 596次 ]  
qing_liang
[帖 主] [ 发表时间:2010-03-22 23:02 ] 
荣誉值:0
信誉值:0
注册日期:2010-03-05 21:32
这道题其实和书中的15.5是一样的,我因为15.5把书上的代码抄了,运行不了,屏幕停不住,网上查了说要在dos实模式下才能运行,我也在虚拟机装的实dos下试了也不行,其实我知道已经运行了,只是速度太快了,我没有办法让它变慢,做实验15时看到有牛人用了 
       mov cx,10h
rkeyr:  ah,0
       int 16
       loop rkey
 才能显示颜色,并不是要在实模式下才能显示的.这几行用了16号中断.


下面的程序按任意键也能显示A,是因为把要栈弄错了.我是把网上抄的实验15,改成书上的15.5程序的时候把代码段,赋给了栈段,没想到这样尽可以错成按任意键显示A了.




assume cs:code  

data segment  
        dw 0,0  
data ends  
          
code segment  

start:  
        mov ax,data  
        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  
          
        push es:[9*4]  
        pop es:[200h]  
        push es:[9*4+2]  
        pop es:[202h]  
          
        cli  
        mov word ptr es:[9*4],204h  
        mov word ptr es:[9*4+2],0  
        sti  
          
        mov cx,00h  
rkey:  
        mov ah,0  
        int 16h  
        loop rkey  

        push es:[200h]  
        pop es:[9*4]  
        push es:[202h]  
        pop es:[9*4+2]  
          
        mov ax,4c00h  
        int 21h  

                          
int9:  
        push ax  
        push es  
        push di  
        push cx  

        in al,60h  
                  
        pushf  
        call dword ptr cs:[200h]  
          
        cmp al,9eh 
        jne int9ret  
          
        mov ax,0b800h  
        mov es,ax  
        mov di,0  
          
        mov cx,2000  
showa:  
        mov byte ptr es:[di],'A'  
        add di,2  
        loop showa  

int9ret:  
        pop cx  
        pop di  
        pop es  
        pop ax  
        iret  

int9end:  
        nop          
          
code ends  

end start
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved