. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  280页的程序老出问题,搞半天没找到原因,帅兄请进  [待解决] 回复[ 1次 ]   点击[ 251次 ]  
dmhorse
[帖 主]   [ 发表时间:2010-12-24 17:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-26 22:22
DATAS SEGMENT
    ;此处输入数据段代码  
    db 128 dup(0)
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    
    
    ;保存 int 9 调用的函数地址
    mov ax,0
    mov es,ax
    push es:[4*9]
    pop ds:[0]
    push es:[4*9+2]
    pop ds:[2]
               
           ;修改int 9的地址,这里使用es作为索引,
           mov ax,0
           mov es,ax           
           mov word ptr es:[4*9],offset keyboard
           mov es:[4*9+2],cs
                 
           ; 初始化显示地址
           mov ax,0b800h 
           mov es,ax
              
           mov bh,02
           mov bl,'a'
           mov di,0

        ;开始打印           
           call s
           MOV AH,4CH
    INT 21H
           
           ;写入显存
   s:
           mov es:[di + 160 * 12],bx
           call delay
           inc bl
           cmp bl,'z'
           ja done     
    loop s
  done:
    ret
    
    ;人肉延时
delay:
        mov ax,0
          mov dx,1000h
counting:
          
          sub ax,1
          sbb dx,0
          
          cmp ax,0
          jne counting
          
          cmp dx,0
          jne counting
          
delaydone:
          ret
          
           ;键盘接口
keyboard:
        ;push ax
        ;in al,60h        
        ;inc bh                        
        call dword ptr ds:[0]                
        ;pop ax
        iret
        
            
    
CODES ENDS
    END START


当调用原来的int9地址程序时,就爆了,看了半天,没找到问题所在,极度痛苦中。
        call dword ptr ds:[0]
dmhorse
[第1楼]   [ 回复时间:2010-12-31 15:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-26 22:22
问题已经解决,在原来中断时,pushf 再call,所以直接call 时补一句pushf就好了。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved