tag 标签: dos

相关博文
  • 热度 18
    2015-4-23 16:44
    5503 次阅读|
    0 个评论
    DOS下BIOS中断INT13H、IO端口直接编程读取IDE、SATA硬盘的参数和TC语言程序 wxleasyland@sina.com 2015.4   一、    背景 华硕笔记本电脑A45VD,640GB SATA机械硬盘放在硬盘位,120GB SSD SATA硬盘放在光驱位。BIOS中设置SATA为 AHCI方式(不是IDE兼容方式)。 在WIN7看,SATA控制器是Intel 7 Series/C216 Chipset Family SATA AHCI Controller,硬件ID是VEN_8086DEV_1E03CC_010601,位置在PCI总线0,设备31,功能2。 640GB机械硬盘是在CHANNEL0(通道0,即安装在SATA控制器接口PORT0上)。 120GB SSD硬盘是在通道2(即安装在SATA控制器接口PORT2上)。 SSD设置成为启动盘。因为BIOS启动设置是SSD硬盘,故在DOS下,机械硬盘就排第2了,即磁盘号81H。   以下均是对640GB机械硬盘进行分析。   二、    INT 13H 传统中断,AH=08H (1)  读取驱动器参数 AH=08H 入口: DL=驱动器,00H~7FH:软盘;80H~0FFH:硬盘 返回: CF=1——操作失败,AH=状态代码 CF=0 成功 BL=01H — 360K =02H — 1.2M =03H — 720K =04H — 1.44M =05H   ?? =06H  2.88M =10H  ATAPI可移动介质 CH=最大柱面号的低8位   low eight bits of maximum cylinder number(柱面号从0开始算) CL的位7-6=最大柱面号的高2位 high two bits of maximum cylinder number CL的位5-0=最大扇区号 maximum sector number(扇区号从1开始算) DH=最大磁头号 maximum head number(磁头号从0开始算) DL=驱动器数 number of drives ES:DI=磁盘驱动器参数表地址(只软驱)   (2) 注意: 1. 得到的数值是“编号”、不是“总个数”! “总个数”是number of ... “编号”是xxx number 扇区号从1开始,故 扇区数=最大扇区号 磁头号从0开始,故 磁头数=最大磁头号+1   2. BIOS 保留最后1个柱用于测试目的,这个柱不报告出来,而且柱面号从0开始,所以   柱面总个数=最大柱面号+2! There is one "test cylinder", It is last cylinder on drive, which is always reserved for test purposes, and therefore not reported by BIOS to be.(这点说明在http://computer-programming-forum.com/46-asm/16321e22892a8381.htm)   这两点说明看似简单,但是是经过研究很久才知道的!!!   (3)实测 U盘软驱启动,98版DOS下DEBUG, INT13H ,AH=08H ,DL=81H硬盘: 得到AX=0,BX=0,CH=FE(1022,即0~1022+1柱号),CL=FF(63,即1~63扇号),DH=FE(254,即0~254头号),DL=2(即2个硬盘),ES:DI没有数据。 即1024柱×255头×63扇=16450560扇,合8.4G硬盘,总容量不一致。   可以看出,除柱面个数外,磁头数、扇区数与后面DISKMAN一致。   可以将柱面个数单独计算,柱面个数=实际LBA总扇区数÷头数÷每道扇区数,DISKMAN就是这么做的。     三、    INT 13H 扩展中断,AH=48H (1)获取磁盘参数 入口: AH=48H DL=驱动器号 DS:SI=指向缓冲区的指针(即返回的数据会保存在这个缓冲区中) 返回: 失败: AH=错误号 CF置位 成功: AH=0 CF=0 缓冲区中偏移量: 04H  双字   柱面总个数  ――注意:是“总个数” 08H  双字   物理磁头总个数 0CH  双字   物理每道扇区总个数 10H  4字     扇区总个数 18H  字      每扇区字节数   (2)实测 U盘软驱启动,98版DOS下DEBUG, INT13H扩展 ,AH=48H ,DL= 81H 硬盘,得到: 16383柱,16头,63扇,乘起来是16514064总扇区,即8.4G的硬盘,总容量不一致。 总扇区数是1250263728扇区,OK,总扇区数与AIDA,DISKMAN检测是一致的。   (3)分析 “INT13H扩展”返回的是16头,而“INT13传统”返回的是255头!! “INT13H扩展”返回的直接就是硬盘的ATA参数,即与直接访问硬盘端口得到的参数是一样的! 而“INT13传统”返回的数值是BIOS加工转换后的,与分区表中的格式相一致。 ATA参数一般是16头最多了,而分区表中参数会是255头。也就是说,硬盘的ATA参数格式,与分区表参数格式是不一样的,所以造成了早期硬盘的一些容量限制问题。     四、    DISKMAN 用USB软驱启动到DOS,运行DISKMAN(打开时提示分区不对,忽略之),显示是“第2硬盘”。   DISKMAN得到的参数说明下: DISKMAN的CMOS参数CHS,12289柱面,255磁头,63扇区,是按照“传统INT 13H” AH=08来得到的。 其中, 柱面数是反算的 ,去掉小数,转成16进制,因变量只有2字节,只能保存低2字节,即1250263728总扇÷255头÷63扇=77825.32柱→0x13001,只能保存2字节,故是0x3001→12289柱。 “总扇区数”1250263728,是按“INT 13H扩展”得到的。     五、    分区表与“传统INT13H”兼容 分区表中,主分区和扩展分区必须要从新柱面开始(扩展分区中的逻辑盘不用)。 通过研究640GB机械硬盘上分区表中的分区起始LBA地址,看能不能被头、扇整除。发现分区是按255头、63扇来分的,而不是16头。即与“传统INT13H”兼容。 即分区软件分区时,要以“传统INT13H”得到的参数(柱面数除外)去进行分区。     六、    BIOS 是支持SATA硬盘读写的 从前面可看出,BIOS是直接支持SATA硬盘的读写的,用“INT 13H扩展”访问即可!!因为主板厂家自己知道是用什么型号的SATA控制器,知道如何去控制它,并且它还要读取硬盘的MBR进行启动,所以BIOS必须支持SATA硬盘读写。所以DOS下直接用INT 13H即可读写SATA硬盘扇区,用GHOST软件克隆就不是问题了。 那为什么XP安装时,需要加载SATA驱动?因为WINDOWS不使用INT 13H去访问硬盘,而是自己要去底层访问SATA控制器,如果它不认识SATA控制器,就访问不了硬盘了。       七、    直接IO读取IDE硬盘 (1)ATA控制器、IDE硬盘 在电脑上,连接结构是这样的:   CPU――数据总线、地址总线、控制总线――PCI控制器――PCI总线――ATA控制器                                                                ∧         ∧                                                                |  硬盘线 |                                                                ∨         ∨                                                                 IDE接口硬盘   硬盘IDE接口的数据线、控制线、地址线是分开的,IDE硬盘线有40芯之多,数据口直接挂在PCI的总线上,所以CPU可以直接访问到它。 ATA控制器是把IO端口地址转换到IDE硬盘接口上,从而CPU可以IN、OUT这些IO端口,直接访问到硬盘! 因此,IDE硬盘的IO端口是固定的,一组为命令寄存器组(Task File Registers),I/O的端口地址为1F0H~1F7H,其作用是传送命令与命令参数。另一组为控制/诊断寄存器(Control/Diagnostic Registers),I/O的端口地址为3F6H~3F7H,其作用是控制硬盘驱动器。   可以直接用单片机直接控制IDE硬盘: 单片机――40芯硬盘线――IDE硬盘 这个比较容易就能实现,将IDE接口的数据线、控制线、地址线分别连线控制就可以,物理电气信号连接不复杂。   注:ATA应是指协议标准,IDE应是指接口 相关详细说明可参考《如何在MCS-51系统中使用IDE硬盘》、《IDE接口硬盘读写技术》、《基于单片机的IDE硬盘控制的研究与设计》等文章。     (2)访问方法 引用别人说的(有修改): ①向端口3F6H写入控制字节,建立相应的硬盘控制方式; ②检验硬盘控制器和驱动器的状态(检测端口的第7和第6两位),如果控制器空闲而且驱动器就绪,即可输入命令; ③完整的输入7个字节长度的命令块,一次写入端口1F1H-1F7H,不论是否需要,端口1F1H-1F6H对应的6个字节的参数必须给出,端口1F7H的输出命令码为“0ECH”; ④检测端口1F7H的第7和第3两位,如果控制器空闲且第3位置1,表示操作结束,即可读取结果; ⑤通过端口1F0H读取数据,读取256个WORD到缓冲区,注意这里的数据是WORD 16位(2字节)的; ⑥再次读取端口1F7H,判断第0位是否为0,如果为0,表示命令成功,否则表示命令失败;   读出的256字节信息的主要内容如下: 偏移量          内 容               长度(字节) 00-01H    2字节 02H-03H      柱面总个数             2字节             04-05H     2字节 06H-07H      磁头总个数             2字节             08H-09H      每磁道所含的字节数     2字节             0AH-0BH       每扇区所含的字节数     2字节             0CH-0DH       每磁道所含的扇区个数   2字节             0EH-13H   6字节 14H-27H      产品的序列号           20字节            28H-29H   2字节 2AH-2BH       硬盘缓冲区容量         2字节             2CH-2DH       ECC校验码的长度       2字节             2EH-35H      硬件软体版本号         8字节             36H-5DH      硬盘型号               40字节             (3)程序 引用别人的(有修改),wxlhd1.c:   #include #include #include #include #include   #define BASEADDR1F0 0x1F0 #define BASEADDR3F6 0x3F6   void hdinfor2()    {     unsigned int i,j;     unsigned char p;       j=0;     p=0;     while (p!=0x40)          /*  必须RDY,并且不忙。读1f7H状态寄存器  0100 0000  bit6=1表示RDY*/     {        j++;       if (j=255) { printf("error1! NOT RDY NOT BSY.   ERR REG=%02X", inportb(BASEADDR1F0+1));  exit(0);}        p=inportb(BASEADDR1F0+7);        printf("%02X ",p);        p=0xc0;       /*  1100 0000 bit6=1表示RDY,BIT7=1是忙*/     }     printf("ok1 \n");       outportb(BASEADDR3F6,0);   /* 写3F6H 设备控制寄存器   0000 0000 BIT1中断允许  BIT2非复位*/       for(i=0;i5;i++)  outportb(BASEADDR1F0+1+i,0);    /* 写 1F1H~1F5H */     outportb(BASEADDR1F0+6, 0xa0);         /*  驱动器/磁头寄存器 1010 0000  BIT6=0非LBA方式 */     outportb(BASEADDR1F0+7, 0xec);         /*  写命令寄存器 */       j=0;     p=0;     while(p!=0x8)              /*必须有中断请求产生,并且不忙*/     {        j++;       if (j=255) { printf("error2! NOT RDY NOT IRQ.   ERR REG=%02X", inportb(BASEADDR1F0+1));  exit(0);}         p=inportb(BASEADDR1F0+7);            printf("%02X ",p);        p=0x88;          /* 1000 1000 BIT3=1是有中断请求,BIT7=1是忙 */     }     printf("ok2 \n");     /* 读1F0H数据寄存器 */     p=0;     for(i=0; i256; i++)     {        j=inport(BASEADDR1F0);                /* 应该要一次读出2字节,而不是1字节! 所以用inport 。        硬盘中就是高字节在后, inport读出来就是高字节放在高字节上。        比如硬盘中是11 22,inport读出来就是0x2211        */        printf("%02X %02X ",(unsigned char) j, (unsigned char) (j8) );        p++;        if(p=8)        {            /*printf("\n");*/            p=0;        }            }       return; }     void main() {     hdinfor2(); }     (4)DOS下运行 在DOS下运行,肯定失败,因为这里是SATA AHCI控制器,没有传统的IDE端口。 在虚拟机下DOS运行,OK,成功。       八、    直接读取SATA硬盘之(一)、SATA AHCI控制器、SATA硬盘   在电脑上,连接结构是这样的:   CPU――数据总线、地址总线、控制总线――PCI控制器――PCI总线――AHCI控制器――串行硬盘线――SATA硬盘   SATA硬盘没有直接挂在PCI的总线上,所以CPU无法直接访问到它,CPU只能访问AHCI控制器。 AHCI控制器与SATA硬盘之间是通过SATA协议进行通讯的,这个可以不用管它,只需要考虑如何访问AHCI控制器即可。 也就是说,AHCI控制器把SATA接口封装掉了,内部完成与SATA硬盘之间的电气信号连接、协议通讯。我们只需要访问AHCI控制器,大大简化了操作。   PCI转SATA口的转换卡,也能接SATA硬盘,上面也是带了控制器,原理是一样的,不做研究。   如果用单片机直接控制SATA硬盘: 单片机――串行硬盘线――SATA硬盘 个人认为这几乎是不可能的事情,串行信号速率太高了,物理电气信号连接单片机很困难,更何况SATA通讯协议又很复杂。 所以要接一个控制器,让控制器来代劳。 单片机――控制器――串行硬盘线――SATA硬盘 控制器当然不限于AHCI控制器这么复杂的东东,可以是转成简单一些的,比如USB To SATA接口芯片、SATA转IDE的转换卡等等,都可以。(个人观点)   AHCI控制器是一个PCI设备,访问起来比较复杂。需要先得到它的“PCI配置空间”信息,从而得到控制器的“内存空间”地址,再对“内存空间”进行读写,达到访问AHCI控制器的目的。              
  • 热度 24
    2012-3-22 15:55
    3296 次阅读|
    0 个评论
    在新安装的 ubuntu 中,前一阵一直没有找到合适的方法来编译 .asm 文件到 .exe 文件来进行汇编语言的学习,上网搜素了一下,今天终于成功的把这个环境搭建好了,主要还是对于软件的安装和配置相应的环境。   在 ubuntu 中我们使用的软件是 dosemu ,这也是微机原理的老师所推荐的,所以就用这个好了,不过其实在 ubuntu 中有,而且也是一个软件,是名为 nasm 的东西,这个我没有尝试过,不过看样子应该是可以使用的,在这里,我们安装名为 dosemu 的软件,从名字上我们就可以看出来是对于 dos 的一个仿真的环境,好了,不管如果,到这里我们已经成功了一半,刚开始安装完后(用 ubuntu 的软件中心中安装,全自动化,也是对于初学者最好的方式),你应该就可以使用其中的 debug 的功能了,具体的用法在这里就不再说了,主要是在 dosemu 中是以 d 盘为主目录的,当然这也是虚拟的,不过其中的对应是很重要的,在 ubuntu 中的主文件系统中,也就是桌面所在的文件夹,你可以新建一个文件夹,可以名为 dosemu (最好不要起名字为 dos ),然后在这里面,我们首先在网上寻找一个 masm5 的文件(最好是 .tar.gz 的形式),然后放到你的前面新建的文件夹中(这里是 dosemu 文件夹),解压(这里可以和 windows 中操作方法一样,也可一用指令,不过开始的时候就偷一点懒啦)。   好了,环境已经搭建完毕,现在可以开始我们的编程了,汇编的具体的过程是首先编写 .asm 文件,然后用 masm.exe (在解压后的 masm5 文件夹中有这个东西),用 masm 指令编程 obj 文件,然后用 link 指令编成 exe 文件,这就是一个在 win dos 中的可以执行的文件了,好了,你已经差不多完成了整个的流程了。恭喜你自己吧!唯一在这里必须注意到的,是必须把你前面编写的 .asm 文件放在你的 masm5 文件夹中,然后你在 dosemu 中进入相应的文件夹中就可以使用其中的 masm 和 link 了,在外面就没有办法使用,可能是查找的范围的限定吧,我之前没有成功就是这个原因了。  
  • 热度 21
    2012-3-22 12:18
    1098 次阅读|
    0 个评论
    在dos中调试我们缩写的汇编代码是一件对于电子学生来说常有的事情,在这里就俩介绍一下相关的知识,在这里,我使用一个示例的代码,这个代码其实没有很大的作用,就是一个有一个循环体的程序,在程序的最后,我们将所想要看到的dx寄存器中(dl)的内容打印出来,其实这个程序开始的目的也就在于调试,因为之前不明白怎样在dosemu(这个上一篇有涉及,就是在ubuntu中的学习汇编的一个工具,通过这个工具,我们可以方便的学习汇编,当然,在这之前的环境的配置也是比较麻烦的,不过按照我的步骤,相信不是很麻烦),好了,继续我们的汇编之旅。 首先,我们将代码写好,具体的编译过错成不再详细的讲解了,贴上代码: stack segment STACK      DW 128 DUP(?) stack ENDS data  SEGMENT  PARA  'data' data ENDS code SEGMENT PARA 'code'      ASSUME cs:code , ds:data , ss:stack main   PROC FAR        push  ds        mov cx,11;        mov dl,00  xun:  inc dx        dec cx         cmp cx,00         ja xun     mov ah,2     int 21h     ret main ENDP code ENDS      END   main 这个代码是从我的第一个helloworld的代码中改过来的,当然,初学汇编,肯定会有代码上不太规范的地方,还请大家指正! 好了,在最后,我们调用的是21号软中断中的2号功能,从对这个功能的描述中,我们可以看到这个功能是用来显示输出的,而入口的参数就是DL中的内容,所以,这样我们就可以看到DL中的内容了,想想还真是有趣,为了这样的调试的目的写了这样的代码,最后还是用正规的调试方法来调试看DL中的内容,不过不管这些了,接下来我们编译,用dosemu中的masm和link两个指令可以编译,如果成功的话,最后我们可以得到我们想要的exe程序,当然,ubuntu里面是没有办法来运行.exe程序的,但是dosemu十一个模拟式的环境,所以可以在这里面运行和调试,编译完毕,我们有了相应的.exe程序,现在打开dosemu(这个如果尤有问题就去百度一下吧),进入相应的有你的masm.exe和link.exe和debug.exe(没有debug这个也没事,这个dosemu是自带的,主要是进入有你前面生成的编译完的.exe程序的目录,好让你的dosemu找到,准确的说应该是debug找到),好了,进入目录,在命令行中输入debug xxx.exe(xxx就是你的编译好了得到的exe程序),然后你用p指令进行程序的跟进,这样你就可以看到每一条指令执行以后的寄存器情况(当然也就包括我们的dx这个寄存器啦)还有下一条指令,基本上你就可以完成所有的调试工作了。好了,恭喜你自己吧,汇编可不是那么好学的,有了这个,我们要更奋力的学习啦!
  • 热度 25
    2010-11-12 00:26
    1582 次阅读|
    2 个评论
    大部分PCI卡,如PCI声卡、PCI显卡、PCI数字I/O卡、PCI A/D、D/A采集卡等均可在DOS平台(实模式)进行编程,具体方法是使用汇编语言调用PCI BIOS中断1AH,调用参数及调用细节可参阅“PCI BIOS Specification Ver2.x”,调用实例可参阅“CH365 PCI总线接口芯片 中文手册”。有几点要注意: 1、主板上必须有PCI BIOS,一般只要有PCI插槽或PC104+总线的就有(486以上主板都有)。 2、PCI总线的一些先进技术,如全速操作方式、PnP等在DOS下无法实现,只能在Windows保护模式才能使用。 3、DOS6.0只支持16位方式, DOS7.0支持32位方式,而64位方式则只有在Windows保护模式才能用到了。 顺便指出,现在已有DOS平台下的USB鼠标、键盘和U盘等设备驱动程序了,在网上可以下载到。
  • 热度 29
    2010-11-9 19:24
    2834 次阅读|
    5 个评论
    虽然目前DOS系统已很少使用,但在工业控制等实时要求很强的领域使用x86处理器的嵌入式系统中(PC104、Mini-ITX),DOS依然是首选操作系统。 USB是目前最常用的外设接口,在DOS下使用USB设备需要USB设备的驱动程序,比如OHCI/UHCI可以驱动USB鼠标等设备,USB_CD可以驱动USB光驱等设备,DUSE可以驱动USB硬盘、光驱、软驱等设备,Motto Hairu可以用转为ASPI的方法来驱动USB接口的软盘、硬盘、光驱、闪存盘(例如U盘等),而USB4DOS则可以驱动其它USB设备(不过USB4DOS不是免费软件)。 下面以U盘为例介绍如何在DOS下使用USB设备: 1、制作一张Windows 98启动盘。 2、下载Mhairudos、Kxlrw40an两个文件。然后将Mhairudos.zip解压,从中提取Di1000dd.sys文件备用;Kxlrw40an.exe是自解压文件,运行后会生成F2H目录,将该目录下的RAMFD.SYS、USBCD.SYS和Usbaspi.sys文件连同刚才得到的Di1000dd.sys文件一起复制到启动盘的根目录下。 提示:Di1000dd.sys文件是DOS环境下USB设备的驱动程序,RAMFD.SYS、USBCD.SYS和Usbaspi.sys文件则来自于日本松下公司于2003年开发的一个DOS环境下USB设备应用解决方案,其开发目的本来是用在松下公司自己生产的设备上,但只要你的电脑主板南桥的制造商是Intel、NEC、nVIDIA、VIA或者SIS之一,那么该程序就一样适用。另外使用这种方法可以在DOS环境下驱动采用较新的OHCI界面和传统UHCI界面的两种USB1.1设备,以及EHCI界面下的USB2.0设备。 3、在启动盘中找到Config.sys文件,用“记事本”将其打开,加入以下两行代码: device=a:\usbaspi.sys device=a:\di1000dd.sys 4、将需要在DOS环境下使用的USB设备与电脑主板连接,然后重启电脑进入BIOS,将第一启动装置改为软盘,按F10键保存退出。 由于要读取USB驱动,因此电脑的启动时间会比平时稍长——启动盘会先扫描主板的USB端口,如果找到端口上的USB设备,则为其分配一个ID识别号码(即盘符),循环往复直到所有的USB设备侦测完毕。 提示:USB设备占用的盘符从Windows界面下的光盘盘符开始,虚拟盘(即A盘的硬盘映射)和物理光盘的盘符依次向后排。假设你在DOS环境下启用了一个闪盘,而原来的硬盘分区到H盘结束,那么现在闪盘、虚拟盘和光盘的盘符就是I、J和K。
相关资源
  • 所需E币: 4
    时间: 2023-2-12 14:45
    大小: 1.32MB
    上传者: ZHUANG
    DoS攻击下不确定网络控制系统基于事件触发机制的鲁棒有限时间可靠控制.
  • 所需E币: 0
    时间: 2023-2-12 14:39
    大小: 400.02KB
    上传者: ZHUANG
    DoS攻击下网络化控制系统基于观测器的记忆型事件触发预测控制
  • 所需E币: 1
    时间: 2022-9-30 20:26
    大小: 20MB
    上传者: 西风瘦马
    DOS原理.基本pdf
  • 所需E币: 0
    时间: 2022-9-19 23:55
    大小: 2.66KB
    上传者: ywxq
    这十多年前一直想写的程序,因不被相信,嘲笑,欺骗。生活压力,工作压力等等,一直被搁置。现在放空一切,对外公开。一电路图绘制程序,全键盘操作。大小不足10k,同几十兆,几百兆的软件,不同,简单能用。a是坐标向左边移动l是坐标向右边移动u是坐标向上移动v是坐标向下移动y是显示菜单此时按下0到9键会画下电子元件c是复制20*20点范围内图像p是粘贴已复制内容退格键是删除20*20内图像z是撤销重回上一步+号是增加坐标步进点数-号是减少坐标步进点数这程序要在dos图图形模式下工作,y-eda是主程序,saveram是保存程序
  • 所需E币: 0
    时间: 2022-9-22 09:42
    大小: 3.61KB
    上传者: ywxq
    这十多年前一直想写的程序,因不被相信,嘲笑,欺骗。生活压力,工作压力等等,一直被搁置。现在放空一切,对外公开。一电路图绘制程序y-eda,全键盘操作。大小不足10k,同几十兆,几百兆的软件,不同,简单能用。a是坐标向左边移动。l是坐标向右边移动。u是坐标向上移动。v是坐标向下移动。y是显示菜单此时按下0到9键会画下电子元件。c是复制20*20点范围内图像。p是粘贴已复制内容。退格键是删除20*20内图像z是撤销重回上一步。+号是增加坐标步进点数。-号是减少坐标步进点数。确认键是退出。saveram-sebc.bmp是将绘制的图像保存为ebc.bmp文件,readbmpebc.bmp是查看图像,vga是dos下的显示驱动程序。
  • 所需E币: 0
    时间: 2022-6-17 11:42
    大小: 37.3MB
    上传者: eisbergeisberg
    TheMS-DOSEncyclopedia(1988)作者 Foreword)Duncan,Ray(GeneralEditor)(BillGatesContentsForeword byBillGatesPreface byRayDuncanIntroductionSectionI:TheDevelopmentofMS-DOSSectionII:ProgrammingintheMS-DOSEnvironmentSectionIII:UserCommandsSectionIV:ProgrammingUtilitiesSectionV:SystemCallsAppendixA:MS-DOSVersion3.3AppendixB:CriticalErrorCodesAppendixC:ExtendedErrorCodesAppendixD:ASCIIandIBMExtendedASCIICharacterSetsAppendixE:EBCDICCharacterSetAppendixF:ANSI.SYSKeyandExtendedKeyCodesAppendixG:FileControlBlock(FCB)StructureAppendixH:ProgramSegmentPrefix(PSP)StructureAppendixI:8086/8088/80286/80386InstructionSetsAppendixJ:CommonMS-DOSFilenameExtensionsAppendixK:Segmented(New).EXEFileHeaderFormatAppendixL:IntelHexadecimalObjectFileFormatAppendixM:8086/8088SoftwareCompatibilityIssuesAppendixN:AnObjectModuleDumpUtilityAppendixO:IBMPCBIOSCallsFiguresIndexes
  • 所需E币: 1
    时间: 2022-5-5 14:36
    大小: 19.77MB
    上传者: 西风瘦马
    DOS原理与结构_10205403_刘育刚主编_哈尔滨....pdf
  • 所需E币: 0
    时间: 2022-3-30 12:33
    大小: 38.64MB
    上传者: eisbergeisberg
    《未公开的DOS核心技术》是一本从汇编和底层C语言讲解windows驱动的经典书籍。书中讲述了很多汇编或C驱动的一些独特的技术。技术性很强。本书详细解释各种版本的DOS技术手册漏掸的DOS功能。(美)舒尔曼(Schulman,Andrew)等著北京:,清华大学出版社:,199208
  • 所需E币: 1
    时间: 2021-9-26 16:00
    大小: 670.14KB
    上传者: zendy_731593397
    GRUBFORDOS工具包
  • 所需E币: 0
    时间: 2021-4-13 17:29
    大小: 26.78KB
    上传者: LiuSirSZ
    DOS命令大全.rar
  • 所需E币: 0
    时间: 2020-9-9 23:15
    大小: 100.5KB
    上传者: samewell
    DOS命令大全.doc
  • 所需E币: 4
    时间: 2019-12-26 12:32
    大小: 1.67MB
    上传者: 2iot
    吐血共享,uCGUIForBC3.0ForDOS让天下所有穷苦大众都玩GUI!……
  • 所需E币: 3
    时间: 2019-12-25 23:12
    大小: 20.64KB
    上传者: 微风DS
    TMS320F240反组译程序(DOS版本)……
  • 所需E币: 4
    时间: 2019-12-25 22:59
    大小: 36.5KB
    上传者: 2iot
    最近做成功了一个编程器,全部资料是本人在一个国外网站(http://scorpius.spaceports.com/~mpu51/eprom/eprom.htmlorhttp://se-ed.net/mpu51/eprom/eprom.html#SCHPCB)上下载的,使用论谈:(http://www.willem.org/cgi-bin/forumdisplay.cgi?action=topics&forum=English+Forum&number=1&DaysPrune=&LastLogin=),网上提供了详细的制作资料,包括SCH,PCB,DOS与Windows9x/Me/2000下的驱动软件。……
  • 所需E币: 5
    时间: 2019-12-25 22:59
    大小: 31.16KB
    上传者: wsu_w_hotmail.com
    读取硬盘资料的软件(dos版本)……
  • 所需E币: 4
    时间: 2019-12-25 15:41
    大小: 239.53KB
    上传者: rdg1993
    介绍一种飞行数据采集系统的设计与实现.该系统基于LPC2138ARM7和USOSⅡ嵌入式实时操作系统,具有实时、高频率的飞行数据采集功能;提供的USBHST接口,可使用普通U盘读取数据,同时系统提供了仿DOS的人机接口命令,方便用户对系统内数据的管理.该系统为小型无人机建模提供了技术支持.;堪墓鍪羹豳谜唑型型型型塑!基于RTOS硇毪行数据采集系统陈杰,蒋玉峰(海军装备研究院信息工程所,北京102249)摘要:介绍一种飞行数据采集系统的设计与实现。该系统基于LPC2138ARM7和USOSII嵌入式实时操作系统,具有实时、高频率的飞行数据采集功能;提供的usBHST接口,可使用普通u盘读取数据,同时系统提供了仿DOS的人机接口命令,方便用户对系统内数据的管理。该系统为小型无人机建模提供了技术支持。关键词:【PC2138USOSII无人机AsystembasedonRTOSforcollectingaerodataCHENJie,JL~NGYuFe“g……
  • 所需E币: 5
    时间: 2019-12-25 15:27
    大小: 39.47KB
    上传者: wsu_w_hotmail.com
    测试工具专栏……
  • 所需E币: 3
    时间: 2019-12-25 12:41
    大小: 4.41KB
    上传者: wsu_w_hotmail.com
    硬盘分区表和文件分配表格式……
  • 所需E币: 3
    时间: 2019-12-25 10:27
    大小: 799.71KB
    上传者: 16245458_qq.com
    汇编语言程序设计第5章汇编语言程序设计汇编语言(AssemblyLanguage)是一种面向CPU指令系统的程序设计语言,它采用指令系统的助记符来表示操作码和操作数,用符号地址表示操作数地址,因而易记、易读、易修改,给编程带来很大方便。用汇编语言编写的程序能够直接利用硬件系统的特性,直接对位、字节、字寄存器、存储单元、I/O接口等进行处理,同时也能直接使用CPU指令系统和指令系统提供的各种寻址方式编制出高质量的程序,这种程序不但占用内存空间少,而且执行速度快。所以计算机高级技术人员大量使用汇编语言来编写计算机系统程序,实时通信程序和实时控制程序等。用汇编语言编写的源程序在输入计算机后,需要将其翻译成目标程序,计算机才能执行相应指令,这个翻译过程称为汇编,完成汇编任务的程序称为汇编程序。8086系统中常用的汇编程序是标准汇编程序(ASM)和宏汇编程序(MASM),因此除了指令系统外,还要了解(MASM)中的标号、表达式、伪指令,必须按MASM中规定的格式来编写源程序,才能正确汇编成可执行程序。5.1汇编语言源程序的结构5.1.1分段结构鉴于8086系列微处理器都是采用存储器分段管理,其汇编语言都是以逻辑段为基础,按段的概念来组织代码和数据的,因此作为用汇编语言编写的源程序,其结构上具有以下特点:(1)由若干逻辑段组成,各逻辑段由伪指令语句定义和说明;(2)整个源程序以END伪指令结束;(3)每个逻辑段由语句序列组成,以SEGMENT语句开始,以ENDS语句结束。下面先看一个完整的用汇编语言编写程序的格式。【例5.1】……
  • 所需E币: 5
    时间: 2019-12-25 10:27
    大小: 77.81KB
    上传者: 16245458_qq.com
    DOS系统功能调用表附录DDOS系统功能调用表(INT21H)功能号功能描述入口参数出口参数(AH)00H程序终止(同INT20H)CS=程序段前缀PSP―01H键盘输入并回显单字符―AL=读入字符的ASCII02H单字符显示输出DL=输出字符―03HCOM1输入―AL=输入字符04HCOM1输出DL=输出字符―05H打印单字符DL=输出字符―DL=FF(输入)06H直接控制台I/OAL=输入字符DL=字符(输出)07H键盘输入无回显―AL=输入字符键盘输入无回显0……