| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 532 人关注过本帖
标题:这个程序那里有错误
收藏  订阅  推荐  打印 
longxies
Rank: 2
等级:注册会员
帖子:113
积分:1388
注册:2007-11-14
这个程序那里有错误

如下程序实现带有两个功能号0,1的7ch功能调用,用直接定植表.
但是do1中断列程安装到0:200H处后,sub1和sub2的偏移地址是多少,buf1处的两个字的值是多少啊,
这个程序我运行不起来
高手帮忙找找错误谢谢了


data segment
    
data ends
code segment
    assume cs:code,ds:data
start:
       mov ax,code           ;安装do1列程在0:200H处
       mov ds,ax
       mov si,offset do1
       mov ax,0
       mov es,ax
       mov di,200h
       mov cx,offset do1e-offset do1
       cld
      
       rep movsb
      
       mov ax,0                         ;置入口地址
       mov es,ax
       mov word ptr es:[7ch*4],200h
       mov word ptr es:[7ch*4+2],0

       mov al,1               ;调用列程的第一号子程序
       int 7ch

       mov ah,4ch
       int 21h

do1:                        ;do1列程
    jmp ks
      buf1 dw sub1,sub2      ;定值表
ks:   push ax
      push bx
      push dx
      push cx

      mov ah,0             ;根据AL计算,在BUF1中的位置
      add ax,ax
      mov bx,ax

      call word ptr es:[bx]      ;调用(错误出在这一步)

      pop cx
      pop dx
      pop bx
      pop ax
      iret
ks1:nop
           
sub1:mov ah,02h           ;0号子程序
      mov dl,12
      int 21h
      ret
sub2:mov ah,02h          ;1号子程序
      mov dl,3
      int 21h
      ret
do1e:nop      
code ends
     end start

[[italic] 本帖最后由 longxies 于 2007-12-20 19:49 编辑 [/italic]]
搜索更多相关主题的帖子: mov  segment  data  offset  
2007-12-20 19:47
longxies
Rank: 2
等级:注册会员
帖子:113
积分:1388
注册:2007-11-14

我自己已经把他解决了,谢谢参与
2007-12-21 09:55
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.102988 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved