注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

DOS编程技术

讨论在纯DOS下的编程技术

 
 
 

日志

 
 
关于我

1984年大学毕业,1985年底有机会开始接触PC机,1986年开始在PC机上做开发工作,曾接触过MS-DOS、CP/M、UNIX、VMS、LINUX、iRMX等众多的操作系统并在上面从事技术开发,擅长做底层与硬件相关的软件开发,目前主要在DOS和LINUX平台下工作,主要从事软件,在硬件开发上也有一定造诣,亦有在8051系列、6502系列(凌阳)、z80系列、ARM、X86等各类平台下开发软硬件的经历。更详细情况可以参考http://resume.whowin.net

网易考拉推荐

int 15h的87h功能详细说明  

2008-10-23 16:55:11|  分类: dos资料 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
    功能:通过全局描述符表在内存中拷贝数据块
    调用前:
    ah = 87h
    cx = 要拷贝的字数(最多8000h)。注意是“字数”而不是字节,意思实说是以2个字节为单位的,最大8000h就是说一次最多拷贝64k Bytes
    es:si 指向全局描述符表(下面详细说明)
    调用:int 15h
    调用后:
    cf = 0 表示拷贝成功,此时ah = 0
    cf = 1 表示有错误发生,此时ah = 错误码,错误码如下:
        01h--奇偶校验错
        02h--中断错误
        03h--A20选通错
        80h--无效命令
        86h--不受支持的功能
    全局描述符表说明:
    es:si指向的描述符表中有6个描述符,这6个描述符分别是:
  • 伪描述符
  • 段描述符表的描述符
  • 源段描述符
  • 目的段描述符
  • BIOS段描述符
  • 堆栈段描述符
    其中需要我们填的描述符有两个,即源段描述符和目的段描述符,其余的描述符空着就好了,在调用后,BIOS会填好。
    每个描述符占八个字节,结构如下:
    偏移    长度    说明
    ----   ------   ---------------------------------------------------
     00     word    段长度(共20位,这里存bit0--bit15),以字节为单位
     02     word    段基址(共32位,这里是bit0--bit15)
     04     byte    段基址,这里存bit16--bit23
     06     byte    段访问权限,见后面说明
     07     word    bit0--bit3为段长度的bit16--bit19
                    bit8--bit15为段基址的bit24--bit31
                    bit4:保留位AVL;bit5:强制为0;bit6:D/B(较繁琐不说了)
                    bit7:G,段界限颗粒度(Granularity),G=0颗粒度为字节
                          G=1段界限颗粒度为4kb
    段访问权限说明:
  • bit7----存在(Present)位P,P=1表示段在内存中存在,P=0表示段在内存中不存在
  • bit5:6----描述符的特权级,0--3
  • bit4----说明描述符的类型S,S=0系统段描述符和门描述符,S=1数据段和代码段描述符
  • bit0:3----描述符特性,根据不同的描述符有不同的8种特性,请查阅相关资料
    实际按照如下填写:
  • 伪描述符全为0
  • 段描述表的描述符全为0
  • 源段描述符
    段长度:0ffffh(也可以据实填写,但应大于2 * CX -1)
    32位段基址按实际填写
    段访问权限填93h
    其它:AVL=0,D/B=0,G=0
  • 目的段描述符的填写参考源段描述符
  • BIOS段描述符和堆栈描述符均为全0


  评论这张
 
阅读(1719)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018