USB系列之五:用汇编实现的一些USB功能

前面的USB系列一至四,实现了我们需要的一些USB功能,但都是用C语言的32位代码,之后我们插进了三篇关于DOS下设备驱动程序的文章,我们现在应该清楚,当我们要在DOS下写一个U盘的驱动时,最好使用汇编语言,而且不得不在实模式下编程。

基于这样一个原因,本文计划把《USB系列二》到《USB系列四》中的三段程序代码,用汇编语言再重新实现一遍,而且使用16位的8086模式编程,在下载下面的源代码之前,希望读者能够认真阅读USB系列以前所有的文章,最好能把其中的代码都看明白并亲自试一试,否则可能会对下面的内容不知所云。

以下是USB系列文章列表:

《USB系列之一:列出你的USB设备》
    《USB系列之二:读取USB设备的描述符》
    《USB系列之三:从你的U盘里读出更多的内容》
    《USB系列之四:向U盘上写数据》

以下是本文奉献给大家的汇编源代码:

与《USB系列之二:读取USB设备的描述符》对应的源代码下载:
    http://blog.hengch.com/source/usb-view-asm.zip

与《USB系列之三:从你的U盘里读出更多的内容》对应的源代码下载:
    http://blog.hengch.com/source/usb-reader-asm.zip

与《USB系列之四:向U盘上写数据》对应的源代码下载:
    htpp://blog.hengch.com/source/usb-write-asm.zip

所有程序均使用small模式,可以编译成COM文件。

实际使用的编译器为masm6.11,编译链接如下

masm xxxxxxx

link xxxxxxx /tiny

时间: 2024-07-30 18:02:12

USB系列之五:用汇编实现的一些USB功能的相关文章

USB系列之六:基于DOSUSB的简单U盘驱动程序

首先要说明的是,该驱动程序仅实现了部分块设备的功能,如果作为成品软件使用,会感觉性能比较差,而且有些功能(比如FORMAT)是不能完成的,发表此驱动程序的目的旨在说明USB的编程原理以及DOS下驱动程序的工作原理:同时要说明的是,此驱动程序仅支持32M(包括32M)以下的U盘,当然这个问题解决起来并不困难,有兴趣的读者可以在阅读本文并理解的基础上加以改进使其支持32M以上2G以下的U盘.    前面的博文中提到由于DOSUSB是在命令行加载的,如果从config.sys中加载这个基于DOSUSB

【iOS与EV3混合机器人编程系列之五】iOS_WiFi_EV3_Library 剖析之连接EV3

在上一篇文章中,我们讲解了如何用开源代码库CocoaAsyncSocket来实现iOS上的UDP和TCP数据通信.那么在本文中,我们将介绍在CocoaAsyncSocket的基础如何使用UDP和TCP连接EV3的机制. 之所以我们能够通过无线连接EV3,根本原因在于EV3的源代码内建了一套无线连接通信的机制. 这套机制是这样的: 1)EV3在连接到无线网络后,就不断地从3015端口发送UDP数据,数据的格式如下: Serial-Number: 0016533f0c1ePort: 5555Name

大屏设计系列之五——大屏设计语言分析

如果您想订阅本博客内容,每天自动发到您的邮箱中,请点这里 作者:蓝蓝 蓝蓝设计经常会接到大屏设计的项目,比如中国移动互联网监控大屏可视化设计及开发.太极集团承接的中央台应急指挥中心大屏可视化设计.交大思源承接的北京地铁轨道批挥中心大屏可视化设计.数码视讯展厅大屏可视化设计,在积累了一定经验的同时,也在不断的学习和丰富关于大屏设计的特点及数据可视化的表达方式. 数据可视化过滤了非常多的冗余信息,浓缩了最重要的信息,它的魅力就在于将枯燥的数据组织在一起,把最需要的那些编辑成一个故事.目前大数据那么流

oracle学习入门系列之五 内存结构、数据库结构、进程

oracle学习入门系列之五 内存结构.数据库结构.进程 上篇蛤蟆简单描述了oracle公司的数据库产品.其他产品及oracle软件的一些特点.干货虽有但是真心是比较少的,这篇开始就是以干货为主,其中夹杂一些扯淡的事情了.蛤蟆一直也在想如何能生动的通过这干巴巴的文字来描述着世界级的软件,太理论大家都看不下去,太实践又缺乏深度.想想自己上大学那会,老师的讲课,无不枯燥乏味啊,满满的兴趣尽是消耗殆尽.所以不能仿效之,我们得走自己特色的路.以最易懂的形式.比喻等手段描述深奥的计算机知识.走起~ 开篇问

WPF学习系列之五(WPF控件)

控件:    1.内容控件------这些控件能够包含嵌套的元素,为它们提供几乎无限的显示能力.内容控件包括Lable,Button 以及ToolTip类. 内容控件是更特殊的控件类型,它们可以包含(并显示)一块内容.从技术角度来讲,内容控件是可以包含单个嵌套元素的控件.与布局容器不同的是内容控件只能包含一个子元素,而布局控件只要愿意可以包含任意多个嵌套元素.              提示:当然,仍然可以在单个内容控件中放置大量内容-----诀窍是使用单个容器,比如,使用StackPanel面

ggplot2绘图入门系列之五:时间序列(完)

ggplot2包也能对时间序列数据绘图,但在处理上需要有些注意的地方.下面我们以上证指数为例进行作图,首先利用quantmod包从yahoo数据源获取从1997年以来的数据,存于变量SSEC中,抽取收盘数字,然后分别提取时间数据和指数数值,绘图结果如下图. 1 library(quantmod) 2 library(ggplot2) 3 getSymbols('^SSEC',src='yahoo',from = '1997-01-01') 4 close <- (Cl(SSEC)) 5 time

SCCM2012 R2实战系列之五:发现方法

打开SCCM2012的控制台 点击左侧栏的"管理"选项,然后展开"层次结构配置",点击"发现方法"来配置客户端发现. 勾选"启用Active Directory林发现"."发现Active Directory站点边界时自动创建这些站点边界"和"发现IP子网时自动创建这些子网的IP地址范围边界",并设置运行间隔时间,然后点击"应用".(我这里是实验环境,为了更快的看到效

企业内部IT一体化系列之五:基于SharePoint的IT服务台

之前我的文章有介绍过: 帮助台的页面如下: 这个站点的结构其实很简单,主要就是一个大的服务请求的自定义列表,下面加了一个文件列表的Webpart,文件路径是公司的打印服务器.右边是一个组织架构的webpart,是第三方的,就是把某个ou中的所有用户都展现出来. 大概讲下自定义列表的结构,这里的数据类型是SharePoint列表的类型,不是数据库的: 列名 数据类型 说明 ID ID 唯一值,自增长 服务请求 单行文本 用户对自己遇到的问题的简述 故障描述 多行文本 用户对自己遇到的问题的详细描述

给Ajax一个漂亮的嫁衣——Ajax系列之五(下)之序列化和反序列化

给Ajax一个漂亮的嫁衣——Ajax系列之五(下)之序列化和反序列化 标签: ajaxdictionaryjsonobject服务器function 2012-07-25 18:41 2242人阅读 评论(6) 收藏 举报  分类: Ajax(6)  版权声明:本文为博主原创文章,未经博主允许不得转载. Ajax最强悍的功能莫过于服务器和客户端之间的异步交互,他们在交互的时候不是通过soap协议等,而是通过回调函数,以Json的格式传送数据. 由于Json格式的限制,在很多情况下,稍微复杂一些的