- 综合系统类大小:126KB采用access数据库,有学号管理,图书管理,借阅管理。采用access数据库,有学号管理,图书管理,借阅管理。4 1040浏览会员免费
- 数据库应用大小:401KB封装了DAO对象,用于直接操纵access数据库 <br> 免费而且公开源码 <br> 个人感觉超过Diamond 封装了DAO对象,用于直接操纵access数据库 <br> 免费而且公开源码 <br> 个人感觉超过Diamond 4 1054浏览会员免费
- 综合系统类大小:1MB被我搞大后的左兄的Rich Explorer <br> 支持四种数据库:Access(ADODB, KADAO, Diamond), Interbase(未完善), Oracle(DOA, ODAC), Dbisam。支持更换贴子显示风格,还可自定义(从论坛下载或自己写XSL),用Access与Oracle数据库的速度都还可以,Dbisam也过得去,Interbase方面实在不熟,所以没有优化过。 <br> 这几天闹着好玩,把各种控件都装上用了一下,后来就干脆把这些控件都加到RE上来玩了。 :) 实际上谁会有多个数据库来存论坛的离线数据呢? 被我搞大后的左兄的Rich Explorer <br> 支持四种数据库:Access(ADODB, KADAO, Diamond), Interbase(未完善), Oracle(DOA, ODAC), Dbisam。支持更换贴子显示风格,还可自定义(从论坛下载或自己写XSL),用Access与Oracle数据库的速度都还可以,Dbisam也过得去,Interbase方面实在不熟,所以没有优化过。 <br> 这几天闹着好玩,把各种控件都装上用了一下,后来就干脆把这些控件都加到RE上来玩了。 :) 实际上谁会有多个数据库来存论坛的离线数据呢? 4 792浏览会员免费
- 编程资源大小:48MB本书主要介绍使用Access 2000进行数据库系统设计的最新概念。 全书分为七大部分,主要内容有:Access基础、最大限度地利用查询、 设计窗体和报表、在Intranet和Internet上发布数据、 集成Access与其他office 2000应用程序、使用高级Access技术、 Access应用的程序设计和转换。 本书叙述清晰、实用性强,是计算机应用、 开发人员及大专院校师生不可多得的参考书。本书主要介绍使用Access 2000进行数据库系统设计的最新概念。 全书分为七大部分,主要内容有:Access基础、最大限度地利用查询、 设计窗体和报表、在Intranet和Internet上发布数据、 集成Access与其他office 2000应用程序、使用高级Access技术、 Access应用的程序设计和转换。 本书叙述清晰、实用性强,是计算机应用、 开发人员及大专院校师生不可多得的参考书。5 595浏览会员免费
- 另类其它大小:160KB使用帮助:<br> 1、有两种方式,一种是把图象以二进制的形式写入数据,一种是只保存图片路径;<br> 2、支持Bmp与Jpg格式的图片;<br> 3、可以清除或导出图片为Bmp或Jpg格式;<br> 4、数据库采用Access数据库;<br> 5、程序中的数据控件采用ADO;<br> <br>使用帮助:<br> 1、有两种方式,一种是把图象以二进制的形式写入数据,一种是只保存图片路径;<br> 2、支持Bmp与Jpg格式的图片;<br> 3、可以清除或导出图片为Bmp或Jpg格式;<br> 4、数据库采用Access数据库;<br> 5、程序中的数据控件采用ADO;<br> <br>4 482浏览会员免费
- ODBC大小:28MB64位windows平台默认不安装Access的64位ODBC驱动,此下载将安装一系列组件,帮助在现有的 Microsoft Office 文件(例如 Microsoft Office Access 2010(*.mdb 和 *.accdb)文件和 Microsoft Office Excel 2010(*.xls、*.xlsx 和 *.xlsb)文件)与其他数据源(例如 Microsoft SQL Server)之间传输数据。还支持与现有文本文件建立连接。 此外,还会安装 ODBC 和 OLEDB 驱动程序,供应用程序开发人员在开发与 Office 文件格式连接的应用程序时使用。64位windows平台默认不安装Access的64位ODBC驱动,此下载将安装一系列组件,帮助在现有的 Microsoft Office 文件(例如 Microsoft Office Access 2010(*.mdb 和 *.accdb)文件和 Microsoft Office Excel 2010(*.xls、*.xlsx 和 *.xlsb)文件)与其他数据源(例如 Microsoft SQL Server)之间传输数据。还支持与现有文本文件建立连接。 此外,还会安装 ODBC 和 OLEDB 驱动程序,供应用程序开发人员在开发与 Office 文件格式连接的应用程序时使用。5 7744浏览会员免费
- 全国地址库大小:31MB3积分下载的,现在免费送给大家 包内含二个数据表 1、包含2014年全国邮政编码以及编码所对应的省/市/县区/具体地址的数据库,数据量庞大,约180万条记录; 2、包含2015年全国省/市/县区/街道四级区划数据库,支持树形结构展现,47000条记录;3积分下载的,现在免费送给大家 包内含二个数据表 1、包含2014年全国邮政编码以及编码所对应的省/市/县区/具体地址的数据库,数据量庞大,约180万条记录; 2、包含2015年全国省/市/县区/街道四级区划数据库,支持树形结构展现,47000条记录;5 885浏览会员免费
- ADO大小:121KB本文根据VCKBASE网站的上的《直接通过ADO操作Access数据库》 修改而来,版权归原作者/徐景周本文根据VCKBASE网站的上的《直接通过ADO操作Access数据库》 修改而来,版权归原作者/徐景周5 306浏览会员免费
- AnkhSvn大小:3MBAnkhSVN is a Subversion Source Control Provider for Microsoft Visual Studio 2005, 2008 and 2010. AnkhSVN provides source code management support to all project types supported by Visual Studio and allows you to perform the most common version control operations directly from inside the Microsoft Visual Studio IDE. The Pending Changes dashboard gives you a unique insight in your development process and provides easy access to the source code and issue management features. The deep source code control (SCC) integration allows you to focus on developing, while AnkhSVN keeps track of all your changes and provides you the tools to effectively handle your specific needs.AnkhSVN is a Subversion Source Control Provider for Microsoft Visual Studio 2005, 2008 and 2010. AnkhSVN provides source code management support to all project types supported by Visual Studio and allows you to perform the most common version control operations directly from inside the Microsoft Visual Studio IDE. The Pending Changes dashboard gives you a unique insight in your development process and provides easy access to the source code and issue management features. The deep source code control (SCC) integration allows you to focus on developing, while AnkhSVN keeps track of all your changes and provides you the tools to effectively handle your specific needs.5 210浏览会员免费
- access大小:403KBaeecss作业,一个仓库管理系统,可以实现仓库物资管理、仓库管理、库存查询、入库操作、入库查询、出库操作、出库查询。查询可以按物资类别,名称,所在仓库及入库、出库时间查询。aeecss作业,一个仓库管理系统,可以实现仓库物资管理、仓库管理、库存查询、入库操作、入库查询、出库操作、出库查询。查询可以按物资类别,名称,所在仓库及入库、出库时间查询。4 3976浏览会员免费
- 指纹考勤大小:27MBATT2008考勤软件(Ver 3.7.1 117)能管理员工出勤实况。准确方便!ATT2008考勤软件(Ver 3.7.1 117)能管理员工出勤实况。准确方便!5 594浏览会员免费
- Access大小:883KB给出了Access数据库的一些经典模板,包括:产品订单,图书管理,学生及课程管理,库存控制,健身记录,照片管理... ...给出了Access数据库的一些经典模板,包括:产品订单,图书管理,学生及课程管理,库存控制,健身记录,照片管理... ...4 4276浏览会员免费
- Access模板大小:2MB关于OFFICE 2007的 Access模板关于OFFICE 2007的 Access模板5 659浏览会员免费
- windowsapi大小:662KB第一章 Win32 API概论…………………………………………………………………………1 1.1 为什么使用Win32 API …………………………………………………………………1 1.2 Win32 API简介 …………………………………………………………………………1 1.3 综述………………………………………………………………………………………11 第二章 窗口管理函数(Windows Control Function) ……………………………………13 2.1 易用特性函数(Accessibility Features)…………………………………………13 2.2 按钮函数(Button)……………………………………………………………………20 2.3 插入标记(^)函数(Caret)…………………………………………………………21 2.4 组合框函数(Combo box) ……………………………………………………………24 2.5 通用对话框函数(Common Dialog Box) ……………………………………………25 2.6 标函数(Cursor)………………………………………………………………………36 2.7 对话框函数(Dialog Box)……………………………………………………………40 2.8 编辑控制函数(Edit Control)………………………………………………………54 2.9 图标函数(Icon)………………………………………………………………………54 2.10 键盘加速器函数(Keyboard Accelerator)……………………………………… 61 2.11 键盘输入函数(Keyboard InPut) …………………………………………………63 2.12 列表框函数(List box) ……………………………………………………………75 2.13 菜单函数(Menu) ……………………………………………………………………76 2.14 消息和消息队列函数(Message and Message Queue)……………………………90 2.15 鼠标输入函数(Mouse Input) ……………………………………………………100 2.16 多文档接口函数(Multiple Document Interface) ……………………………103 2.17 资源函数(Resource)………………………………………………………………105 2.18 滚动条函数(Scroll Bar)…………………………………………………………113 2.19 窗口函数(Window)…………………………………………………………………119 2.20 窗口类函数(Window Class)………………………………………………………144 2.21 窗口过程函数(Window Procedure)………………………………………………150 2.22 窗口属性函数(Window Property) ………………………………………………152 第三章 图形设备接口函数(Graphic Device Interface Function) …………………155 3.1 位图函数(Bitmap) …………………………………………………………………155 3.2 笔刷函数(Brush)……………………………………………………………………171 3.3 剪切函数(Clipping) ………………………………………………………………176 3.4 颜色函数(Color)……………………………………………………………………179 3.5 坐标空间与变换函数(Coordinate Space Transformation)……………………186 3.6 设备环境函数(Device Context) …………………………………………………195 3.7 填充形态函数(Filled shape) ……………………………………………………211 3.8 字体和正文函数(Font and Text)…………………………………………………215 3.9 ICM 2.0函数 …………………………………………………………………………238 3.10 线段和曲线函数(Line and Curve)………………………………………………295 3.11 图元文件函数(Metafile)…………………………………………………………300 3.12 多显示器函数(Multiple Display Monitors) …………………………………311 3.13 绘图函数和画图函数(Painting and Drawing)…………………………………313 3.14 路径函数(Path)……………………………………………………………………328 3.15 画笔函数(Pen) ……………………………………………………………………332 3.16 打印及打印假脱机程序函数(Printing and Print Spooler)…………………334 3.17 矩形函数(Rectangle) ……………………………………………………………371 3.18 区域函数(Region)…………………………………………………………………374 第四章 系统服务函数(System Service Function) ……………………………………383 4.1 访问控制函数(Access Control) …………………………………………………383 4.2 原子函数(Atom) ……………………………………………………………………406 4.3 客户/服务器访问控制函数(Client/Server Access Control) ………………409 4.4 剪贴板函数(Clipboard)……………………………………………………………431 4.5 通信函数(Communication)…………………………………………………………436 4.6 控制台函数(Console)………………………………………………………………444 4.7 数据解压库函数(Data Decompression Library) ………………………………463 4.8 调试函数(Debugging)………………………………………………………………466 4.9 设备输入输出函数(Device Input and Output)…………………………………472 4.10 动态数据交换函数(Dynamic Data Exchange) …………………………………474 4.11 动态数据交换管理函数(Dynamic Data Exchange Management)………………476 4.12 动态链接库函数(Dynamic-Link Library)………………………………………489 4.13 错误函数(Error) …………………………………………………………………496 4.14 事件日志函数(Event Logging) …………………………………………………499 4.15 文件函数(File)……………………………………………………………………503 4.16 文件安装库函数(File Installation Library) ………………………………542 4.17 文件映射函数(File Mapping)……………………………………………………546 4.18 文件系统函数 File System)………………………………………………………551 4.19 句柄和对象函数(Handle and Object)………………………………………………556 4.20 挂钩函数(Hook)………………………………………………………………………560 4.21 ImageHlp函数…………………………………………………………………………572 4.22 大整数操作函数(Iarge Integer Operations)……………………………………594 4.23 低层访问控制函数(Low-Level Access Control)………………………………596 4.24 LSAPI函数 …………………………………………………………………………617 4.25 邮槽函数(Mailslot)………………………………………………………………622 4.26 内存管理函数(Memory Management) ……………………………………………623 4.27 管道函数(Pipe) …………………………………………………………………655 4.28 电源管理函数(Power Management) …………………………………………… 663 4.29 进程和线程函数(Process and Thread)…………………………………………666 4.30 注册表函数(Registry)……………………………………………………………700 4.31 字符串操作函数(String Manipulation)……………………………………… 724 4.32 结构化异常处理函数(Structured Exception Handling) ……………………742 4.33 同步函数(Synchronization) ……………………………………………………745 4.34 系统信息函数(System Information)……………………………………………766 4.35 系统消息函数(System Message)…………………………………………………780 4.36 系统关机函数(System Shutdown) ………………………………………………781 4.37 磁带备份函数(Tape Backup) ……………………………………………………783 4.38 时间函数(Time)……………………………………………………………………789 4.39 计时器函数(Timer) ………………………………………………………………795 4.40 工具帮助函数(Tool Help) ………………………………………………………796 4.41 窗口站和桌面函数(Window Station and Desktop)……………………………799 4.42 Windows NT 4.0访问控制函数(Window NT 4.0 Access-Control)……………808 4.43 WinTrust函数(WinTrust)…………………………………………………………814 第五章 国际特性函数(International Peatures Punction)时性…………………………815 5.1 输入方法编辑函数(Input Method Editor)…………………………………………815 5.2 国家语言支持函数(National Language Support)………………………………… 828 5.3 Unicode和字符集函数(Unicode and Character Set)……………………………… 843 第六章 网络服务函数(Networding Service Function)……………………………………849 6.1 数据链路控制函数(DLC)………………………………………………………………849 6.2 网络函数(Net)…………………………………………………………………………849 6.3 NetBIOS函数……………………………………………………………………………896 6.4 网络DDE函数(Networking DDE)……………………………………………………897 6.5 RAS服务器管理函数(RAS Server Administration)………………………………901 6.6 远程访问服务函数(Remote Access Administration)………………………………910 6.7 服务函数(Service)……………………………………………………………………929 6.8 Windows网络函数(Windows Networking)……………………………………………930 附录1 如何在VB中调用DLL API ……………………………………………………………945 1 DLL API的声明……………………………………………………………………………945 2 DLL API的调用……………………………………………………………………………947 附录2 在Delphi中直接调用Windows API…………………………………………………953第一章 Win32 API概论…………………………………………………………………………1 1.1 为什么使用Win32 API …………………………………………………………………1 1.2 Win32 API简介 …………………………………………………………………………1 1.3 综述………………………………………………………………………………………11 第二章 窗口管理函数(Windows Control Function) ……………………………………13 2.1 易用特性函数(Accessibility Features)…………………………………………13 2.2 按钮函数(Button)……………………………………………………………………20 2.3 插入标记(^)函数(Caret)…………………………………………………………21 2.4 组合框函数(Combo box) ……………………………………………………………24 2.5 通用对话框函数(Common Dialog Box) ……………………………………………25 2.6 标函数(Cursor)………………………………………………………………………36 2.7 对话框函数(Dialog Box)……………………………………………………………40 2.8 编辑控制函数(Edit Control)………………………………………………………54 2.9 图标函数(Icon)………………………………………………………………………54 2.10 键盘加速器函数(Keyboard Accelerator)……………………………………… 61 2.11 键盘输入函数(Keyboard InPut) …………………………………………………63 2.12 列表框函数(List box) ……………………………………………………………75 2.13 菜单函数(Menu) ……………………………………………………………………76 2.14 消息和消息队列函数(Message and Message Queue)……………………………90 2.15 鼠标输入函数(Mouse Input) ……………………………………………………100 2.16 多文档接口函数(Multiple Document Interface) ……………………………103 2.17 资源函数(Resource)………………………………………………………………105 2.18 滚动条函数(Scroll Bar)…………………………………………………………113 2.19 窗口函数(Window)…………………………………………………………………119 2.20 窗口类函数(Window Class)………………………………………………………144 2.21 窗口过程函数(Window Procedure)………………………………………………150 2.22 窗口属性函数(Window Property) ………………………………………………152 第三章 图形设备接口函数(Graphic Device Interface Function) …………………155 3.1 位图函数(Bitmap) …………………………………………………………………155 3.2 笔刷函数(Brush)……………………………………………………………………171 3.3 剪切函数(Clipping) ………………………………………………………………176 3.4 颜色函数(Color)……………………………………………………………………179 3.5 坐标空间与变换函数(Coordinate Space Transformation)……………………186 3.6 设备环境函数(Device Context) …………………………………………………195 3.7 填充形态函数(Filled shape) ……………………………………………………211 3.8 字体和正文函数(Font and Text)…………………………………………………215 3.9 ICM 2.0函数 …………………………………………………………………………238 3.10 线段和曲线函数(Line and Curve)………………………………………………295 3.11 图元文件函数(Metafile)…………………………………………………………300 3.12 多显示器函数(Multiple Display Monitors) …………………………………311 3.13 绘图函数和画图函数(Painting and Drawing)…………………………………313 3.14 路径函数(Path)……………………………………………………………………328 3.15 画笔函数(Pen) ……………………………………………………………………332 3.16 打印及打印假脱机程序函数(Printing and Print Spooler)…………………334 3.17 矩形函数(Rectangle) ……………………………………………………………371 3.18 区域函数(Region)…………………………………………………………………374 第四章 系统服务函数(System Service Function) ……………………………………383 4.1 访问控制函数(Access Control) …………………………………………………383 4.2 原子函数(Atom) ……………………………………………………………………406 4.3 客户/服务器访问控制函数(Client/Server Access Control) ………………409 4.4 剪贴板函数(Clipboard)……………………………………………………………431 4.5 通信函数(Communication)…………………………………………………………436 4.6 控制台函数(Console)………………………………………………………………444 4.7 数据解压库函数(Data Decompression Library) ………………………………463 4.8 调试函数(Debugging)………………………………………………………………466 4.9 设备输入输出函数(Device Input and Output)…………………………………472 4.10 动态数据交换函数(Dynamic Data Exchange) …………………………………474 4.11 动态数据交换管理函数(Dynamic Data Exchange Management)………………476 4.12 动态链接库函数(Dynamic-Link Library)………………………………………489 4.13 错误函数(Error) …………………………………………………………………496 4.14 事件日志函数(Event Logging) …………………………………………………499 4.15 文件函数(File)……………………………………………………………………503 4.16 文件安装库函数(File Installation Library) ………………………………542 4.17 文件映射函数(File Mapping)……………………………………………………546 4.18 文件系统函数 File System)………………………………………………………551 4.19 句柄和对象函数(Handle and Object)………………………………………………556 4.20 挂钩函数(Hook)………………………………………………………………………560 4.21 ImageHlp函数…………………………………………………………………………572 4.22 大整数操作函数(Iarge Integer Operations)……………………………………594 4.23 低层访问控制函数(Low-Level Access Control)………………………………596 4.24 LSAPI函数 …………………………………………………………………………617 4.25 邮槽函数(Mailslot)………………………………………………………………622 4.26 内存管理函数(Memory Management) ……………………………………………623 4.27 管道函数(Pipe) …………………………………………………………………655 4.28 电源管理函数(Power Management) …………………………………………… 663 4.29 进程和线程函数(Process and Thread)…………………………………………666 4.30 注册表函数(Registry)……………………………………………………………700 4.31 字符串操作函数(String Manipulation)……………………………………… 724 4.32 结构化异常处理函数(Structured Exception Handling) ……………………742 4.33 同步函数(Synchronization) ……………………………………………………745 4.34 系统信息函数(System Information)……………………………………………766 4.35 系统消息函数(System Message)…………………………………………………780 4.36 系统关机函数(System Shutdown) ………………………………………………781 4.37 磁带备份函数(Tape Backup) ……………………………………………………783 4.38 时间函数(Time)……………………………………………………………………789 4.39 计时器函数(Timer) ………………………………………………………………795 4.40 工具帮助函数(Tool Help) ………………………………………………………796 4.41 窗口站和桌面函数(Window Station and Desktop)……………………………799 4.42 Windows NT 4.0访问控制函数(Window NT 4.0 Access-Control)……………808 4.43 WinTrust函数(WinTrust)…………………………………………………………814 第五章 国际特性函数(International Peatures Punction)时性…………………………815 5.1 输入方法编辑函数(Input Method Editor)…………………………………………815 5.2 国家语言支持函数(National Language Support)………………………………… 828 5.3 Unicode和字符集函数(Unicode and Character Set)……………………………… 843 第六章 网络服务函数(Networding Service Function)……………………………………849 6.1 数据链路控制函数(DLC)………………………………………………………………849 6.2 网络函数(Net)…………………………………………………………………………849 6.3 NetBIOS函数……………………………………………………………………………896 6.4 网络DDE函数(Networking DDE)……………………………………………………897 6.5 RAS服务器管理函数(RAS Server Administration)………………………………901 6.6 远程访问服务函数(Remote Access Administration)………………………………910 6.7 服务函数(Service)……………………………………………………………………929 6.8 Windows网络函数(Windows Networking)……………………………………………930 附录1 如何在VB中调用DLL API ……………………………………………………………945 1 DLL API的声明……………………………………………………………………………945 2 DLL API的调用……………………………………………………………………………947 附录2 在Delphi中直接调用Windows API…………………………………………………9534 557浏览会员免费
- DAO大小:1MB在 64 位 Win7 系统下安装某些老款建筑预算软件需要部署 DAO,故做了此安装包分享给大家在 64 位 Win7 系统下安装某些老款建筑预算软件需要部署 DAO,故做了此安装包分享给大家4 2489浏览会员免费
- 知识库大小:12MB个人代码知识库是将个人(或小团队)在平时的代码知识积累组织起来的小工具。以便在遗忘时查阅和学习。使开发人员管理知识点的有力助手。 特点:程序美观实用,提供多种语言的语法高亮显示代码。可以在本机实用,也可以多人联机实用,满足各种需要。全源码提供(运行后在实例文档的附件中),代码思路清晰,注释齐全,知识点丰富,非常适合教学及自学用途 别再说没有源代码啦!源代码在程序里面作为数据存放的。一运行程序就看得到源码的 另外,Access是2007格式的,用Office老版本用户会报错!抱歉,忽视了!安装这个即可http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=7554f536-8c28-4598-9b72-ef94e038c891个人代码知识库是将个人(或小团队)在平时的代码知识积累组织起来的小工具。以便在遗忘时查阅和学习。使开发人员管理知识点的有力助手。 特点:程序美观实用,提供多种语言的语法高亮显示代码。可以在本机实用,也可以多人联机实用,满足各种需要。全源码提供(运行后在实例文档的附件中),代码思路清晰,注释齐全,知识点丰富,非常适合教学及自学用途 别再说没有源代码啦!源代码在程序里面作为数据存放的。一运行程序就看得到源码的 另外,Access是2007格式的,用Office老版本用户会报错!抱歉,忽视了!安装这个即可http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=7554f536-8c28-4598-9b72-ef94e038c8914 1163浏览会员免费
- lucene大小:17MBlucene-2.4.1 官方源码、例子、Jar包、文档------下载不扣分,回帖加1分 Apache Lucene is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform. Apache Lucene is an open source project available for free download. Please use the links on the left to access Lucene.lucene-2.4.1 官方源码、例子、Jar包、文档------下载不扣分,回帖加1分 Apache Lucene is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform. Apache Lucene is an open source project available for free download. Please use the links on the left to access Lucene.5 145浏览会员免费
- 归属地大小:29MB包括全国手机号段记录:311404条 含170号段 数据日期:2015年1月包括全国手机号段记录:311404条 含170号段 数据日期:2015年1月5 221浏览会员免费
- Microsoft大小:13MBMicrosoft Data Access Components 2.6Microsoft Data Access Components 2.64 1121浏览会员免费
- 数据库应用大小:2MB全国邮政编码数据库(精确到乡镇级),MS Access数据库文件另外还有全国行政区划数据库全国邮政编码数据库(精确到乡镇级),MS Access数据库文件另外还有全国行政区划数据库4 540浏览会员免费
- 超市商品条码库大小:45MB超市商品条码库 超市商品条码库 超市商品条码库超市商品条码库 超市商品条码库 超市商品条码库4 412浏览会员免费
- MDAC大小:7MB解决.net FrameWork数据提供程序要求 Microsoft Data Access Components (MDAC) 。请安装Microsoft Data Access Components(MDAC)2.6或更高版本解决.net FrameWork数据提供程序要求 Microsoft Data Access Components (MDAC) 。请安装Microsoft Data Access Components(MDAC)2.6或更高版本5 1807浏览会员免费
- visual大小:137KBvs2010 access数据库访问实例 vs2010 access数据库访问实例 vs2010 access数据库访问实例 vs2010 access数据库访问实例vs2010 access数据库访问实例 vs2010 access数据库访问实例 vs2010 access数据库访问实例 vs2010 access数据库访问实例4 836浏览会员免费
- 弱电工程预算软件大小:2MB该弱电工程预算软件是作者在工程中制作而成的,其中价格可能会有很多变化,可自己修改。 打开运行该软件需要安装有OFFICE2000并且含有Access。 打印时如果不能显示全部内容,请重新设定一下纸张的左右边距。该弱电工程预算软件是作者在工程中制作而成的,其中价格可能会有很多变化,可自己修改。 打开运行该软件需要安装有OFFICE2000并且含有Access。 打印时如果不能显示全部内容,请重新设定一下纸张的左右边距。4 2049浏览会员免费
- Access大小:2MBMicrosoft Access数据库的驱动包Microsoft Access数据库的驱动包4 2252浏览会员免费
- 同义词词典大小:892KB同义词词典 中文同义词词库,access版本同义词词典 中文同义词词库,access版本4 1795浏览会员免费
- RAR大小:6MB通用销售管理系统delphi+access源代码+可执行文件+论文+开题报告+外文翻译+答辩ppt.rar通用销售管理系统delphi+access源代码+可执行文件+论文+开题报告+外文翻译+答辩ppt.rar5 154浏览会员免费
- MDB大小:8MB手机号码归属地数据库(Access版) 手机号码归属地数据库(Access版) 手机号码归属地数据库(Access版)手机号码归属地数据库(Access版) 手机号码归属地数据库(Access版) 手机号码归属地数据库(Access版)4 177浏览会员免费
- access密码清除大小:1MBaccess 数据库密码清除工具 用户名和密码里面有access 数据库密码清除工具 用户名和密码里面有4 693浏览会员免费
- 黄历数据库大小:10MB1901年到2100年,200年黄历数据1901年到2100年,200年黄历数据5 652浏览会员免费
- Architecture大小:2MB1 Introduction ......................................................................................... 4<br>1.1 Bluetooth Protocol Stack............................................................. 4<br>2 Protocols in Bluetooth Architecture.................................................. 6<br>2.1 Bluetooth Core Protocols ............................................................ 7<br>2.1.1 Baseband ....................................................................... 7<br>2.1.1.1 Audio................................................................ 7<br>2.1.2 Link Manager Protocol ................................................... 7<br>2.1.3 Logical Link Control and Adaptation Protocol................. 7<br>2.1.4 Service Discovery Protocol (SDP).................................. 8<br>2.2 Cable Replacement Protocol ...................................................... 8<br>2.2.1 RFCOMM....................................................................... 8<br>2.3 Telephony Control Protocol......................................................... 8<br>2.3.1 Telephony Control – Binary............................................ 8<br>2.3.2 Telephony Control – AT Commands .............................. 8<br>2.4 Adopted Protocols....................................................................... 9<br>2.4.1 PPP................................................................................ 9<br>2.4.2 TCP/UDP/IP ................................................................... 9<br>2.4.3 OBEX Protocol ............................................................... 9<br>2.4.3.1 Content Formats .............................................. 9<br>2.4.4 WAP............................................................................. 10<br>2.4.4.1 Content Formats ............................................ 11<br>3 Bluetooth Usage Models and Protocols ......................................... 12<br>3.1 File Transfer.............................................................................. 12<br>3.2 Internet Bridge .......................................................................... 12<br>3.3 LAN Access .............................................................................. 13<br>3.4 Synchronization ........................................................................ 14<br>3.5 Three-in-One Phone ................................................................. 14<br>3.6 Ultimate Headset ...................................................................... 15<br>4 Summary............................................................................................ 16<br>5 References......................................................................................... 17<br>6 Acronyms........................................................................................... 191 Introduction ......................................................................................... 4<br>1.1 Bluetooth Protocol Stack............................................................. 4<br>2 Protocols in Bluetooth Architecture.................................................. 6<br>2.1 Bluetooth Core Protocols ............................................................ 7<br>2.1.1 Baseband ....................................................................... 7<br>2.1.1.1 Audio................................................................ 7<br>2.1.2 Link Manager Protocol ................................................... 7<br>2.1.3 Logical Link Control and Adaptation Protocol................. 7<br>2.1.4 Service Discovery Protocol (SDP).................................. 8<br>2.2 Cable Replacement Protocol ...................................................... 8<br>2.2.1 RFCOMM....................................................................... 8<br>2.3 Telephony Control Protocol......................................................... 8<br>2.3.1 Telephony Control – Binary............................................ 8<br>2.3.2 Telephony Control – AT Commands .............................. 8<br>2.4 Adopted Protocols....................................................................... 9<br>2.4.1 PPP................................................................................ 9<br>2.4.2 TCP/UDP/IP ................................................................... 9<br>2.4.3 OBEX Protocol ............................................................... 9<br>2.4.3.1 Content Formats .............................................. 9<br>2.4.4 WAP............................................................................. 10<br>2.4.4.1 Content Formats ............................................ 11<br>3 Bluetooth Usage Models and Protocols ......................................... 12<br>3.1 File Transfer.............................................................................. 12<br>3.2 Internet Bridge .......................................................................... 12<br>3.3 LAN Access .............................................................................. 13<br>3.4 Synchronization ........................................................................ 14<br>3.5 Three-in-One Phone ................................................................. 14<br>3.6 Ultimate Headset ...................................................................... 15<br>4 Summary............................................................................................ 16<br>5 References......................................................................................... 17<br>6 Acronyms........................................................................................... 194 239浏览会员免费
- 管理系统大小:2MB该系统提供图书管理、借阅信息、读者管理3大块功能。 希望能给初学者提供帮助,同时希望高手多多斧正,多多教导。。该系统提供图书管理、借阅信息、读者管理3大块功能。 希望能给初学者提供帮助,同时希望高手多多斧正,多多教导。。5 922浏览会员免费
- 汉语词典大小:32MB蓝本为台湾教育部编《国语辞典》,现转为简体mdb版,版权归台湾教育部所有,只限学习,谢勿商用.蓝本为台湾教育部编《国语辞典》,现转为简体mdb版,版权归台湾教育部所有,只限学习,谢勿商用.5 1320浏览会员免费
- ADO对象操作ACCESS代码 ADO对象操作ACCESS代码5 227浏览会员免费
- VC++大小:41KBVC利用ODBC连接ACCESS数据库代码。具体解释http://www.zhwuya.com/index.php/vc-6-0-to-achieve-access-odbc-database-connectivity-absolute-available/VC利用ODBC连接ACCESS数据库代码。具体解释http://www.zhwuya.com/index.php/vc-6-0-to-achieve-access-odbc-database-connectivity-absolute-available/5 616浏览会员免费
- 计算机等级考试大小:3MB全国计算机等级考试二级Access上机模拟系统 几十套题 并且有详细答案 很多个都想找的东西全国计算机等级考试二级Access上机模拟系统 几十套题 并且有详细答案 很多个都想找的东西4 281浏览会员免费
- MDAC2.8大小:4MB重装MDAC是使用Access数据库时出现“没有注册类别”或者“未找到提供程序。该程序可能未正确安装。”的终级解决办法。 这个完整安装包是我在XP系统里面搜集windows\Common Files\System\目录下几个文件夹(ado、msadc、Ole DB)的所有文件汇集而成,XP是没问题的,vista和win7不适用。 安装方法: 1.右键点击【mdac.inf】这个文件,选择【安装】;(这个文件也可以在系统目录下【C:\WINDOWS\inf】找到,只是我们将它复制出来了,方便安装) 2.安装时会跳出让你选择“所需文件”,请输入压缩包里面“所需文件”所在的路径; 3.安装过程可能会跳出如下提示: 源文件: C:\Documents and Settings\Administrator\...\dao360.dll。 目标文件: C:\Program Files\Common Files\Microsoft Shared\...\dao360.dll。 目标文件已存在,而且比源文件要新。 改写较新的文件吗? 选择“否”,然后那个路径又变回“XXX\i386”,把它改回来,再继续,直到完成,即可安装成功。重装MDAC是使用Access数据库时出现“没有注册类别”或者“未找到提供程序。该程序可能未正确安装。”的终级解决办法。 这个完整安装包是我在XP系统里面搜集windows\Common Files\System\目录下几个文件夹(ado、msadc、Ole DB)的所有文件汇集而成,XP是没问题的,vista和win7不适用。 安装方法: 1.右键点击【mdac.inf】这个文件,选择【安装】;(这个文件也可以在系统目录下【C:\WINDOWS\inf】找到,只是我们将它复制出来了,方便安装) 2.安装时会跳出让你选择“所需文件”,请输入压缩包里面“所需文件”所在的路径; 3.安装过程可能会跳出如下提示: 源文件: C:\Documents and Settings\Administrator\...\dao360.dll。 目标文件: C:\Program Files\Common Files\Microsoft Shared\...\dao360.dll。 目标文件已存在,而且比源文件要新。 改写较新的文件吗? 选择“否”,然后那个路径又变回“XXX\i386”,把它改回来,再继续,直到完成,即可安装成功。5 1860浏览会员免费
- access大小:291KB超小access编辑工具集合<br>3个都可以脱离ACCESS软件独立打开MDB数据库,很方便.超小access编辑工具集合<br>3个都可以脱离ACCESS软件独立打开MDB数据库,很方便.4 153浏览会员免费
- 很不错,有容量限制,不会全书上传,只要分章上传了4 221浏览会员免费
- access大小:2MB希望对大家有所帮助~~~~呵呵~~~~~~~~~~希望对大家有所帮助~~~~呵呵~~~~~~~~~~5 682浏览会员免费
- 超简单access登录界面代码示例下载,登陆界面窗体代码大小:9MB超简单access登录界面代码示例下载,登陆界面窗体代码,这个代码我找了很久,终于找到一个最简单的,做出实体来了,供大家分享,不用再那么痛苦去找了超简单access登录界面代码示例下载,登陆界面窗体代码,这个代码我找了很久,终于找到一个最简单的,做出实体来了,供大家分享,不用再那么痛苦去找了5 1805浏览会员免费
- Access+VBA大小:7MB利用Access做的数据库系统 根据该酒店的具体情况,系统主要的功能包括: 基本资料管理:完成对酒店的各项基本资料管理,包括“职员资料管理”、“客房资料管理”、“客房类型管理”和“会员资料管理”。 消费结帐管理:该功能模块式本系统的重点,也是难点。实际上它由4个功能子模块组成:“预定记录管理”、“入住记录管理”、“消费明细管理”和“消费结帐管理”,在前3个模块的基础上,在“消费结帐管理”模块中除了可以对某一客户的某次消费记录进行保存,修改删除外,还可以实现“计算金额”,“交款结帐”和“打印帐单”等功能,最后进行系统资料更新。 记录查询:对本系统各项资料记录进行查询,包括“职员资料查询”、“客房资料查询”、“客房类型查询”、“会员资料查询”、“预定记录查询”、“入住记录查询”、“消费明细查询”和“消费结帐查询”8个记录的查询,也可以实现多条件交叉查询,它是一个完善系统不可缺少的重要组成部分。 用户管理:完成对用户的编辑、添加、删除等功能。利用Access做的数据库系统 根据该酒店的具体情况,系统主要的功能包括: 基本资料管理:完成对酒店的各项基本资料管理,包括“职员资料管理”、“客房资料管理”、“客房类型管理”和“会员资料管理”。 消费结帐管理:该功能模块式本系统的重点,也是难点。实际上它由4个功能子模块组成:“预定记录管理”、“入住记录管理”、“消费明细管理”和“消费结帐管理”,在前3个模块的基础上,在“消费结帐管理”模块中除了可以对某一客户的某次消费记录进行保存,修改删除外,还可以实现“计算金额”,“交款结帐”和“打印帐单”等功能,最后进行系统资料更新。 记录查询:对本系统各项资料记录进行查询,包括“职员资料查询”、“客房资料查询”、“客房类型查询”、“会员资料查询”、“预定记录查询”、“入住记录查询”、“消费明细查询”和“消费结帐查询”8个记录的查询,也可以实现多条件交叉查询,它是一个完善系统不可缺少的重要组成部分。 用户管理:完成对用户的编辑、添加、删除等功能。4 588浏览会员免费
- 图书管理信息系统大小:7MB图书管理信息系统(access版的数据库大作业设计)图书管理信息系统(access版的数据库大作业设计) 包含登陆界面、欢迎界面、查询界面、修改界面等图书管理信息系统(access版的数据库大作业设计)图书管理信息系统(access版的数据库大作业设计) 包含登陆界面、欢迎界面、查询界面、修改界面等5 2350浏览会员免费
- 学生信息管理系统大小:191KB学生信息管理系统(ASP+ACCESS) 功能: 学生基本信息管理 教师信息管理 成绩管理 课程管理 . . . . . . 管理员帐号:admin 密码:123456学生信息管理系统(ASP+ACCESS) 功能: 学生基本信息管理 教师信息管理 成绩管理 课程管理 . . . . . . 管理员帐号:admin 密码:1234564 286浏览会员免费
- CAN大小:6MBISO11898 CAN标准系列 包含5个部分,分别是ISO11898-1 到ISO11898-5,简单内容如下: ISO 11898-1-2003.pdf Data link layer and physical signalling ISO 11898-2-2003.pdf specifies the high-speed (transmission rates of up to 1 Mbit/s) medium access unit (MAU) SO 11898-3-2006 specifies characteristics of setting up an interchange of digital information between electronic control units of road vehicles equipped with the CAN at transmission rates above 40 kBit/s up to 125 kBit/s. ISO 11898-4-2004.pdf specifies time-triggered communication in the CAN ISO 11898-5-2007.pdf specifies the CAN physical layer for transmission rates up to 1 Mbit/s for use within road vehicles.ISO11898 CAN标准系列 包含5个部分,分别是ISO11898-1 到ISO11898-5,简单内容如下: ISO 11898-1-2003.pdf Data link layer and physical signalling ISO 11898-2-2003.pdf specifies the high-speed (transmission rates of up to 1 Mbit/s) medium access unit (MAU) SO 11898-3-2006 specifies characteristics of setting up an interchange of digital information between electronic control units of road vehicles equipped with the CAN at transmission rates above 40 kBit/s up to 125 kBit/s. ISO 11898-4-2004.pdf specifies time-triggered communication in the CAN ISO 11898-5-2007.pdf specifies the CAN physical layer for transmission rates up to 1 Mbit/s for use within road vehicles.5 612浏览会员免费
- swfupload大小:60KBswfupload+asp+access批量上传图片.目前没有实现AJAX回调显示图片功能,有高手帮忙完善下.swfupload+asp+access批量上传图片.目前没有实现AJAX回调显示图片功能,有高手帮忙完善下.4 151浏览会员免费
- 仓库管理系统大小:5MB我集合了网上的一些资料。花了大概一个星期,是自己做的。还比较齐全。老师检查了,也是我们这学期的课程设计。希望能对你有点启示!我集合了网上的一些资料。花了大概一个星期,是自己做的。还比较齐全。老师检查了,也是我们这学期的课程设计。希望能对你有点启示!4 3948浏览会员免费
- access补丁包大小:9MB必须安装“Microsoft Jet 4.0 Service Pack 8” 或更高版本以阻止不安全的表达式影响一般函数。必须安装“Microsoft Jet 4.0 Service Pack 8” 或更高版本以阻止不安全的表达式影响一般函数。4 1644浏览会员免费
- access大小:54KB因为学习业务的缘故从SAP NetWeaver 7.0 ABAP Trial Version再度改用R/3 4.71,Access Key真是个讨人厌的东西,以前的破解方式使用起来还是不太方便,如果操作失败了会是件很上火的事情。 听说过破解器,现在让我撞到了,下载,不知道用,名值对不上号,参数不知道该如何填写,一度怀疑自己的智商。现在看这篇博客的网友们除了懒虫,是不是也有怀疑自己智商的吧!呵呵!:) 每天试一下,郁闷了两天,终于搞定了! 下载:搜索下列任意文件名,压缩包14KB,解压后执行文件36KB。网上下吧,我不提供这个工具。 zapgui - generate sap r3 license keys.rar zapgui - generate sap r3 license keys.exe zapgui.exe因为学习业务的缘故从SAP NetWeaver 7.0 ABAP Trial Version再度改用R/3 4.71,Access Key真是个讨人厌的东西,以前的破解方式使用起来还是不太方便,如果操作失败了会是件很上火的事情。 听说过破解器,现在让我撞到了,下载,不知道用,名值对不上号,参数不知道该如何填写,一度怀疑自己的智商。现在看这篇博客的网友们除了懒虫,是不是也有怀疑自己智商的吧!呵呵!:) 每天试一下,郁闷了两天,终于搞定了! 下载:搜索下列任意文件名,压缩包14KB,解压后执行文件36KB。网上下吧,我不提供这个工具。 zapgui - generate sap r3 license keys.rar zapgui - generate sap r3 license keys.exe zapgui.exe5 416浏览会员免费
- ACCESS大小:135KB中国省市县数据库ACCESS中国省市县数据库ACCESS4 190浏览会员免费
- Access2010大小:28MBWindows64位操作系统Access2010数据库ODBC驱动Windows64位操作系统Access2010数据库ODBC驱动4 2732浏览会员免费
- Art大小:4MBYou are visitor as of October 17, 1996.<br>The Art of Assembly Language Programming<br><br>Forward Why Would Anyone Learn This Stuff?<br>1 What's Wrong With Assembly Language<br>2 What's Right With Assembly Language?<br>3 Organization of This Text and Pedagogical Concerns<br>4 Obtaining Program Source Listings and Other Materials in This Text<br><br>Section One: Machine Organization<br><br>Art of Assembly Language: Chapter One<br>Chapter One - Data Representation<br>1.0 - Chapter Overview<br>1.1 - Numbering Systems<br>1.1.1 - A Review of the Decimal System<br>1.1.2 - The Binary Numbering System<br>1.1.3 - Binary Formats<br>1.2 - Data Organization<br>1.2.1 - Bits<br>1.2.2 - Nibbles<br>1.2.3 - Bytes<br>1.2.4 - Words<br>1.2.5 - Double Words<br>1.3 - The Hexadecimal Numbering System<br>1.4 - Arithmetic Operations on Binary and Hexadecimal Numbers<br>1.5 - Logical Operations on Bits<br>1.6 - Logical Operations on Binary Numbers and Bit Strings<br>1.7 - Signed and Unsigned Numbers<br>1.8 - Sign and Zero Extension<br>1.9 - Shifts and Rotates<br>1.10 - Bit Fields and Packed Data<br>1.11 - The ASCII Character Set<br><br>1.12 Summary<br>1.13 Laboratory Exercises<br>1.13.1 Installing the Software<br>1.13.2 Data Conversion Exercises<br>1.13.3 Logical Operations Exercises<br>1.13.4 Sign and Zero Extension Exercises<br>1.13.5 Packed Data Exercises<br>1.14 Questions<br>1.15 Programming Projects<br><br>Chapter Two - Boolean Algebra<br>2.0 - Chapter Overview<br>2.1 - Boolean Algebra<br>2.2 - Boolean Functions and Truth Tables<br>2.3 - Algebraic Manipulation of Boolean Expressions<br>2.4 - Canonical Forms<br>2.5 - Simplification of Boolean Functions<br>2.6 - What Does This Have To Do With Computers, Anyway?<br>2.6.1 - Correspondence Between Electronic Circuits and Boolean Functions<br>2.6.2 - Combinatorial Circuits<br>2.6.3 - Sequential and Clocked Logic<br>2.7 - Okay, What Does It Have To Do With Programming, Then?<br>2.8 - Generic Boolean Functions<br><br>2.9 Laboratory Exercises<br>2.9.1 Truth Tables and Logic Equations Exercises<br>2.9.2 Canonical Logic Equations Exercises<br>2.9.3 Optimization Exercises<br>2.9.4 Logic Evaluation Exercises<br>2.10 Programming Projects<br>2.11 Summary<br>2.12 Questions<br><br>Chapter Three - System Organization<br>3.0 - Chapter Overview<br>3.1 - The Basic System Components<br>3.1.1 - The System Bus<br>3.1.1.1 - The Data Bus<br>3.1.1.2 - The Address Bus<br>3.1.1.3 - The Control Bus<br>3.1.2 - The Memory Subsystem<br>3.1.3 - The I/O Subsystem<br>3.2 - System Timing<br>3.2.1 - The System Clock<br>3.2.2 - Memory Access and the System Clock<br>3.2.3 - Wait States<br>3.2.4 - Cache Memory<br>3.3 - The 886, 8286, 8486, and 8686 "Hypothetical" Processors<br>3.3.1 - CPU Registers<br>3.3.2 - The Arithmetic & Logical Unit<br>3.3.3 - The Bus Interface Unit<br>3.3.4 - The Control Unit and Instruction Sets<br>3.3.5 - The x86 Instruction Set<br>3.3.6 - Addressing Modes on the x86<br>3.3.7 - Encoding x86 Instructions<br>3.3.8 - Step-by-Step Instruction Execution<br>3.3.9 - The Differences Between the x86 Processors<br>3.3.10 - The 886 Processor<br>3.3.11 - The 8286 Processor<br>3.3.12 - The 8486 Processor<br>3.3.12.1 - The 8486 Pipeline<br>3.3.12.2 - Stalls in a Pipeline<br>3.3.12.3 - Cache, the Prefetch Queue, and the 8486<br>3.3.12.4 - Hazards on the 8486<br>3.3.13 - The 8686 Processor<br>3.4 - I/O (Input/Output)<br>3.5 - Interrupts and Polled I/O<br><br><br>3.6 Laboratory Exercises<br>3.6.1 The SIMx86 Program - Some Simple x86 Programs<br>3.6.2 Simple I/O-Mapped Input/Output Operations<br>3.6.3 Memory Mapped I/O<br>3.6.4 DMA Exercises<br>3.6.5 Interrupt Driven I/O Exercises<br>3.6.6 Machine Language Programming & Instruction Encoding Exercises<br>3.6.7 Self Modifying Code Exercises<br>3.7 Programming Projects<br>3.8 Summary<br>3.9 Questions<br><br>Chapter Four - Memory Layout and Access<br>4.0 - Chapter Overview<br>4.1 - The 80x86 CPUs:A Programmer's View<br>4.1.1 - 8086 General Purpose Registers<br>4.1.2 - 8086 Segment Registers<br>4.1.3 - 8086 Special Purpose Registers<br>4.1.4 - 80286 Registers<br>4.1.5 - 80386/80486 Registers<br>4.2 - 80x86 Physical Memory Organization<br>4.3 - Segments on the 80x86<br>4.4 - Normalized Addresses on the 80x86<br>4.5 - Segment Registers on the 80x86<br>4.6 - The 80x86 Addressing Modes<br>4.6.1 - 8086 Register Addressing Modes<br>4.6.2 - 8086 Memory Addressing Modes<br>4.6.2.1 - The Displacement Only Addressing Mode<br>4.6.2.2 - The Register Indirect Addressing Modes<br>4.6.2.3 - Indexed Addressing Modes<br>4.6.2.4 - Based Indexed Addressing Modes<br>4.6.2.5 - Based Indexed Plus Displacement Addressing Mode<br>4.6.2.6 - MASM Syntax for 8086 Memory Addressing Modes<br>4.6.2.7 - An Easy Way to Remember the 8086 Memory Addressing Modes<br>4.6.2.8 - Some Final Comments About 8086 Addressing Modes<br>4.6.3 - 80386 Register Addressing Modes<br>4.6.4 - 80386 Memory Addressing Modes<br>4.6.4.1 - Register Indirect Addressing Modes<br>4.6.4.2 - 80386 Indexed, Base/Indexed, and Base/Indexed/Disp Addressing Modes<br>4.6.4.3 - 80386 Scaled Indexed Addressing Modes<br>4.6.4.4 - Some Final Notes About the 80386 Memory Addressing Modes<br>4.7 - The 80x86 MOV Instruction<br>4.8 - Some Final Comments on the MOV Instructions<br><br>4.9 Laboratory Exercises<br>4.9.1 The UCR Standard Library for 80x86 Assembly Language Programmers<br>4.9.2 Editing Your Source Files<br>4.9.3 The SHELL.ASM File<br>4.9.4 Assembling Your Code with MASM<br>4.9.5 Debuggers and CodeView'<br>4.9.5.1 A Quick Look at CodeView<br>4.9.5.2 The Source Window<br>4.9.5.3 The Memory Window<br>4.9.5.4 The Register Window<br>4.9.5.5 The Command Window<br>4.9.5.6 The Output Menu Item<br>4.9.5.7 The CodeView Command Window<br>4.9.5.7.1 The Radix Command (N)<br>4.9.5.7.2 The Assemble Command<br>4.9.5.7.3 The Compare Memory Command<br>4.9.5.7.4 The Dump Memory Command<br>4.9.5.7.5 The Enter Command<br>4.9.5.7.6 The Fill Memory Command<br>4.9.5.7.7 The Move Memory Command<br>4.9.5.7.8 The Input Command<br>4.9.5.7.9 The Output Command<br>4.9.5.7.10 The Quit Command<br>4.9.5.7.11 The Register Command<br>4.9.5.7.12 The Unassemble Command<br>4.9.5.8 CodeView Function Keys<br>4.9.5.9 Some Comments on CodeView Addresses<br>4.9.5.10 A Wrap on CodeView<br>4.9.6 Laboratory Tasks<br>4.10 Programming Projects<br>4.11 Summary<br>4.12 Questions<br>Section Two: Basic Assembly Language<br><br>Chapter Five - Variables and Data Structures<br>5.0 - Chapter Overview<br>5.1 - Some Additional Instructions: LEA, LES, ADD, and MUL<br>5.2 - Declaring Variables in an Assembly Language Program<br>5.3 - Declaring and Accessing Scalar Variables<br>5.3.1 - Declaring and using BYTE Variables<br>5.3.2 - Declaring and using WORD Variables<br>5.3.3 - Declaring and using DWORD Variables<br>5.3.4 - Declaring and using FWORD, QWORD, and TBYTE Variables<br>5.3.5 - Declaring Floating Point Variables with REAL4, REAL8, and REAL10<br>5.4 - Creating Your Own Type Names with TYPEDEF<br>5.5 - Pointer Data Types<br>5.6 - Composite Data Types<br>5.6.1 - Arrays<br>5.6.1.1 - Declaring Arrays in Your Data Segment<br>5.6.1.2 - Accessing Elements of a Single Dimension Array<br>5.6.2 - Multidimensional Arrays<br>5.6.2.1 - Row Major Ordering<br>5.6.2.2 - Column Major Ordering<br>5.6.2.3 - Allocating Storage for Multidimensional Arrays<br>5.6.2.4 - Accessing Multidimensional Array Elements in Assembly Language<br>5.6.3 - Structures<br>5.6.4 - Arrays of Structures and Arrays/Structures as Structure Fields<br>5.6.5 - Pointers to Structures<br>5.7 - Sample Programs<br>5.7.1 - Simple Variable Declarations<br>5.7.2 - Using Pointer Variables<br>5.7.3 - Single Dimension Array Access<br>5.7.4 - Multidimensional Array Access<br>5.7.5 - Simple Structure Access<br>5.7.6 - Arrays of Structures<br>5.7.7 - Structures and Arrays as Fields of Another Structure<br>5.7.8 - Pointers to Structures and Arrays of Structure<br><br><br>5.8 Laboratory Exercises<br>5.9 Programming Projects<br>5.10 Summary<br>5.11 Questions<br><br>Chapter Six - The 80x86 Instruction Set<br>6.0 - Chapter Overview<br>6.1 - The Processor Status Register (Flags)<br>6.2 - Instruction Encodings<br>6.3 - Data Movement Instructions<br>6.3.1 - The MOV Instruction<br>6.3.2 - The XCHG Instruction<br>6.3.3 - The LDS, LES, LFS, LGS, and LSS Instructions<br>6.3.4 - The LEA Instruction<br>6.3.5 - The PUSH and POP Instructions<br>6.3.6 - The LAHF and SAHF Instructions<br>6.4 - Conversions<br>6.4.1 - The MOVZX, MOVSX, CBW, CWD, CWDE, and CDQ Instructions<br>6.4.2 - The BSWAP Instruction<br>6.4.3 - The XLAT Instruction<br>6.5 - Arithmetic Instructions<br>6.5.1 - The Addition Instructions: ADD, ADC, INC, XADD, AAA, and DAA<br>6.5.1.1 - The ADD and ADC Instructions<br>6.5.1.2 - The INC Instruction<br>6.5.1.3 - The XADD Instruction<br>6.5.1.4 - The AAA and DAA Instructions<br>6.5.2 - The Subtraction Instructions: SUB, SBB, DEC, AAS, and DAS<br>6.5.3 - The CMP Instruction<br>6.5.4 - The CMPXCHG, and CMPXCHG8B Instructions<br>6.5.5 - The NEG Instruction<br>6.5.6 - The Multiplication Instructions: MUL, IMUL, and AAM<br>6.5.7 - The Division Instructions: DIV, IDIV, and AAD<br>6.6 - Logical, Shift, Rotate and Bit Instructions<br>6.6.1 - The Logical Instructions: AND, OR, XOR, and NOT<br>6.6.2 - The Shift Instructions: SHL/SAL, SHR, SAR, SHLD, and SHRD<br>6.6.2.1 - SHL/SAL<br>6.6.2.2 - SAR<br>6.6.2.3 - SHR<br>6.6.2.4 - The SHLD and SHRD Instructions<br>6.6.3 - The Rotate Instructions: RCL, RCR, ROL, and ROR<br>6.6.3.1 - RCL<br>6.6.3.2 - RCR<br>6.6.3.3 - ROL<br>6.6.3.4 - ROR<br>6.6.4 - The Bit Operations<br>6.6.4.1 - TEST<br>6.6.4.2 - The Bit Test Instructions: BT, BTS, BTR, and BTC<br>6.6.4.3 - Bit Scanning: BSF and BSR<br>6.6.5 - The "Set on Condition" Instructions<br>6.7 - I/O Instructions<br>6.8 - String Instructions<br>6.9 - Program Flow Control Instructions<br>6.9.1 - Unconditional Jumps<br>6.9.2 - The CALL and RET Instructions<br>6.9.3 - The INT, INTO, BOUND, and IRET Instructions<br>6.9.4 - The Conditional Jump Instructions<br>6.9.5 - The JCXZ/JECXZ Instructions<br>6.9.6 - The LOOP Instruction<br>6.9.7 - The LOOPE/LOOPZ Instruction<br>6.9.8 - The LOOPNE/LOOPNZ Instruction<br>6.10 - Miscellaneous Instructions<br>6.11 - Sample Programs<br>6.11.1 - Simple Arithmetic I<br>6.11.2 - Simple Arithmetic II<br>6.11.3 - Logical Operations<br>6.11.4 - Shift and Rotate Operations<br>6.11.5 - Bit Operations and SETcc Instructions<br>6.11.6 - String Operations<br>6.11.7 - Conditional Jumps<br>6.11.8 - CALL and INT Instructions<br>6.11.9 - Conditional Jumps I<br>6.11.10 - Conditional Jump Instructions II<br><br><br>6.12 Laboratory Exercises<br>6.12.1 The IBM/L System<br>6.12.2 IBM/L Exercises<br>6.13 Programming Projects<br>6.14 Summary<br>6.15 Questions<br><br>Chapter Seven - The UCR Standard Library<br>7.0 - Chapter Overview<br>7.1 - An Introduction to the UCR Standard Library<br>7.1.1 - Memory Management Routines: MEMINIT, MALLOC, and FREE<br>7.1.2 - The Standard Input Routines: GETC, GETS, GETSM<br>7.1.3 - The Standard Output Routines: PUTC, PUTCR, PUTS, PUTH, PUTI, PRINT, and PRINTF<br>7.1.4 - Formatted Output Routines: Putisize, Putusize, Putlsize, and Putulsize<br>7.1.5 - Output Field Size Routines: Isize, Usize, and Lsize<br>7.1.6 - Conversion Routines: ATOx, and xTOA<br>7.1.7 - Routines that Test Characters for Set Membership<br>7.1.8 - Character Conversion Routines: ToUpper, ToLower<br>7.1.9 - Random Number Generation: Random, Randomize<br>7.1.10 - Constants, Macros, and other Miscellany<br>7.1.11 - Plus more!<br>7.2 - Sample Programs<br>7.2.1 - Stripped SHELL.ASM File<br>7.2.2 - Numeric I/O<br><br><br>7.3 Laboratory Exercises<br>7.3.1 Obtaining the UCR Standard Library<br>7.3.2 Unpacking the Standard Library<br>7.3.3 Using the Standard Library<br>7.3.4 The Standard Library Documentation Files<br>7.4 Programming Projects<br>7.5 Summary<br>7.6 Questions<br><br>Chapter Eight - MASM: Directives & Pseudo-Opcodes<br>8.0 - Chapter Overview<br>8.1 - Assembly Language Statements<br>8.2 - The Location Counter<br>8.3 - Symbols<br>8.4 - Literal Constants<br>8.4.1 - Integer Constants<br>8.4.2 - String Constants<br>8.4.3 - Real Constants<br>8.4.4 - Text Constants<br>8.5 - Declaring Manifest Constants Using Equates<br>8.6 - Processor Directives<br>8.7 - Procedures<br>8.8 - Segments<br>8.8.1 - Segment Names<br>8.8.2 - Segment Loading Order<br>8.8.3 - Segment Operands<br>8.8.3.1 - The ALIGN Type<br>8.8.3.2 - The COMBINE Type<br>8.8.4 - The CLASS Type<br>8.8.5 - The Read-only Operand<br>8.8.6 - The USE16, USE32, and FLAT Options<br>8.8.7 - Typical Segment Definitions<br>8.8.8 - Why You Would Want to Control the Loading Order<br>8.8.9 - Segment Prefixes<br>8.8.10 - Controlling Segments with the ASSUME Directive<br>8.8.11 - Combining Segments: The GROUP Directive<br>8.8.12 - Why Even Bother With Segments?<br>8.9 - The END Directive<br>8.10 - Variables<br>8.11 - Label Types<br>8.11.1 - How to Give a Symbol a Particular Type<br>8.11.2 - Label Values<br>8.11.3 - Type Conflicts<br>8.12 - Address Expressions<br>8.12.1 - Symbol Types and Addressing Modes<br>8.12.2 - Arithmetic and Logical Operators<br>8.12.3 - Coercion<br>8.12.4 - Type Operators<br>8.12.5 - Operator Precedence<br>8.13 - Conditional Assembly<br>8.13.1 - IF Directive<br>8.13.2 - IFE directive<br>8.13.3 - IFDEF and IFNDEF<br>8.13.4 - IFB, IFNB<br>8.13.5 - IFIDN, IFDIF, IFIDNI, and IFDIFI<br>8.14 - Macros<br>8.14.1 - Procedural Macros<br>8.14.2 - Macros vs. 80x86 Procedures<br>8.14.3 - The LOCAL Directive<br>8.14.4 - The EXITM Directive<br>8.14.5 - Macro Parameter Expansion and Macro Operators<br>8.14.6 - A Sample Macro to Implement For Loops<br>8.14.7 - Macro Functions<br>8.14.8 - Predefined Macros, Macro Functions, and Symbols<br>8.14.9 - Macros vs. Text Equates<br>8.14.10 - Macros: Good and Bad News<br>8.15 - Repeat Operations<br>8.16 - The FOR and FORC Macro Operations<br>8.17 - The WHILE Macro Operation<br>8.18 - Macro Parameters<br>8.19 - Controlling the Listing<br>8.19.1 - The ECHO and %OUT Directives<br>8.19.2 - The TITLE Directive<br>8.19.3 - The SUBTTL Directive<br>8.19.4 - The PAGE Directive<br>8.19.5 - The .LIST, .NOLIST, and .XLIST Directives<br>8.19.6 - Other Listing Directives<br>8.20 - Managing Large Programs<br>8.20.1 - The INCLUDE Directive<br>8.20.2 - The PUBLIC, EXTERN, and EXTRN Directives<br>8.20.3 - The EXTERNDEF Directive<br>8.21 - Make Files<br>8.22 - Sample Program<br>8.22.1 - EX8.MAK<br>8.22.2 - Matrix.A<br>8.22.3 - EX8.ASM<br>8.22.4 - GETI.ASM<br>8.22.5 - GetArray.ASM<br>8.22.6 - XProduct.ASM<br><br><br>8.23 Laboratory Exercises<br>8.23.1 Near vs. Far Procedures<br>8.23.2 Data Alignment Exercises<br>8.23.3 Equate Exercise<br>8.23.4 IFDEF Exercise<br>8.23.5 Make File Exercise<br>8.24 Programming Projects<br>8.25 Summary<br>8.26 Questions<br><br>Chapter Nine - Arithmetic and Logical Operations<br>9.0 - Chapter Overview<br>9.1 - Arithmetic Expressions<br>9.1.1 - Simple Assignments<br>9.1.2 - Simple Expressions<br>9.1.3 - Complex Expressions<br>9.1.4 - Commutative Operators<br>9.2 - Logical (Boolean) Expressions<br>9.3 - Multiprecision Operations<br>9.3.1 - Multiprecision Addition Operations<br>9.3.2 - Multiprecision Subtraction Operations<br>9.3.3 - Extended Precision Comparisons<br>9.3.4 - Extended Precision Multiplication<br>9.3.5 - Extended Precision Division<br>9.3.6 - Extended Precision NEG Operations<br>9.3.7 - Extended Precision AND Operations<br>9.3.8 - Extended Precision OR Operations<br>9.3.9 - Extended Precision XOR Operations<br>9.3.10 - Extended Precision NOT Operations<br>9.3.11 - Extended Precision Shift Operations<br>9.3.12 - Extended Precision Rotate Operations<br>9.4 - Operating on Different Sized Operands<br>9.5 - Machine and Arithmetic Idioms<br>9.5.1 - Multiplying Without MUL and IMUL<br>9.5.2 - Division Without DIV and IDIV<br>9.5.3 - Using AND to Compute Remainders<br>9.5.4 - Implementing Modulo-n Counters with AND<br>9.5.5 - Testing an Extended Precision Value for 0FFFF..FFh<br>9.5.6 - TEST Operations<br>9.5.7 - Testing Signs with the XOR Instruction<br>9.6 - Masking Operations<br>9.6.1 - Masking Operations with the AND Instruction<br>9.6.2 - Masking Operations with the OR Instruction<br>9.7 - Packing and Unpacking Data Types<br>9.8 - Tables<br>9.8.1 - Function Computation via Table Look Up<br>9.8.2 - Domain Conditioning<br>9.8.3 - Generating Tables<br>9.9 - Sample Programs<br>9.9.1 - Converting Arithmetic Expressions to Assembly Language<br>9.9.2 - Boolean Operations Example<br>9.9.3 - 64-bit Integer I/O<br>9.9.4 - Packing and Unpacking Date Data Types<br><br><br><br>9.10 Laboratory Exercises<br>9.10.1 Debugging Programs with CodeView<br>9.10.2 Debugging Strategies<br>9.10.2.1 Locating Infinite Loops<br>9.10.2.2 Incorrect Computations<br>9.10.2.3 Illegal Instructions/Infinite Loops Part II<br>9.10.3 Debug Exercise I: Using CodeView to Find Bugs in a Calculation<br>9.10.4 Software Delay Loop Exercises<br>9.11 Programming Projects<br>9.12 Summary<br>9.13 Questions<br><br>Chapter 10 - Control Structures<br>10.0 - Chapter Overview<br>10.1 - Introduction to Decisions<br>10.2 - IF..THEN..ELSE Sequences<br>10.3 - CASE Statements<br>10.4 - State Machines and Indirect Jumps<br>10.5 - Spaghetti Code<br>10.6 - Loops<br>10.6.1 - While Loops<br>10.6.2 - Repeat..Until Loops<br>10.6.3 - LOOP..ENDLOOP Loops<br>10.6.4 - FOR Loops<br>10.7 - Register Usage and Loops<br>10.8 - Performance Improvements<br>10.8.1 - Moving the Termination Condition to the End of a Loop<br>10.8.2 - Executing the Loop Backwards<br>10.8.3 - Loop Invariant Computations<br>10.8.4 - Unraveling Loops<br>10.8.5 - Induction Variables<br>10.8.6 - Other Performance Improvements<br>10.9 - Nested Statements<br>10.10 - Timing Delay Loops<br>10.11 - Sample Program<br><br><br><br>10.12 Laboratory Exercises<br>10.12.1 The Physics of Sound<br>10.12.2 The Fundamentals of Music<br>10.12.3 The Physics of Music<br>10.12.4 The 8253/8254 Timer Chip<br>10.12.5 Programming the Timer Chip to Produce Musical Tones<br>10.12.6 Putting it All Together<br>10.12.7 Amazing Grace Exercise<br>10.13 Programming Projects<br>10.14 Summary<br>10.15 Questions<br><br>Chapter Eleven - Procedures and Functions<br>11.0 - Chapter Overview<br>11.1 - Procedures<br>11.2 - Near and Far Procedures<br>11.2.1 - Forcing NEAR or FAR CALLs and Returns<br>11.2.2 - Nested Procedures<br>11.3 - Functions<br>11.4 - Saving the State of the Machine<br>11.5 - Parameters<br>11.5.1 - Pass by Value<br>11.5.2 - Pass by Reference<br>11.5.3 - Pass by Value-Returned<br>11.5.4 - Pass by Result<br>11.5.5 - Pass by Name<br>11.5.6 - Pass by Lazy-Evaluation<br>11.5.7 - Passing Parameters in Registers<br>11.5.8 - Passing Parameters in Global Variables<br>11.5.9 - Passing Parameters on the Stack<br>11.5.10 - Passing Parameters in the Code Stream<br>11.5.11 - Passing Parameters via a Parameter Block<br>11.6 - Function Results<br>11.6.1 - Returning Function Results in a Register<br>11.6.2 - Returning Function Results on the Stack<br>11.6.3 - Returning Function Results in Memory Locations<br>11.7 - Side Effects<br>11.8 - Local Variable Storage<br>11.9 - Recursion<br>11.10 - Sample Program<br><br>11.11 Laboratory Exercises<br>11.11.1 Ex11_1.cpp<br>11.11.2 Ex11_1.asm<br>11.11.3 EX11_1a.asm<br>11.12 Programming Projects<br>11.13 Summary<br>11.14 Questions<br><br>Section Three: Intermediate Level Assembly Language Programming<br><br>Chapter 12 - Procedures: Advanced Topics<br>12.0 - Chapter Overview<br>12.1 - Lexical Nesting, Static Links, and Displays<br>12.1.1 - Scope<br>12.1.2 - Unit Activation, Address Binding, and Variable Lifetime<br>12.1.3 - Static Links<br>12.1.4 - Accessing Non-Local Variables Using Static Links<br>12.1.5 - The Display<br>12.1.6 - The 80286 ENTER and LEAVE Instructions<br>12.2 - Passing Variables at Different Lex Levels as Parameters.<br>12.2.1 - Passing Parameters by Value in a Block Structured Language<br>12.2.2 - Passing Parameters by Reference, Result, and Value-Result in a Block Structured Language<br>12.2.3 - Passing Parameters by Name and Lazy-Evaluation in a Block Structured Language<br>12.3 - Passing Parameters as Parameters to Another Procedure<br>12.3.1 - Passing Reference Parameters to Other Procedures<br>12.3.2 - Passing Value-Result and Result Parameters as Parameters<br>12.3.3 - Passing Name Parameters to Other Procedures<br>12.3.4 - Passing Lazy Evaluation Parameters as Parameters<br>12.3.5 - Parameter Passing Summary<br>12.4 - Passing Procedures as Parameters<br>12.5 - Iterators<br>12.5.1 - Implementing Iterators Using In-Line Expansion<br>12.5.2 - Implementing Iterators with Resume Frames<br>12.6 - Sample Programs<br>12.6.1 - An Example of an Iterator<br>12.6.2 - Another Iterator Example<br><br><br>12.7 Laboratory Exercises<br>12.7.1 Iterator Exercise<br>12.7.2 The 80x86 Enter and Leave Instructions<br>12.7.3 Parameter Passing Exercises<br>12.8 Programming Projects<br>12.9 Summary<br>12.10 Questions<br><br>Chapter 13 - MS-DOS, PC-BIOS, and File I/O<br>13.0 - Chapter Overview<br>13.1 - The IBM PC BIOS<br>13.2 - An Introduction to the BIOS' Services<br>13.2.1 - INT 5- Print Screen<br>13.2.2 - INT 10h - Video Services<br>13.2.3 - INT 11h - Equipment Installed<br>13.2.4 - INT 12h - Memory Available<br>13.2.5 - INT 13h - Low Level Disk Services<br>13.2.6 - INT 14h - Serial I/O<br>13.2.6.1 - AH=0: Serial Port Initialization<br>13.2.6.2 - AH=1: Transmit a Character to the Serial Port<br>13.2.6.3 - AH=2: Receive a Character from the Serial Port<br>13.2.6.4 - AH=3: Serial Port Status<br>13.2.7 - INT 15h - Miscellaneous Services<br>13.2.8 - INT 16h - Keyboard Services<br>13.2.8.1 - AH=0: Read a Key From the Keyboard<br>13.2.8.2 - AH=1: See if a Key is Available at the Keyboard<br>13.2.8.3 - AH=2: Return Keyboard Shift Key Status<br>13.2.9 - INT 17h - Printer Services<br>13.2.9.1 - AH=0: Print a Character<br>13.2.9.2 - AH=1: Initialize Printer<br>13.2.9.3 - AH=2: Return Printer Status<br>13.2.10 - INT 18h - Run BASIC<br>13.2.11 - INT 19h - Reboot Computer<br>13.2.12 - INT 1Ah - Real Time Clock<br>13.2.12.1 - AH=0: Read the Real Time Clock<br>13.2.12.2 - AH=1: Setting the Real Time Clock<br>13.3 - An Introduction to MS-DOS'<br>13.3.1 - MS-DOS Calling Sequence<br>13.3.2 - MS-DOS Character Oriented Functions<br>13.3.3 - MS-DOS Drive Commands<br>13.3.4 - MS-DOS "Obsolete" Filing Calls<br>13.3.5 - MS-DOS Date and Time Functions<br>13.3.6 - MS-DOS Memory Management Functions<br>13.3.6.1 - Allocate Memory<br>13.3.6.2 - Deallocate Memory<br>13.3.6.3 - Modify Memory Allocation<br>13.3.6.4 - Advanced Memory Management Functions<br>13.3.7 - MS-DOS Process Control Functions<br>13.3.7.1 - Terminate Program Execution<br>13.3.7.2 - Terminate, but Stay Resident<br>13.3.7.3 - Execute a Program<br>13.3.8 - MS-DOS "New" Filing Calls<br>13.3.8.1 - Open File<br>13.3.8.2 - Create File<br>13.3.8.3 - Close File<br>13.3.8.4 - Read From a File<br>13.3.8.5 - Write to a File<br>13.3.8.6 - Seek (Move File Pointer)<br>13.3.8.7 - Set Disk Transfer Address (DTA)<br>13.3.8.8 - Find First File<br>13.3.8.9 - Find Next File<br>13.3.8.10 - Delete File<br>13.3.8.11 - Rename File<br>13.3.8.12 - Change/Get File Attributes<br>13.3.8.13 - Get/Set File Date and Time<br>13.3.8.14 - Other DOS Calls<br>13.3.9 - File I/O Examples<br>13.3.9.1 - Example #1: A Hex Dump Utility<br>13.3.9.2 - Example #2: Upper Case Conversion<br>13.3.10 - Blocked File I/O<br>13.3.11 - The Program Segment Prefix (PSP)<br>13.3.12 - Accessing Command Line Parameters<br>13.3.13 - ARGC and ARGV<br>13.4 - UCR Standard Library File I/O Routines<br>13.4.1 - Fopen<br>13.4.2 - Fcreate<br>13.4.3 - Fclose<br>13.4.4 - Fflush<br>13.4.5 - Fgetc<br>13.4.6 - Fread<br>13.4.7 - Fputc<br>13.4.8 - Fwrite<br>13.4.9 - Redirecting I/O Through the StdLib File I/O Routines<br>13.4.10 - A File I/O Example<br>13.5 - Sample Program<br><br>13.6 Laboratory Exercises<br>13.7 Programming Projects<br>13.8 Summary<br>13.9 Questions<br><br><br>Chapter 14 - Floating Point Arithmetic<br>14.0 - Chapter Overview<br>14.1 - The Mathematics of Floating Point Arithmetic<br>14.2 - IEEE Floating Point Formats<br>14.3 - The UCR Standard Library Floating Point Routines<br>14.3.1 - Load and Store Routines<br>14.3.2 - Integer/Floating Point Conversion<br>14.3.3 - Floating Point Arithmetic<br>14.3.4 - Float/Text Conversion and Printff<br>14.4 - The 80x87 Floating Point Coprocessors<br>14.4.1 - FPU Registers<br>14.4.1.1 - The FPU Data Registers<br>14.4.1.2 - The FPU Control Register<br>14.4.1.3 - The FPU Status Register<br>14.4.2 - FPU Data Types<br>14.4.3 - The FPU Instruction Set<br>14.4.4 - FPU Data Movement Instructions<br>14.4.4.1 - The FLD Instruction<br>14.4.4.2 - The FST and FSTP Instructions<br>14.4.4.3 - The FXCH Instruction<br>14.4.5 - Conversions<br>14.4.5.1 - The FILD Instruction<br>14.4.5.2 - The FIST and FISTP Instructions<br>14.4.5.3 - The FBLD and FBSTP Instructions<br>14.4.6 - Arithmetic Instructions<br>14.4.6.1 - The FADD and FADDP Instructions<br>14.4.6.2 - The FSUB, FSUBP, FSUBR, and FSUBRP Instructions<br>14.4.6.3 - The FMUL and FMULP Instructions<br>14.4.6.4 - The FDIV, FDIVP, FDIVR, and FDIVRP Instructions<br>14.4.6.5 - The FSQRT Instruction<br>14.4.6.6 - The FSCALE Instruction<br>14.4.6.7 - The FPREM and FPREM1 Instructions<br>14.4.6.8 - The FRNDINT Instruction<br>14.4.6.9 - The FXTRACT Instruction<br>14.4.6.10 - The FABS Instruction<br>14.4.6.11 - The FCHS Instruction<br>14.4.7 - Comparison Instructions<br>14.4.7.1 - The FCOM, FCOMP, and FCOMPP Instructions<br>14.4.7.2 - The FUCOM, FUCOMP, and FUCOMPP Instructions<br>14.4.7.3 - The FTST Instruction<br>14.4.7.4 - The FXAM Instruction<br>14.4.8 - Constant Instructions<br>14.4.9 - Transcendental Instructions<br>14.4.9.1 - The F2XM1 Instruction<br>14.4.9.2 - The FSIN, FCOS, and FSINCOS Instructions<br>14.4.9.3 - The FPTAN Instruction<br>14.4.9.4 - The FPATAN Instruction<br>14.4.9.5 - The FYL2X and FYL2XP1 Instructions<br>14.4.10 - Miscellaneous instructions<br>14.4.10.1 - The FINIT and FNINIT Instructions<br>14.4.10.2 - The FWAIT Instruction<br>14.4.10.3 - The FLDCW and FSTCW Instructions<br>14.4.10.4 - The FCLEX and FNCLEX Instructions<br>14.4.10.5 - The FLDENV, FSTENV, and FNSTENV Instructions<br>14.4.10.6 - The FSAVE, FNSAVE, and FRSTOR Instructions<br>14.4.10.7 - The FSTSW and FNSTSW Instructions<br>14.4.10.8 - The FINCSTP and FDECSTP Instructions<br>14.4.10.9 - The FNOP Instruction<br>14.4.10.10 - The FFREE Instruction<br>14.4.11 - Integer Operations<br>14.5 - Sample Program: Additional Trigonometric Functions<br><br>14.6 Laboratory Exercises<br>14.6.1 FPU vs StdLib Accuracy<br>14.7 Programming Projects<br>14.8 Summary<br>14.9 Questions<br><br>Chapter 15 - Strings and Character Sets<br>15.0 - Chapter Overview<br>15.1 - The 80x86 String Instructions<br>15.1.1 - How the String Instructions Operate<br>15.1.2 - The REP/REPE/REPZ and REPNZ/REPNE Prefixes<br>15.1.3 - The Direction Flag<br>15.1.4 - The MOVS Instruction<br>15.1.5 - The CMPS Instruction<br>15.1.6 - The SCAS Instruction<br>15.1.7 - The STOS Instruction<br>15.1.8 - The LODS Instruction<br>15.1.9 - Building Complex String Functions from LODS and STOS<br>15.1.10 - Prefixes and the String Instructions<br>15.2 - Character Strings<br>15.2.1 - Types of Strings<br>15.2.2 - String Assignment<br>15.2.3 - String Comparison<br>15.3 - Character String Functions<br>15.3.1 - Substr<br>15.3.2 - Index<br>15.3.3 - Repeat<br>15.3.4 - Insert<br>15.3.5 - Delete<br>15.3.6 - Concatenation<br>15.4 - String Functions in the UCR Standard Library<br>15.4.1 - StrBDel, StrBDelm<br>15.4.2 - Strcat, Strcatl, Strcatm, Strcatml<br>15.4.3 - Strchr<br>15.4.4 - Strcmp, Strcmpl, Stricmp, Stricmpl<br>15.4.5 - Strcpy, Strcpyl, Strdup, Strdupl<br>15.4.6 - Strdel, Strdelm<br>15.4.7 - Strins, Strinsl, Strinsm, Strinsml<br>15.4.8 - Strlen<br>15.4.9 - Strlwr, Strlwrm, Strupr, Struprm<br>15.4.10 - Strrev, Strrevm<br>15.4.11 - Strset, Strsetm<br>15.4.12 - Strspan, Strspanl, Strcspan, Strcspanl<br>15.4.13 - Strstr, Strstrl<br>15.4.14 - Strtrim, Strtrimm<br>15.4.15 - Other String Routines in the UCR Standard Library<br>15.5 - The Character Set Routines in the UCR Standard Library<br>15.6 - Using the String Instructions on Other Data Types<br>15.6.1 - Multi-precision Integer Strings<br>15.6.2 - Dealing with Whole Arrays and Records<br>15.7 - Sample Programs<br>15.7.1 - Find.asm<br>15.7.2 - StrDemo.asm<br>15.7.3 - Fcmp.asm<br><br><br><br>15.8 Laboratory Exercises<br>15.8.1 MOVS Performance Exercise #1<br>15.8.2 MOVS Performance Exercise #2<br>15.8.3 Memory Performance Exercise<br>15.8.4 The Performance of Length-Prefixed vs. Zero-Terminated Strings<br>15.9 Programming Projects<br>15.10 Summary<br>15.11 Questions<br><br>Chapter 16 - Pattern Matching<br>16.1 - An Introduction to Formal Language (Automata) Theory<br>16.1.1 - Machines vs. Languages<br>16.1.2 - Regular Languages<br>16.1.2.1 - Regular Expressions<br>16.1.2.2 - Nondeterministic Finite State Automata (NFAs)<br>16.1.2.3 - Converting Regular Expressions to NFAs<br>16.1.2.4 - Converting an NFA to Assembly Language<br>16.1.2.5 - Deterministic Finite State Automata (DFAs)<br>16.1.2.6 - Converting a DFA to Assembly Language<br>16.1.3 - Context Free Languages<br>16.1.4 - Eliminating Left Recursion and Left Factoring CFGs<br>16.1.5 - Converting REs to CFGs<br>16.1.6 - Converting CFGs to Assembly Language<br>16.1.7 - Some Final Comments on CFGs<br>16.1.8 - Beyond Context Free Languages<br>16.2 - The UCR Standard Library Pattern Matching Routines<br>16.3 - The Standard Library Pattern Matching Functions<br>16.3.1 - Spancset<br>16.3.2 - Brkcset<br>16.3.3 - Anycset<br>16.3.4 - Notanycset<br>16.3.5 - MatchStr<br>16.3.6 - MatchiStr<br>16.3.7 - MatchToStr<br>16.3.8 - MatchChar<br>16.3.9 - MatchToChar<br>16.3.10 - MatchChars<br>16.3.11 - MatchToPat<br>16.3.12 - EOS<br>16.3.13 - ARB<br>16.3.14 - ARBNUM<br>16.3.15 - Skip<br>16.3.16 - Pos<br>16.3.17 - RPos<br>16.3.18 - GotoPos<br>16.3.19 - RGotoPos<br>16.3.20 - SL_Match2<br>16.4 - Designing Your Own Pattern Matching Routines<br>16.5 - Extracting Substrings from Matched Patterns<br>16.6 - Semantic Rules and Actions<br>16.7 - Constructing Patterns for the MATCH Routine<br>16.8 - Some Sample Pattern Matching Applications<br>16.8.1 - Converting Written Numbers to Integers<br>16.8.2 - Processing Dates<br>16.8.3 - Evaluating Arithmetic Expressions<br>16.8.4 - A Tiny Assembler<br>16.8.5 - The "MADVENTURE" Game<br>16.9 - Laboratory Exercises<br>16.9.1 - Checking for Stack Overflow (Infinite Loops)<br>16.9.2 - Printing Diagnostic Messages from a Pattern<br><br><br><br>16.10 Programming Projects<br>16.11 Summary<br>16.12 Questions<br><br>Section Four: Advanced Assembly Language Programming<br><br>Chapter 17 - Interrupts, Traps, and Exceptions<br>17.1 - 80x86 Interrupt Structure and Interrupt Service Routines (ISRs)<br>17.2 - Traps<br>17.3 - Exceptions<br>17.3.1 - Divide Error Exception (INT 0)<br>17.3.2 - Single Step (Trace) Exception (INT 1)<br>17.3.3 - Breakpoint Exception (INT 3)<br>17.3.4 - Overflow Exception (INT 4/INTO)<br>17.3.5 - Bounds Exception (INT 5/BOUND)<br>17.3.6 - Invalid Opcode Exception (INT 6)<br>17.3.7 - Coprocessor Not Available (INT 7)<br>17.4 - Hardware Interrupts<br>17.4.1 - The 8259A Programmable Interrupt Controller (PIC)<br>17.4.2 - The Timer Interrupt (INT 8)<br>17.4.3 - The Keyboard Interrupt (INT 9)<br>17.4.4 - The Serial Port Interrupts (INT 0Bh and INT 0Ch)<br>17.4.5 - The Parallel Port Interrupts (INT 0Dh and INT 0Fh)<br>17.4.6 - The Diskette and Hard Drive Interrupts (INT 0Eh and INT 76h)<br>17.4.7 - The Real-Time Clock Interrupt (INT 70h)<br>17.4.8 - The FPU Interrupt (INT 75h)<br>17.4.9 - Nonmaskable Interrupts (INT 2)<br>17.4.10 - Other Interrupts<br>17.5 - Chaining Interrupt Service Routines<br>17.6 - Reentrancy Problems<br>17.7 - The Efficiency of an Interrupt Driven System<br>17.7.1 - Interrupt Driven I/O vs. Polling<br>17.7.2 - Interrupt Service Time<br>17.7.3 - Interrupt Latency<br>17.7.4 - Prioritized Interrupts<br>17.8 - Debugging ISRs<br><br><br><br>17.9 Summary<br><br>Chapter 18 - Resident Programs<br>18.1 - DOS Memory Usage and TSRs<br>18.2 - Active vs. Passive TSRs<br>18.3 - Reentrancy<br>18.3.1 - Reentrancy Problems with DOS<br>18.3.2 - Reentrancy Problems with BIOS<br>18.3.3 - Reentrancy Problems with Other Code<br>18.4 - The Multiplex Interrupt (INT 2Fh)<br>18.5 - Installing a TSR<br>18.6 - Removing a TSR<br>18.7 - Other DOS Related Issues<br>18.8 - A Keyboard Monitor TSR<br>18.9 - Semiresident Programs<br><br><br>18.10 Summary<br><br>Chapter 19 - Processes, Coroutines, and Concurrency<br>19.1 - DOS Processes<br>19.1.1 - Child Processes in DOS<br>19.1.1.1 - Load and Execute<br>19.1.1.2 - Load Program<br>19.1.1.3 - Loading Overlays<br>19.1.1.4 - Terminating a Process<br>19.1.1.5 - Obtaining the Child Process Return Code<br>19.1.2 - Exception Handling in DOS: The Break Handler<br>19.1.3 - Exception Handling in DOS: The Critical Error Handler<br>19.1.4 - Exception Handling in DOS: Traps<br>19.1.5 - Redirection of I/O for Child Processes<br>19.2 - Shared Memory<br>19.2.1 - Static Shared Memory<br>19.2.2 - Dynamic Shared Memory<br>19.3 - Coroutines<br>19.3.1 - AMAZE.ASM<br>19.3.2 - 32-bit Coroutines<br>19.4 - Multitasking<br>19.4.1 - Lightweight and HeavyWeight Processes<br>19.4.2 - The UCR Standard Library Processes Package<br>19.4.3 - Problems with Multitasking<br>19.4.4 - A Sample Program with Threads<br>19.5 - Synchronization<br>19.5.1 - Atomic Operations, Test & Set, and Busy-Waiting<br>19.5.2 - Semaphores<br>19.5.3 - The UCR Standard Library Semaphore Support<br>19.5.4 - Using Semaphores to Protect Critical Regions<br>19.5.5 - Using Semaphores for Barrier Synchronization<br>19.6 - Deadlock<br><br><br><br>19.7 Summary<br><br>Section Five: The PC's I/O Ports<br><br>Chapter 20 - The PC Keyboard<br>20.1 - Keyboard Basics<br>20.2 - The Keyboard Hardware Interface<br>20.3 - The Keyboard DOS Interface<br>20.4 - The Keyboard BIOS Interface<br>20.5 - The Keyboard Interrupt Service Routine<br>20.6 - Patching into the INT 9 Interrupt Service Routine<br>20.7 - Simulating Keystrokes<br>20.7.1 - Stuffing Characters in the Type Ahead Buffer<br>20.7.2 - Using the 80x86 Trace Flag to Simulate IN AL, 60H Instructions<br>20.7.3 - Using the 8042 Microcontroller to Simulate Keystrokes<br><br><br>20.8 Summary<br><br>Chapter 21 - The PC Parallel Ports<br>21.1 - Basic Parallel Port Information<br>21.2 - The Parallel Port Hardware<br>21.3 - Controlling a Printer Through the Parallel Port<br>21.3.1 - Printing via DOS<br>21.3.2 - Printing via BIOS<br>21.3.3 - An INT 17h Interrupt Service Routine<br>21.4 - Inter-Computer Communications on the Parallel Port<br><br><br><br>21.5 Summary<br><br>Chapter 22 - The PC Serial Ports<br>22.1 - The 8250 Serial Communications Chip<br>22.1.1 - The Data Register (Transmit/Receive Register)<br>22.1.2 - The Interrupt Enable Register (IER)<br>22.1.3 - The Baud Rate Divisor<br>22.1.4 - The Interrupt Identification Register (IIR)<br>22.1.5 - The Line Control Register<br>22.1.6 - The Modem Control Register<br>22.1.7 - The Line Status Register (LSR)<br>22.1.8 - The Modem Status Register (MSR)<br>22.1.9 - The Auxiliary Input Register<br>22.2 - The UCR Standard Library Serial Communications Support Routines<br>22.3 - Programming the 8250 (Examples from the Standard Library)<br><br>22.4 Summary<br><br>Chapter 23 - The PC Video Display<br>23.1 - Memory Mapped Video<br>23.2 - The Video Attribute Byte<br>23.3 - Programming the Text Display<br><br><br>23.4 Summary<br><br>Chapter 24 - The PC Game Adapter<br>24.1 - Typical Game Devices<br>24.2 - The Game Adapter Hardware<br>24.3 - Using BIOS' Game I/O Functions<br>24.4 - Writing Your Own Game I/O Routines<br>24.5 - The Standard Game Device Interface (SGDI)<br>24.5.1 - Application Programmer's Interface (API)<br>24.5.2 - Read4Sw<br>24.5.3 - Read4Pots:<br>24.5.4 - ReadPot<br>24.5.5 - Read4:<br>24.5.6 - CalibratePot<br>24.5.7 - TestPotCalibration<br>24.5.8 - ReadRaw<br>24.5.9 - ReadSwitch<br>24.5.10 - Read16Sw<br>24.5.11 - Remove<br>24.5.12 - TestPresence<br>24.5.13 - An SGDI Driver for the Standard Game Adapter Card<br>24.6 - An SGDI Driver for the CH Products' Flight Stick Pro'<br>24.7 - Patching Existing Games<br><br><br><br>24.8 Summary<br><br>Section Six: Optimization<br><br>25.1 - When to Optimize, When Not to Optimize<br>25.2 - How Do You Find the Slow Code in Your Programs?<br>25.3 - Is Optimization Necessary?<br>25.4 - The Three Types of Optimization<br>25.5 - Improving the Implementation of an Algorithm<br><br><br><br>25.6 Summary<br><br>Section Seven: Appendixes<br>Appendix A: ASCII/IBM Character Set<br>Appendix B: Annotated Bibliography<br>Appendix C: Keyboard Scan Codes<br>Appendix D: Instruction Set Reference<br>Section D1<br><br>Section D2<br><br>Section D3<br><br>Section D4<br><br>The Art of Assembly Language Programming - 30 SEP 1996<br><br>[Randall Hyde]<br>You are visitor as of October 17, 1996.<br>The Art of Assembly Language Programming<br><br>Forward Why Would Anyone Learn This Stuff?<br>1 What's Wrong With Assembly Language<br>2 What's Right With Assembly Language?<br>3 Organization of This Text and Pedagogical Concerns<br>4 Obtaining Program Source Listings and Other Materials in This Text<br><br>Section One: Machine Organization<br><br>Art of Assembly Language: Chapter One<br>Chapter One - Data Representation<br>1.0 - Chapter Overview<br>1.1 - Numbering Systems<br>1.1.1 - A Review of the Decimal System<br>1.1.2 - The Binary Numbering System<br>1.1.3 - Binary Formats<br>1.2 - Data Organization<br>1.2.1 - Bits<br>1.2.2 - Nibbles<br>1.2.3 - Bytes<br>1.2.4 - Words<br>1.2.5 - Double Words<br>1.3 - The Hexadecimal Numbering System<br>1.4 - Arithmetic Operations on Binary and Hexadecimal Numbers<br>1.5 - Logical Operations on Bits<br>1.6 - Logical Operations on Binary Numbers and Bit Strings<br>1.7 - Signed and Unsigned Numbers<br>1.8 - Sign and Zero Extension<br>1.9 - Shifts and Rotates<br>1.10 - Bit Fields and Packed Data<br>1.11 - The ASCII Character Set<br><br>1.12 Summary<br>1.13 Laboratory Exercises<br>1.13.1 Installing the Software<br>1.13.2 Data Conversion Exercises<br>1.13.3 Logical Operations Exercises<br>1.13.4 Sign and Zero Extension Exercises<br>1.13.5 Packed Data Exercises<br>1.14 Questions<br>1.15 Programming Projects<br><br>Chapter Two - Boolean Algebra<br>2.0 - Chapter Overview<br>2.1 - Boolean Algebra<br>2.2 - Boolean Functions and Truth Tables<br>2.3 - Algebraic Manipulation of Boolean Expressions<br>2.4 - Canonical Forms<br>2.5 - Simplification of Boolean Functions<br>2.6 - What Does This Have To Do With Computers, Anyway?<br>2.6.1 - Correspondence Between Electronic Circuits and Boolean Functions<br>2.6.2 - Combinatorial Circuits<br>2.6.3 - Sequential and Clocked Logic<br>2.7 - Okay, What Does It Have To Do With Programming, Then?<br>2.8 - Generic Boolean Functions<br><br>2.9 Laboratory Exercises<br>2.9.1 Truth Tables and Logic Equations Exercises<br>2.9.2 Canonical Logic Equations Exercises<br>2.9.3 Optimization Exercises<br>2.9.4 Logic Evaluation Exercises<br>2.10 Programming Projects<br>2.11 Summary<br>2.12 Questions<br><br>Chapter Three - System Organization<br>3.0 - Chapter Overview<br>3.1 - The Basic System Components<br>3.1.1 - The System Bus<br>3.1.1.1 - The Data Bus<br>3.1.1.2 - The Address Bus<br>3.1.1.3 - The Control Bus<br>3.1.2 - The Memory Subsystem<br>3.1.3 - The I/O Subsystem<br>3.2 - System Timing<br>3.2.1 - The System Clock<br>3.2.2 - Memory Access and the System Clock<br>3.2.3 - Wait States<br>3.2.4 - Cache Memory<br>3.3 - The 886, 8286, 8486, and 8686 "Hypothetical" Processors<br>3.3.1 - CPU Registers<br>3.3.2 - The Arithmetic & Logical Unit<br>3.3.3 - The Bus Interface Unit<br>3.3.4 - The Control Unit and Instruction Sets<br>3.3.5 - The x86 Instruction Set<br>3.3.6 - Addressing Modes on the x86<br>3.3.7 - Encoding x86 Instructions<br>3.3.8 - Step-by-Step Instruction Execution<br>3.3.9 - The Differences Between the x86 Processors<br>3.3.10 - The 886 Processor<br>3.3.11 - The 8286 Processor<br>3.3.12 - The 8486 Processor<br>3.3.12.1 - The 8486 Pipeline<br>3.3.12.2 - Stalls in a Pipeline<br>3.3.12.3 - Cache, the Prefetch Queue, and the 8486<br>3.3.12.4 - Hazards on the 8486<br>3.3.13 - The 8686 Processor<br>3.4 - I/O (Input/Output)<br>3.5 - Interrupts and Polled I/O<br><br><br>3.6 Laboratory Exercises<br>3.6.1 The SIMx86 Program - Some Simple x86 Programs<br>3.6.2 Simple I/O-Mapped Input/Output Operations<br>3.6.3 Memory Mapped I/O<br>3.6.4 DMA Exercises<br>3.6.5 Interrupt Driven I/O Exercises<br>3.6.6 Machine Language Programming & Instruction Encoding Exercises<br>3.6.7 Self Modifying Code Exercises<br>3.7 Programming Projects<br>3.8 Summary<br>3.9 Questions<br><br>Chapter Four - Memory Layout and Access<br>4.0 - Chapter Overview<br>4.1 - The 80x86 CPUs:A Programmer's View<br>4.1.1 - 8086 General Purpose Registers<br>4.1.2 - 8086 Segment Registers<br>4.1.3 - 8086 Special Purpose Registers<br>4.1.4 - 80286 Registers<br>4.1.5 - 80386/80486 Registers<br>4.2 - 80x86 Physical Memory Organization<br>4.3 - Segments on the 80x86<br>4.4 - Normalized Addresses on the 80x86<br>4.5 - Segment Registers on the 80x86<br>4.6 - The 80x86 Addressing Modes<br>4.6.1 - 8086 Register Addressing Modes<br>4.6.2 - 8086 Memory Addressing Modes<br>4.6.2.1 - The Displacement Only Addressing Mode<br>4.6.2.2 - The Register Indirect Addressing Modes<br>4.6.2.3 - Indexed Addressing Modes<br>4.6.2.4 - Based Indexed Addressing Modes<br>4.6.2.5 - Based Indexed Plus Displacement Addressing Mode<br>4.6.2.6 - MASM Syntax for 8086 Memory Addressing Modes<br>4.6.2.7 - An Easy Way to Remember the 8086 Memory Addressing Modes<br>4.6.2.8 - Some Final Comments About 8086 Addressing Modes<br>4.6.3 - 80386 Register Addressing Modes<br>4.6.4 - 80386 Memory Addressing Modes<br>4.6.4.1 - Register Indirect Addressing Modes<br>4.6.4.2 - 80386 Indexed, Base/Indexed, and Base/Indexed/Disp Addressing Modes<br>4.6.4.3 - 80386 Scaled Indexed Addressing Modes<br>4.6.4.4 - Some Final Notes About the 80386 Memory Addressing Modes<br>4.7 - The 80x86 MOV Instruction<br>4.8 - Some Final Comments on the MOV Instructions<br><br>4.9 Laboratory Exercises<br>4.9.1 The UCR Standard Library for 80x86 Assembly Language Programmers<br>4.9.2 Editing Your Source Files<br>4.9.3 The SHELL.ASM File<br>4.9.4 Assembling Your Code with MASM<br>4.9.5 Debuggers and CodeView'<br>4.9.5.1 A Quick Look at CodeView<br>4.9.5.2 The Source Window<br>4.9.5.3 The Memory Window<br>4.9.5.4 The Register Window<br>4.9.5.5 The Command Window<br>4.9.5.6 The Output Menu Item<br>4.9.5.7 The CodeView Command Window<br>4.9.5.7.1 The Radix Command (N)<br>4.9.5.7.2 The Assemble Command<br>4.9.5.7.3 The Compare Memory Command<br>4.9.5.7.4 The Dump Memory Command<br>4.9.5.7.5 The Enter Command<br>4.9.5.7.6 The Fill Memory Command<br>4.9.5.7.7 The Move Memory Command<br>4.9.5.7.8 The Input Command<br>4.9.5.7.9 The Output Command<br>4.9.5.7.10 The Quit Command<br>4.9.5.7.11 The Register Command<br>4.9.5.7.12 The Unassemble Command<br>4.9.5.8 CodeView Function Keys<br>4.9.5.9 Some Comments on CodeView Addresses<br>4.9.5.10 A Wrap on CodeView<br>4.9.6 Laboratory Tasks<br>4.10 Programming Projects<br>4.11 Summary<br>4.12 Questions<br>Section Two: Basic Assembly Language<br><br>Chapter Five - Variables and Data Structures<br>5.0 - Chapter Overview<br>5.1 - Some Additional Instructions: LEA, LES, ADD, and MUL<br>5.2 - Declaring Variables in an Assembly Language Program<br>5.3 - Declaring and Accessing Scalar Variables<br>5.3.1 - Declaring and using BYTE Variables<br>5.3.2 - Declaring and using WORD Variables<br>5.3.3 - Declaring and using DWORD Variables<br>5.3.4 - Declaring and using FWORD, QWORD, and TBYTE Variables<br>5.3.5 - Declaring Floating Point Variables with REAL4, REAL8, and REAL10<br>5.4 - Creating Your Own Type Names with TYPEDEF<br>5.5 - Pointer Data Types<br>5.6 - Composite Data Types<br>5.6.1 - Arrays<br>5.6.1.1 - Declaring Arrays in Your Data Segment<br>5.6.1.2 - Accessing Elements of a Single Dimension Array<br>5.6.2 - Multidimensional Arrays<br>5.6.2.1 - Row Major Ordering<br>5.6.2.2 - Column Major Ordering<br>5.6.2.3 - Allocating Storage for Multidimensional Arrays<br>5.6.2.4 - Accessing Multidimensional Array Elements in Assembly Language<br>5.6.3 - Structures<br>5.6.4 - Arrays of Structures and Arrays/Structures as Structure Fields<br>5.6.5 - Pointers to Structures<br>5.7 - Sample Programs<br>5.7.1 - Simple Variable Declarations<br>5.7.2 - Using Pointer Variables<br>5.7.3 - Single Dimension Array Access<br>5.7.4 - Multidimensional Array Access<br>5.7.5 - Simple Structure Access<br>5.7.6 - Arrays of Structures<br>5.7.7 - Structures and Arrays as Fields of Another Structure<br>5.7.8 - Pointers to Structures and Arrays of Structure<br><br><br>5.8 Laboratory Exercises<br>5.9 Programming Projects<br>5.10 Summary<br>5.11 Questions<br><br>Chapter Six - The 80x86 Instruction Set<br>6.0 - Chapter Overview<br>6.1 - The Processor Status Register (Flags)<br>6.2 - Instruction Encodings<br>6.3 - Data Movement Instructions<br>6.3.1 - The MOV Instruction<br>6.3.2 - The XCHG Instruction<br>6.3.3 - The LDS, LES, LFS, LGS, and LSS Instructions<br>6.3.4 - The LEA Instruction<br>6.3.5 - The PUSH and POP Instructions<br>6.3.6 - The LAHF and SAHF Instructions<br>6.4 - Conversions<br>6.4.1 - The MOVZX, MOVSX, CBW, CWD, CWDE, and CDQ Instructions<br>6.4.2 - The BSWAP Instruction<br>6.4.3 - The XLAT Instruction<br>6.5 - Arithmetic Instructions<br>6.5.1 - The Addition Instructions: ADD, ADC, INC, XADD, AAA, and DAA<br>6.5.1.1 - The ADD and ADC Instructions<br>6.5.1.2 - The INC Instruction<br>6.5.1.3 - The XADD Instruction<br>6.5.1.4 - The AAA and DAA Instructions<br>6.5.2 - The Subtraction Instructions: SUB, SBB, DEC, AAS, and DAS<br>6.5.3 - The CMP Instruction<br>6.5.4 - The CMPXCHG, and CMPXCHG8B Instructions<br>6.5.5 - The NEG Instruction<br>6.5.6 - The Multiplication Instructions: MUL, IMUL, and AAM<br>6.5.7 - The Division Instructions: DIV, IDIV, and AAD<br>6.6 - Logical, Shift, Rotate and Bit Instructions<br>6.6.1 - The Logical Instructions: AND, OR, XOR, and NOT<br>6.6.2 - The Shift Instructions: SHL/SAL, SHR, SAR, SHLD, and SHRD<br>6.6.2.1 - SHL/SAL<br>6.6.2.2 - SAR<br>6.6.2.3 - SHR<br>6.6.2.4 - The SHLD and SHRD Instructions<br>6.6.3 - The Rotate Instructions: RCL, RCR, ROL, and ROR<br>6.6.3.1 - RCL<br>6.6.3.2 - RCR<br>6.6.3.3 - ROL<br>6.6.3.4 - ROR<br>6.6.4 - The Bit Operations<br>6.6.4.1 - TEST<br>6.6.4.2 - The Bit Test Instructions: BT, BTS, BTR, and BTC<br>6.6.4.3 - Bit Scanning: BSF and BSR<br>6.6.5 - The "Set on Condition" Instructions<br>6.7 - I/O Instructions<br>6.8 - String Instructions<br>6.9 - Program Flow Control Instructions<br>6.9.1 - Unconditional Jumps<br>6.9.2 - The CALL and RET Instructions<br>6.9.3 - The INT, INTO, BOUND, and IRET Instructions<br>6.9.4 - The Conditional Jump Instructions<br>6.9.5 - The JCXZ/JECXZ Instructions<br>6.9.6 - The LOOP Instruction<br>6.9.7 - The LOOPE/LOOPZ Instruction<br>6.9.8 - The LOOPNE/LOOPNZ Instruction<br>6.10 - Miscellaneous Instructions<br>6.11 - Sample Programs<br>6.11.1 - Simple Arithmetic I<br>6.11.2 - Simple Arithmetic II<br>6.11.3 - Logical Operations<br>6.11.4 - Shift and Rotate Operations<br>6.11.5 - Bit Operations and SETcc Instructions<br>6.11.6 - String Operations<br>6.11.7 - Conditional Jumps<br>6.11.8 - CALL and INT Instructions<br>6.11.9 - Conditional Jumps I<br>6.11.10 - Conditional Jump Instructions II<br><br><br>6.12 Laboratory Exercises<br>6.12.1 The IBM/L System<br>6.12.2 IBM/L Exercises<br>6.13 Programming Projects<br>6.14 Summary<br>6.15 Questions<br><br>Chapter Seven - The UCR Standard Library<br>7.0 - Chapter Overview<br>7.1 - An Introduction to the UCR Standard Library<br>7.1.1 - Memory Management Routines: MEMINIT, MALLOC, and FREE<br>7.1.2 - The Standard Input Routines: GETC, GETS, GETSM<br>7.1.3 - The Standard Output Routines: PUTC, PUTCR, PUTS, PUTH, PUTI, PRINT, and PRINTF<br>7.1.4 - Formatted Output Routines: Putisize, Putusize, Putlsize, and Putulsize<br>7.1.5 - Output Field Size Routines: Isize, Usize, and Lsize<br>7.1.6 - Conversion Routines: ATOx, and xTOA<br>7.1.7 - Routines that Test Characters for Set Membership<br>7.1.8 - Character Conversion Routines: ToUpper, ToLower<br>7.1.9 - Random Number Generation: Random, Randomize<br>7.1.10 - Constants, Macros, and other Miscellany<br>7.1.11 - Plus more!<br>7.2 - Sample Programs<br>7.2.1 - Stripped SHELL.ASM File<br>7.2.2 - Numeric I/O<br><br><br>7.3 Laboratory Exercises<br>7.3.1 Obtaining the UCR Standard Library<br>7.3.2 Unpacking the Standard Library<br>7.3.3 Using the Standard Library<br>7.3.4 The Standard Library Documentation Files<br>7.4 Programming Projects<br>7.5 Summary<br>7.6 Questions<br><br>Chapter Eight - MASM: Directives & Pseudo-Opcodes<br>8.0 - Chapter Overview<br>8.1 - Assembly Language Statements<br>8.2 - The Location Counter<br>8.3 - Symbols<br>8.4 - Literal Constants<br>8.4.1 - Integer Constants<br>8.4.2 - String Constants<br>8.4.3 - Real Constants<br>8.4.4 - Text Constants<br>8.5 - Declaring Manifest Constants Using Equates<br>8.6 - Processor Directives<br>8.7 - Procedures<br>8.8 - Segments<br>8.8.1 - Segment Names<br>8.8.2 - Segment Loading Order<br>8.8.3 - Segment Operands<br>8.8.3.1 - The ALIGN Type<br>8.8.3.2 - The COMBINE Type<br>8.8.4 - The CLASS Type<br>8.8.5 - The Read-only Operand<br>8.8.6 - The USE16, USE32, and FLAT Options<br>8.8.7 - Typical Segment Definitions<br>8.8.8 - Why You Would Want to Control the Loading Order<br>8.8.9 - Segment Prefixes<br>8.8.10 - Controlling Segments with the ASSUME Directive<br>8.8.11 - Combining Segments: The GROUP Directive<br>8.8.12 - Why Even Bother With Segments?<br>8.9 - The END Directive<br>8.10 - Variables<br>8.11 - Label Types<br>8.11.1 - How to Give a Symbol a Particular Type<br>8.11.2 - Label Values<br>8.11.3 - Type Conflicts<br>8.12 - Address Expressions<br>8.12.1 - Symbol Types and Addressing Modes<br>8.12.2 - Arithmetic and Logical Operators<br>8.12.3 - Coercion<br>8.12.4 - Type Operators<br>8.12.5 - Operator Precedence<br>8.13 - Conditional Assembly<br>8.13.1 - IF Directive<br>8.13.2 - IFE directive<br>8.13.3 - IFDEF and IFNDEF<br>8.13.4 - IFB, IFNB<br>8.13.5 - IFIDN, IFDIF, IFIDNI, and IFDIFI<br>8.14 - Macros<br>8.14.1 - Procedural Macros<br>8.14.2 - Macros vs. 80x86 Procedures<br>8.14.3 - The LOCAL Directive<br>8.14.4 - The EXITM Directive<br>8.14.5 - Macro Parameter Expansion and Macro Operators<br>8.14.6 - A Sample Macro to Implement For Loops<br>8.14.7 - Macro Functions<br>8.14.8 - Predefined Macros, Macro Functions, and Symbols<br>8.14.9 - Macros vs. Text Equates<br>8.14.10 - Macros: Good and Bad News<br>8.15 - Repeat Operations<br>8.16 - The FOR and FORC Macro Operations<br>8.17 - The WHILE Macro Operation<br>8.18 - Macro Parameters<br>8.19 - Controlling the Listing<br>8.19.1 - The ECHO and %OUT Directives<br>8.19.2 - The TITLE Directive<br>8.19.3 - The SUBTTL Directive<br>8.19.4 - The PAGE Directive<br>8.19.5 - The .LIST, .NOLIST, and .XLIST Directives<br>8.19.6 - Other Listing Directives<br>8.20 - Managing Large Programs<br>8.20.1 - The INCLUDE Directive<br>8.20.2 - The PUBLIC, EXTERN, and EXTRN Directives<br>8.20.3 - The EXTERNDEF Directive<br>8.21 - Make Files<br>8.22 - Sample Program<br>8.22.1 - EX8.MAK<br>8.22.2 - Matrix.A<br>8.22.3 - EX8.ASM<br>8.22.4 - GETI.ASM<br>8.22.5 - GetArray.ASM<br>8.22.6 - XProduct.ASM<br><br><br>8.23 Laboratory Exercises<br>8.23.1 Near vs. Far Procedures<br>8.23.2 Data Alignment Exercises<br>8.23.3 Equate Exercise<br>8.23.4 IFDEF Exercise<br>8.23.5 Make File Exercise<br>8.24 Programming Projects<br>8.25 Summary<br>8.26 Questions<br><br>Chapter Nine - Arithmetic and Logical Operations<br>9.0 - Chapter Overview<br>9.1 - Arithmetic Expressions<br>9.1.1 - Simple Assignments<br>9.1.2 - Simple Expressions<br>9.1.3 - Complex Expressions<br>9.1.4 - Commutative Operators<br>9.2 - Logical (Boolean) Expressions<br>9.3 - Multiprecision Operations<br>9.3.1 - Multiprecision Addition Operations<br>9.3.2 - Multiprecision Subtraction Operations<br>9.3.3 - Extended Precision Comparisons<br>9.3.4 - Extended Precision Multiplication<br>9.3.5 - Extended Precision Division<br>9.3.6 - Extended Precision NEG Operations<br>9.3.7 - Extended Precision AND Operations<br>9.3.8 - Extended Precision OR Operations<br>9.3.9 - Extended Precision XOR Operations<br>9.3.10 - Extended Precision NOT Operations<br>9.3.11 - Extended Precision Shift Operations<br>9.3.12 - Extended Precision Rotate Operations<br>9.4 - Operating on Different Sized Operands<br>9.5 - Machine and Arithmetic Idioms<br>9.5.1 - Multiplying Without MUL and IMUL<br>9.5.2 - Division Without DIV and IDIV<br>9.5.3 - Using AND to Compute Remainders<br>9.5.4 - Implementing Modulo-n Counters with AND<br>9.5.5 - Testing an Extended Precision Value for 0FFFF..FFh<br>9.5.6 - TEST Operations<br>9.5.7 - Testing Signs with the XOR Instruction<br>9.6 - Masking Operations<br>9.6.1 - Masking Operations with the AND Instruction<br>9.6.2 - Masking Operations with the OR Instruction<br>9.7 - Packing and Unpacking Data Types<br>9.8 - Tables<br>9.8.1 - Function Computation via Table Look Up<br>9.8.2 - Domain Conditioning<br>9.8.3 - Generating Tables<br>9.9 - Sample Programs<br>9.9.1 - Converting Arithmetic Expressions to Assembly Language<br>9.9.2 - Boolean Operations Example<br>9.9.3 - 64-bit Integer I/O<br>9.9.4 - Packing and Unpacking Date Data Types<br><br><br><br>9.10 Laboratory Exercises<br>9.10.1 Debugging Programs with CodeView<br>9.10.2 Debugging Strategies<br>9.10.2.1 Locating Infinite Loops<br>9.10.2.2 Incorrect Computations<br>9.10.2.3 Illegal Instructions/Infinite Loops Part II<br>9.10.3 Debug Exercise I: Using CodeView to Find Bugs in a Calculation<br>9.10.4 Software Delay Loop Exercises<br>9.11 Programming Projects<br>9.12 Summary<br>9.13 Questions<br><br>Chapter 10 - Control Structures<br>10.0 - Chapter Overview<br>10.1 - Introduction to Decisions<br>10.2 - IF..THEN..ELSE Sequences<br>10.3 - CASE Statements<br>10.4 - State Machines and Indirect Jumps<br>10.5 - Spaghetti Code<br>10.6 - Loops<br>10.6.1 - While Loops<br>10.6.2 - Repeat..Until Loops<br>10.6.3 - LOOP..ENDLOOP Loops<br>10.6.4 - FOR Loops<br>10.7 - Register Usage and Loops<br>10.8 - Performance Improvements<br>10.8.1 - Moving the Termination Condition to the End of a Loop<br>10.8.2 - Executing the Loop Backwards<br>10.8.3 - Loop Invariant Computations<br>10.8.4 - Unraveling Loops<br>10.8.5 - Induction Variables<br>10.8.6 - Other Performance Improvements<br>10.9 - Nested Statements<br>10.10 - Timing Delay Loops<br>10.11 - Sample Program<br><br><br><br>10.12 Laboratory Exercises<br>10.12.1 The Physics of Sound<br>10.12.2 The Fundamentals of Music<br>10.12.3 The Physics of Music<br>10.12.4 The 8253/8254 Timer Chip<br>10.12.5 Programming the Timer Chip to Produce Musical Tones<br>10.12.6 Putting it All Together<br>10.12.7 Amazing Grace Exercise<br>10.13 Programming Projects<br>10.14 Summary<br>10.15 Questions<br><br>Chapter Eleven - Procedures and Functions<br>11.0 - Chapter Overview<br>11.1 - Procedures<br>11.2 - Near and Far Procedures<br>11.2.1 - Forcing NEAR or FAR CALLs and Returns<br>11.2.2 - Nested Procedures<br>11.3 - Functions<br>11.4 - Saving the State of the Machine<br>11.5 - Parameters<br>11.5.1 - Pass by Value<br>11.5.2 - Pass by Reference<br>11.5.3 - Pass by Value-Returned<br>11.5.4 - Pass by Result<br>11.5.5 - Pass by Name<br>11.5.6 - Pass by Lazy-Evaluation<br>11.5.7 - Passing Parameters in Registers<br>11.5.8 - Passing Parameters in Global Variables<br>11.5.9 - Passing Parameters on the Stack<br>11.5.10 - Passing Parameters in the Code Stream<br>11.5.11 - Passing Parameters via a Parameter Block<br>11.6 - Function Results<br>11.6.1 - Returning Function Results in a Register<br>11.6.2 - Returning Function Results on the Stack<br>11.6.3 - Returning Function Results in Memory Locations<br>11.7 - Side Effects<br>11.8 - Local Variable Storage<br>11.9 - Recursion<br>11.10 - Sample Program<br><br>11.11 Laboratory Exercises<br>11.11.1 Ex11_1.cpp<br>11.11.2 Ex11_1.asm<br>11.11.3 EX11_1a.asm<br>11.12 Programming Projects<br>11.13 Summary<br>11.14 Questions<br><br>Section Three: Intermediate Level Assembly Language Programming<br><br>Chapter 12 - Procedures: Advanced Topics<br>12.0 - Chapter Overview<br>12.1 - Lexical Nesting, Static Links, and Displays<br>12.1.1 - Scope<br>12.1.2 - Unit Activation, Address Binding, and Variable Lifetime<br>12.1.3 - Static Links<br>12.1.4 - Accessing Non-Local Variables Using Static Links<br>12.1.5 - The Display<br>12.1.6 - The 80286 ENTER and LEAVE Instructions<br>12.2 - Passing Variables at Different Lex Levels as Parameters.<br>12.2.1 - Passing Parameters by Value in a Block Structured Language<br>12.2.2 - Passing Parameters by Reference, Result, and Value-Result in a Block Structured Language<br>12.2.3 - Passing Parameters by Name and Lazy-Evaluation in a Block Structured Language<br>12.3 - Passing Parameters as Parameters to Another Procedure<br>12.3.1 - Passing Reference Parameters to Other Procedures<br>12.3.2 - Passing Value-Result and Result Parameters as Parameters<br>12.3.3 - Passing Name Parameters to Other Procedures<br>12.3.4 - Passing Lazy Evaluation Parameters as Parameters<br>12.3.5 - Parameter Passing Summary<br>12.4 - Passing Procedures as Parameters<br>12.5 - Iterators<br>12.5.1 - Implementing Iterators Using In-Line Expansion<br>12.5.2 - Implementing Iterators with Resume Frames<br>12.6 - Sample Programs<br>12.6.1 - An Example of an Iterator<br>12.6.2 - Another Iterator Example<br><br><br>12.7 Laboratory Exercises<br>12.7.1 Iterator Exercise<br>12.7.2 The 80x86 Enter and Leave Instructions<br>12.7.3 Parameter Passing Exercises<br>12.8 Programming Projects<br>12.9 Summary<br>12.10 Questions<br><br>Chapter 13 - MS-DOS, PC-BIOS, and File I/O<br>13.0 - Chapter Overview<br>13.1 - The IBM PC BIOS<br>13.2 - An Introduction to the BIOS' Services<br>13.2.1 - INT 5- Print Screen<br>13.2.2 - INT 10h - Video Services<br>13.2.3 - INT 11h - Equipment Installed<br>13.2.4 - INT 12h - Memory Available<br>13.2.5 - INT 13h - Low Level Disk Services<br>13.2.6 - INT 14h - Serial I/O<br>13.2.6.1 - AH=0: Serial Port Initialization<br>13.2.6.2 - AH=1: Transmit a Character to the Serial Port<br>13.2.6.3 - AH=2: Receive a Character from the Serial Port<br>13.2.6.4 - AH=3: Serial Port Status<br>13.2.7 - INT 15h - Miscellaneous Services<br>13.2.8 - INT 16h - Keyboard Services<br>13.2.8.1 - AH=0: Read a Key From the Keyboard<br>13.2.8.2 - AH=1: See if a Key is Available at the Keyboard<br>13.2.8.3 - AH=2: Return Keyboard Shift Key Status<br>13.2.9 - INT 17h - Printer Services<br>13.2.9.1 - AH=0: Print a Character<br>13.2.9.2 - AH=1: Initialize Printer<br>13.2.9.3 - AH=2: Return Printer Status<br>13.2.10 - INT 18h - Run BASIC<br>13.2.11 - INT 19h - Reboot Computer<br>13.2.12 - INT 1Ah - Real Time Clock<br>13.2.12.1 - AH=0: Read the Real Time Clock<br>13.2.12.2 - AH=1: Setting the Real Time Clock<br>13.3 - An Introduction to MS-DOS'<br>13.3.1 - MS-DOS Calling Sequence<br>13.3.2 - MS-DOS Character Oriented Functions<br>13.3.3 - MS-DOS Drive Commands<br>13.3.4 - MS-DOS "Obsolete" Filing Calls<br>13.3.5 - MS-DOS Date and Time Functions<br>13.3.6 - MS-DOS Memory Management Functions<br>13.3.6.1 - Allocate Memory<br>13.3.6.2 - Deallocate Memory<br>13.3.6.3 - Modify Memory Allocation<br>13.3.6.4 - Advanced Memory Management Functions<br>13.3.7 - MS-DOS Process Control Functions<br>13.3.7.1 - Terminate Program Execution<br>13.3.7.2 - Terminate, but Stay Resident<br>13.3.7.3 - Execute a Program<br>13.3.8 - MS-DOS "New" Filing Calls<br>13.3.8.1 - Open File<br>13.3.8.2 - Create File<br>13.3.8.3 - Close File<br>13.3.8.4 - Read From a File<br>13.3.8.5 - Write to a File<br>13.3.8.6 - Seek (Move File Pointer)<br>13.3.8.7 - Set Disk Transfer Address (DTA)<br>13.3.8.8 - Find First File<br>13.3.8.9 - Find Next File<br>13.3.8.10 - Delete File<br>13.3.8.11 - Rename File<br>13.3.8.12 - Change/Get File Attributes<br>13.3.8.13 - Get/Set File Date and Time<br>13.3.8.14 - Other DOS Calls<br>13.3.9 - File I/O Examples<br>13.3.9.1 - Example #1: A Hex Dump Utility<br>13.3.9.2 - Example #2: Upper Case Conversion<br>13.3.10 - Blocked File I/O<br>13.3.11 - The Program Segment Prefix (PSP)<br>13.3.12 - Accessing Command Line Parameters<br>13.3.13 - ARGC and ARGV<br>13.4 - UCR Standard Library File I/O Routines<br>13.4.1 - Fopen<br>13.4.2 - Fcreate<br>13.4.3 - Fclose<br>13.4.4 - Fflush<br>13.4.5 - Fgetc<br>13.4.6 - Fread<br>13.4.7 - Fputc<br>13.4.8 - Fwrite<br>13.4.9 - Redirecting I/O Through the StdLib File I/O Routines<br>13.4.10 - A File I/O Example<br>13.5 - Sample Program<br><br>13.6 Laboratory Exercises<br>13.7 Programming Projects<br>13.8 Summary<br>13.9 Questions<br><br><br>Chapter 14 - Floating Point Arithmetic<br>14.0 - Chapter Overview<br>14.1 - The Mathematics of Floating Point Arithmetic<br>14.2 - IEEE Floating Point Formats<br>14.3 - The UCR Standard Library Floating Point Routines<br>14.3.1 - Load and Store Routines<br>14.3.2 - Integer/Floating Point Conversion<br>14.3.3 - Floating Point Arithmetic<br>14.3.4 - Float/Text Conversion and Printff<br>14.4 - The 80x87 Floating Point Coprocessors<br>14.4.1 - FPU Registers<br>14.4.1.1 - The FPU Data Registers<br>14.4.1.2 - The FPU Control Register<br>14.4.1.3 - The FPU Status Register<br>14.4.2 - FPU Data Types<br>14.4.3 - The FPU Instruction Set<br>14.4.4 - FPU Data Movement Instructions<br>14.4.4.1 - The FLD Instruction<br>14.4.4.2 - The FST and FSTP Instructions<br>14.4.4.3 - The FXCH Instruction<br>14.4.5 - Conversions<br>14.4.5.1 - The FILD Instruction<br>14.4.5.2 - The FIST and FISTP Instructions<br>14.4.5.3 - The FBLD and FBSTP Instructions<br>14.4.6 - Arithmetic Instructions<br>14.4.6.1 - The FADD and FADDP Instructions<br>14.4.6.2 - The FSUB, FSUBP, FSUBR, and FSUBRP Instructions<br>14.4.6.3 - The FMUL and FMULP Instructions<br>14.4.6.4 - The FDIV, FDIVP, FDIVR, and FDIVRP Instructions<br>14.4.6.5 - The FSQRT Instruction<br>14.4.6.6 - The FSCALE Instruction<br>14.4.6.7 - The FPREM and FPREM1 Instructions<br>14.4.6.8 - The FRNDINT Instruction<br>14.4.6.9 - The FXTRACT Instruction<br>14.4.6.10 - The FABS Instruction<br>14.4.6.11 - The FCHS Instruction<br>14.4.7 - Comparison Instructions<br>14.4.7.1 - The FCOM, FCOMP, and FCOMPP Instructions<br>14.4.7.2 - The FUCOM, FUCOMP, and FUCOMPP Instructions<br>14.4.7.3 - The FTST Instruction<br>14.4.7.4 - The FXAM Instruction<br>14.4.8 - Constant Instructions<br>14.4.9 - Transcendental Instructions<br>14.4.9.1 - The F2XM1 Instruction<br>14.4.9.2 - The FSIN, FCOS, and FSINCOS Instructions<br>14.4.9.3 - The FPTAN Instruction<br>14.4.9.4 - The FPATAN Instruction<br>14.4.9.5 - The FYL2X and FYL2XP1 Instructions<br>14.4.10 - Miscellaneous instructions<br>14.4.10.1 - The FINIT and FNINIT Instructions<br>14.4.10.2 - The FWAIT Instruction<br>14.4.10.3 - The FLDCW and FSTCW Instructions<br>14.4.10.4 - The FCLEX and FNCLEX Instructions<br>14.4.10.5 - The FLDENV, FSTENV, and FNSTENV Instructions<br>14.4.10.6 - The FSAVE, FNSAVE, and FRSTOR Instructions<br>14.4.10.7 - The FSTSW and FNSTSW Instructions<br>14.4.10.8 - The FINCSTP and FDECSTP Instructions<br>14.4.10.9 - The FNOP Instruction<br>14.4.10.10 - The FFREE Instruction<br>14.4.11 - Integer Operations<br>14.5 - Sample Program: Additional Trigonometric Functions<br><br>14.6 Laboratory Exercises<br>14.6.1 FPU vs StdLib Accuracy<br>14.7 Programming Projects<br>14.8 Summary<br>14.9 Questions<br><br>Chapter 15 - Strings and Character Sets<br>15.0 - Chapter Overview<br>15.1 - The 80x86 String Instructions<br>15.1.1 - How the String Instructions Operate<br>15.1.2 - The REP/REPE/REPZ and REPNZ/REPNE Prefixes<br>15.1.3 - The Direction Flag<br>15.1.4 - The MOVS Instruction<br>15.1.5 - The CMPS Instruction<br>15.1.6 - The SCAS Instruction<br>15.1.7 - The STOS Instruction<br>15.1.8 - The LODS Instruction<br>15.1.9 - Building Complex String Functions from LODS and STOS<br>15.1.10 - Prefixes and the String Instructions<br>15.2 - Character Strings<br>15.2.1 - Types of Strings<br>15.2.2 - String Assignment<br>15.2.3 - String Comparison<br>15.3 - Character String Functions<br>15.3.1 - Substr<br>15.3.2 - Index<br>15.3.3 - Repeat<br>15.3.4 - Insert<br>15.3.5 - Delete<br>15.3.6 - Concatenation<br>15.4 - String Functions in the UCR Standard Library<br>15.4.1 - StrBDel, StrBDelm<br>15.4.2 - Strcat, Strcatl, Strcatm, Strcatml<br>15.4.3 - Strchr<br>15.4.4 - Strcmp, Strcmpl, Stricmp, Stricmpl<br>15.4.5 - Strcpy, Strcpyl, Strdup, Strdupl<br>15.4.6 - Strdel, Strdelm<br>15.4.7 - Strins, Strinsl, Strinsm, Strinsml<br>15.4.8 - Strlen<br>15.4.9 - Strlwr, Strlwrm, Strupr, Struprm<br>15.4.10 - Strrev, Strrevm<br>15.4.11 - Strset, Strsetm<br>15.4.12 - Strspan, Strspanl, Strcspan, Strcspanl<br>15.4.13 - Strstr, Strstrl<br>15.4.14 - Strtrim, Strtrimm<br>15.4.15 - Other String Routines in the UCR Standard Library<br>15.5 - The Character Set Routines in the UCR Standard Library<br>15.6 - Using the String Instructions on Other Data Types<br>15.6.1 - Multi-precision Integer Strings<br>15.6.2 - Dealing with Whole Arrays and Records<br>15.7 - Sample Programs<br>15.7.1 - Find.asm<br>15.7.2 - StrDemo.asm<br>15.7.3 - Fcmp.asm<br><br><br><br>15.8 Laboratory Exercises<br>15.8.1 MOVS Performance Exercise #1<br>15.8.2 MOVS Performance Exercise #2<br>15.8.3 Memory Performance Exercise<br>15.8.4 The Performance of Length-Prefixed vs. Zero-Terminated Strings<br>15.9 Programming Projects<br>15.10 Summary<br>15.11 Questions<br><br>Chapter 16 - Pattern Matching<br>16.1 - An Introduction to Formal Language (Automata) Theory<br>16.1.1 - Machines vs. Languages<br>16.1.2 - Regular Languages<br>16.1.2.1 - Regular Expressions<br>16.1.2.2 - Nondeterministic Finite State Automata (NFAs)<br>16.1.2.3 - Converting Regular Expressions to NFAs<br>16.1.2.4 - Converting an NFA to Assembly Language<br>16.1.2.5 - Deterministic Finite State Automata (DFAs)<br>16.1.2.6 - Converting a DFA to Assembly Language<br>16.1.3 - Context Free Languages<br>16.1.4 - Eliminating Left Recursion and Left Factoring CFGs<br>16.1.5 - Converting REs to CFGs<br>16.1.6 - Converting CFGs to Assembly Language<br>16.1.7 - Some Final Comments on CFGs<br>16.1.8 - Beyond Context Free Languages<br>16.2 - The UCR Standard Library Pattern Matching Routines<br>16.3 - The Standard Library Pattern Matching Functions<br>16.3.1 - Spancset<br>16.3.2 - Brkcset<br>16.3.3 - Anycset<br>16.3.4 - Notanycset<br>16.3.5 - MatchStr<br>16.3.6 - MatchiStr<br>16.3.7 - MatchToStr<br>16.3.8 - MatchChar<br>16.3.9 - MatchToChar<br>16.3.10 - MatchChars<br>16.3.11 - MatchToPat<br>16.3.12 - EOS<br>16.3.13 - ARB<br>16.3.14 - ARBNUM<br>16.3.15 - Skip<br>16.3.16 - Pos<br>16.3.17 - RPos<br>16.3.18 - GotoPos<br>16.3.19 - RGotoPos<br>16.3.20 - SL_Match2<br>16.4 - Designing Your Own Pattern Matching Routines<br>16.5 - Extracting Substrings from Matched Patterns<br>16.6 - Semantic Rules and Actions<br>16.7 - Constructing Patterns for the MATCH Routine<br>16.8 - Some Sample Pattern Matching Applications<br>16.8.1 - Converting Written Numbers to Integers<br>16.8.2 - Processing Dates<br>16.8.3 - Evaluating Arithmetic Expressions<br>16.8.4 - A Tiny Assembler<br>16.8.5 - The "MADVENTURE" Game<br>16.9 - Laboratory Exercises<br>16.9.1 - Checking for Stack Overflow (Infinite Loops)<br>16.9.2 - Printing Diagnostic Messages from a Pattern<br><br><br><br>16.10 Programming Projects<br>16.11 Summary<br>16.12 Questions<br><br>Section Four: Advanced Assembly Language Programming<br><br>Chapter 17 - Interrupts, Traps, and Exceptions<br>17.1 - 80x86 Interrupt Structure and Interrupt Service Routines (ISRs)<br>17.2 - Traps<br>17.3 - Exceptions<br>17.3.1 - Divide Error Exception (INT 0)<br>17.3.2 - Single Step (Trace) Exception (INT 1)<br>17.3.3 - Breakpoint Exception (INT 3)<br>17.3.4 - Overflow Exception (INT 4/INTO)<br>17.3.5 - Bounds Exception (INT 5/BOUND)<br>17.3.6 - Invalid Opcode Exception (INT 6)<br>17.3.7 - Coprocessor Not Available (INT 7)<br>17.4 - Hardware Interrupts<br>17.4.1 - The 8259A Programmable Interrupt Controller (PIC)<br>17.4.2 - The Timer Interrupt (INT 8)<br>17.4.3 - The Keyboard Interrupt (INT 9)<br>17.4.4 - The Serial Port Interrupts (INT 0Bh and INT 0Ch)<br>17.4.5 - The Parallel Port Interrupts (INT 0Dh and INT 0Fh)<br>17.4.6 - The Diskette and Hard Drive Interrupts (INT 0Eh and INT 76h)<br>17.4.7 - The Real-Time Clock Interrupt (INT 70h)<br>17.4.8 - The FPU Interrupt (INT 75h)<br>17.4.9 - Nonmaskable Interrupts (INT 2)<br>17.4.10 - Other Interrupts<br>17.5 - Chaining Interrupt Service Routines<br>17.6 - Reentrancy Problems<br>17.7 - The Efficiency of an Interrupt Driven System<br>17.7.1 - Interrupt Driven I/O vs. Polling<br>17.7.2 - Interrupt Service Time<br>17.7.3 - Interrupt Latency<br>17.7.4 - Prioritized Interrupts<br>17.8 - Debugging ISRs<br><br><br><br>17.9 Summary<br><br>Chapter 18 - Resident Programs<br>18.1 - DOS Memory Usage and TSRs<br>18.2 - Active vs. Passive TSRs<br>18.3 - Reentrancy<br>18.3.1 - Reentrancy Problems with DOS<br>18.3.2 - Reentrancy Problems with BIOS<br>18.3.3 - Reentrancy Problems with Other Code<br>18.4 - The Multiplex Interrupt (INT 2Fh)<br>18.5 - Installing a TSR<br>18.6 - Removing a TSR<br>18.7 - Other DOS Related Issues<br>18.8 - A Keyboard Monitor TSR<br>18.9 - Semiresident Programs<br><br><br>18.10 Summary<br><br>Chapter 19 - Processes, Coroutines, and Concurrency<br>19.1 - DOS Processes<br>19.1.1 - Child Processes in DOS<br>19.1.1.1 - Load and Execute<br>19.1.1.2 - Load Program<br>19.1.1.3 - Loading Overlays<br>19.1.1.4 - Terminating a Process<br>19.1.1.5 - Obtaining the Child Process Return Code<br>19.1.2 - Exception Handling in DOS: The Break Handler<br>19.1.3 - Exception Handling in DOS: The Critical Error Handler<br>19.1.4 - Exception Handling in DOS: Traps<br>19.1.5 - Redirection of I/O for Child Processes<br>19.2 - Shared Memory<br>19.2.1 - Static Shared Memory<br>19.2.2 - Dynamic Shared Memory<br>19.3 - Coroutines<br>19.3.1 - AMAZE.ASM<br>19.3.2 - 32-bit Coroutines<br>19.4 - Multitasking<br>19.4.1 - Lightweight and HeavyWeight Processes<br>19.4.2 - The UCR Standard Library Processes Package<br>19.4.3 - Problems with Multitasking<br>19.4.4 - A Sample Program with Threads<br>19.5 - Synchronization<br>19.5.1 - Atomic Operations, Test & Set, and Busy-Waiting<br>19.5.2 - Semaphores<br>19.5.3 - The UCR Standard Library Semaphore Support<br>19.5.4 - Using Semaphores to Protect Critical Regions<br>19.5.5 - Using Semaphores for Barrier Synchronization<br>19.6 - Deadlock<br><br><br><br>19.7 Summary<br><br>Section Five: The PC's I/O Ports<br><br>Chapter 20 - The PC Keyboard<br>20.1 - Keyboard Basics<br>20.2 - The Keyboard Hardware Interface<br>20.3 - The Keyboard DOS Interface<br>20.4 - The Keyboard BIOS Interface<br>20.5 - The Keyboard Interrupt Service Routine<br>20.6 - Patching into the INT 9 Interrupt Service Routine<br>20.7 - Simulating Keystrokes<br>20.7.1 - Stuffing Characters in the Type Ahead Buffer<br>20.7.2 - Using the 80x86 Trace Flag to Simulate IN AL, 60H Instructions<br>20.7.3 - Using the 8042 Microcontroller to Simulate Keystrokes<br><br><br>20.8 Summary<br><br>Chapter 21 - The PC Parallel Ports<br>21.1 - Basic Parallel Port Information<br>21.2 - The Parallel Port Hardware<br>21.3 - Controlling a Printer Through the Parallel Port<br>21.3.1 - Printing via DOS<br>21.3.2 - Printing via BIOS<br>21.3.3 - An INT 17h Interrupt Service Routine<br>21.4 - Inter-Computer Communications on the Parallel Port<br><br><br><br>21.5 Summary<br><br>Chapter 22 - The PC Serial Ports<br>22.1 - The 8250 Serial Communications Chip<br>22.1.1 - The Data Register (Transmit/Receive Register)<br>22.1.2 - The Interrupt Enable Register (IER)<br>22.1.3 - The Baud Rate Divisor<br>22.1.4 - The Interrupt Identification Register (IIR)<br>22.1.5 - The Line Control Register<br>22.1.6 - The Modem Control Register<br>22.1.7 - The Line Status Register (LSR)<br>22.1.8 - The Modem Status Register (MSR)<br>22.1.9 - The Auxiliary Input Register<br>22.2 - The UCR Standard Library Serial Communications Support Routines<br>22.3 - Programming the 8250 (Examples from the Standard Library)<br><br>22.4 Summary<br><br>Chapter 23 - The PC Video Display<br>23.1 - Memory Mapped Video<br>23.2 - The Video Attribute Byte<br>23.3 - Programming the Text Display<br><br><br>23.4 Summary<br><br>Chapter 24 - The PC Game Adapter<br>24.1 - Typical Game Devices<br>24.2 - The Game Adapter Hardware<br>24.3 - Using BIOS' Game I/O Functions<br>24.4 - Writing Your Own Game I/O Routines<br>24.5 - The Standard Game Device Interface (SGDI)<br>24.5.1 - Application Programmer's Interface (API)<br>24.5.2 - Read4Sw<br>24.5.3 - Read4Pots:<br>24.5.4 - ReadPot<br>24.5.5 - Read4:<br>24.5.6 - CalibratePot<br>24.5.7 - TestPotCalibration<br>24.5.8 - ReadRaw<br>24.5.9 - ReadSwitch<br>24.5.10 - Read16Sw<br>24.5.11 - Remove<br>24.5.12 - TestPresence<br>24.5.13 - An SGDI Driver for the Standard Game Adapter Card<br>24.6 - An SGDI Driver for the CH Products' Flight Stick Pro'<br>24.7 - Patching Existing Games<br><br><br><br>24.8 Summary<br><br>Section Six: Optimization<br><br>25.1 - When to Optimize, When Not to Optimize<br>25.2 - How Do You Find the Slow Code in Your Programs?<br>25.3 - Is Optimization Necessary?<br>25.4 - The Three Types of Optimization<br>25.5 - Improving the Implementation of an Algorithm<br><br><br><br>25.6 Summary<br><br>Section Seven: Appendixes<br>Appendix A: ASCII/IBM Character Set<br>Appendix B: Annotated Bibliography<br>Appendix C: Keyboard Scan Codes<br>Appendix D: Instruction Set Reference<br>Section D1<br><br>Section D2<br><br>Section D3<br><br>Section D4<br><br>The Art of Assembly Language Programming - 30 SEP 1996<br><br>[Randall Hyde]<br>5 982浏览会员免费
- com大小:8MB接收串口数据保存至ACCESS数据库接收串口数据保存至ACCESS数据库接收串口数据保存至ACCESS数据库接收串口数据保存至ACCESS数据库4 625浏览会员免费
- Access大小:0B为了评奖学金和评优各班都必须对本班的学生的成绩进行统计,求出每个人的学业成绩和综合测评成绩,并进行排名,最终由此确定获得奖学金的人选及评优人选。本系统以网页形式实现这一过程的自动化,方便了班级成绩的统计工作。 三. 系统功能分析 1. 学号共同部分的设置。 2. 学生信息的输入。 3. 课程信息的输入。 4. 成绩信息的输入。 5. 学业成绩、综合测评成绩等参数的计算。 6. 成绩统计。 7. 成绩查询。为了评奖学金和评优各班都必须对本班的学生的成绩进行统计,求出每个人的学业成绩和综合测评成绩,并进行排名,最终由此确定获得奖学金的人选及评优人选。本系统以网页形式实现这一过程的自动化,方便了班级成绩的统计工作。 三. 系统功能分析 1. 学号共同部分的设置。 2. 学生信息的输入。 3. 课程信息的输入。 4. 成绩信息的输入。 5. 学业成绩、综合测评成绩等参数的计算。 6. 成绩统计。 7. 成绩查询。3 213浏览会员免费
- Android大小:8KBAndroid2.2 API 中文文档,注意这里只有AccessibilityService控件的,请关注http://over140.cnblogs.com/的更新。Android2.2 API 中文文档,注意这里只有AccessibilityService控件的,请关注http://over140.cnblogs.com/的更新。5 146浏览会员免费
- winform大小:24KB在C#操作access数据库的源码,包括对数据的增删改查等操作,全部的源代码都包括在里面,这是我本人上课时候做的一个作业,自己弄了好久才弄好。在C#操作access数据库的源码,包括对数据的增删改查等操作,全部的源代码都包括在里面,这是我本人上课时候做的一个作业,自己弄了好久才弄好。5 727浏览会员免费
- -200大小:927BS7 -200 PC Access V1.0(OPC Server)的授权S7 -200 PC Access V1.0(OPC Server)的授权4 285浏览会员免费
- svn大小:9MB包括APACHE、SVN和客户端的安装及配置。 step1、安装apache服务器。 版本:httpd-2.2.15-win32-x86-no_ssl.msi 目录:E:\Apache2.2 验证安装结果:IE中输入:http://localhost,显示:"It works!" ok. step2、安装SVN服务器。 版本:Setup-Subversion-1.6.5.msi step3、配置: 1、将E:\svnserver\bin目录下的mod_dav_svn.so和mod_authz_svn.so复制到E:\Apache2.2\modules。 2、配置E:\Apache2.2\conf\httpd.conf。 启用: LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so 并且增加: LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so 增加代码库定义,将在E:\svnhost处创建代码库。 <Location /svn> DAV svn SVNPath E:\svnhost AuthType Basic AuthName "Subversion repositories" AuthUserFile passwd #AuthzSVNAccessFile svnaccessfile Require valid-user </Location> step4、创建并执行CreateSvnSvice.bat 功能是创建SVN服务和代码库。 step5、创建并执行start.bat 功能是启动SVN服务。 step6、配置代码库权限 1、配置E:\svnhost\conf\svnserve.conf (去掉#) anon-access = read auth-access = write password-db = passwd authz-db = authz realm = My First Repository 2、配置E:\svnhost\conf\passwd,增加密码为123456的两个用户zxyu、ljy。 [users] zxyu=123456 ljy=123456 3、配置E:\svnhost\conf\authz 增加管理员和程序员zxyu、ljy,并配置他们的权限(更多权限管理参考其他文档): [groups] admin = zxyu coder = ljy [/] @admin = rw [/wm] ljy = rw step7、安装客户端测试。 版本:TortoiseSVN-1.6.8.19260-win32-svn-1.6.11.msi 1、向代码库上传代码(import) 2、checkout ... 一切顺利。 张旭煜 2010-6-1包括APACHE、SVN和客户端的安装及配置。 step1、安装apache服务器。 版本:httpd-2.2.15-win32-x86-no_ssl.msi 目录:E:\Apache2.2 验证安装结果:IE中输入:http://localhost,显示:"It works!" ok. step2、安装SVN服务器。 版本:Setup-Subversion-1.6.5.msi step3、配置: 1、将E:\svnserver\bin目录下的mod_dav_svn.so和mod_authz_svn.so复制到E:\Apache2.2\modules。 2、配置E:\Apache2.2\conf\httpd.conf。 启用: LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so 并且增加: LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so 增加代码库定义,将在E:\svnhost处创建代码库。 <Location /svn> DAV svn SVNPath E:\svnhost AuthType Basic AuthName "Subversion repositories" AuthUserFile passwd #AuthzSVNAccessFile svnaccessfile Require valid-user </Location> step4、创建并执行CreateSvnSvice.bat 功能是创建SVN服务和代码库。 step5、创建并执行start.bat 功能是启动SVN服务。 step6、配置代码库权限 1、配置E:\svnhost\conf\svnserve.conf (去掉#) anon-access = read auth-access = write password-db = passwd authz-db = authz realm = My First Repository 2、配置E:\svnhost\conf\passwd,增加密码为123456的两个用户zxyu、ljy。 [users] zxyu=123456 ljy=123456 3、配置E:\svnhost\conf\authz 增加管理员和程序员zxyu、ljy,并配置他们的权限(更多权限管理参考其他文档): [groups] admin = zxyu coder = ljy [/] @admin = rw [/wm] ljy = rw step7、安装客户端测试。 版本:TortoiseSVN-1.6.8.19260-win32-svn-1.6.11.msi 1、向代码库上传代码(import) 2、checkout ... 一切顺利。 张旭煜 2010-6-15 128浏览会员免费
- Unicode大小:305KB完整的汉字笔画数笔顺数据库,包含ID、汉字、笔画数、笔顺、Unicode、GB码信息i。 每个汉字带有笔顺,可以通过笔顺知道汉字的构造和书写顺序; 可以通过给定一个笔顺,快速知道笔画数,比如笔顺为“34”,则笔画数为2; 可以通过用户输入一个笔顺,快速知道该汉字的结构,以得到候选的汉字,适合用来开发汉字输入法,比如:输入笔顺“34”,因3是撇4是捺,则可能的汉字为“人、八、入、乂”中的一个。 该数据库为完整的20902汉字,可以使用c、c++、C#、PHP、Delphi、Java或者Web语言如ASP、ASP.net进行汉字系统的开发。完整的汉字笔画数笔顺数据库,包含ID、汉字、笔画数、笔顺、Unicode、GB码信息i。 每个汉字带有笔顺,可以通过笔顺知道汉字的构造和书写顺序; 可以通过给定一个笔顺,快速知道笔画数,比如笔顺为“34”,则笔画数为2; 可以通过用户输入一个笔顺,快速知道该汉字的结构,以得到候选的汉字,适合用来开发汉字输入法,比如:输入笔顺“34”,因3是撇4是捺,则可能的汉字为“人、八、入、乂”中的一个。 该数据库为完整的20902汉字,可以使用c、c++、C#、PHP、Delphi、Java或者Web语言如ASP、ASP.net进行汉字系统的开发。5 1426浏览会员免费
- WINCE大小:1MB文件说明 StudentDataBase.cab为CAB安装包,是在WINCE5.0下通过ADO访问ACCESS数据库的程序。此历程包含了ListContol控件,bottom控件,支持数据库的建立、打开和关闭、数据库数据的刷新 ;数据库里记录的添加、编辑和删除。控件支持软键盘的自动弹出文件说明 StudentDataBase.cab为CAB安装包,是在WINCE5.0下通过ADO访问ACCESS数据库的程序。此历程包含了ListContol控件,bottom控件,支持数据库的建立、打开和关闭、数据库数据的刷新 ;数据库里记录的添加、编辑和删除。控件支持软键盘的自动弹出4 172浏览会员免费