一本很好的汇编语言教程,跟大家一起分享 课程介绍 第1章 预备知识 1.1 汇编语言的由来及其特点 1 机器语言 2 汇编语言 3 汇编程序 4 汇编语言的主要特点 5 汇编语言的使用领域 1.2 数据的表示和类型 1 数值数据的表示 2 非数值数据的表示 3 基本的数据类型 1.3 习题 第2章 CPU资源和存储器 2.1 寄存器组 1 寄存器组 2 通用寄存器的作用 3 专用寄存器的作用 2.2 存储器的管理模式 1 16位微机的内存管理模式 2 32位微机的内存管理模式 2.3 习题 第3章 操作数的寻址方式 3.1 立即寻址方式 3.2 寄存器寻址方式 3.3 直接寻址方式 3.4 寄存器间接寻址方式 3.5 寄存器相对寻址方式 3.6 基址加变址寻址方式 3.7 相对基址加变址寻址方式 3.8 32位地址的寻址方式 3.9 操作数寻址方式的小结 3.10 习题 第4章 标识符和表达式 4.1 标识符 4.2 简单内存变量的定义 1 内存变量定义的一般形式 2 字节变量 3 字变量 4 双字变量 5 六字节变量 6 八字节变量 7 十字节变量 4.3 调整偏移量伪指令 1 偶对齐伪指令 2 对齐伪指令 3 调整偏移量伪指令 4 偏移量计数器的值 4.4 复合内存变量的定义 1 重复说明符 2 结构类型的定义 3 联合类型的定义 4 记录类型的定义 5 数据类型的自定义 4.5 标号 4.6 内存变量和标号的属性 1 段属性操作符 2 偏移量属性操作符 3 类型属性操作符 4 长度属性操作符 5 容量属性操作符 6 强制属性操作符 7 存储单元别名操作符 4.7 表达式 1 进制伪指令 2 数值表达式 3 地址表达式 4.8 符号定义语句 1 等价语句 2 等号语句 3 符号名定义语句 4.9 习题 第5章 微机CPU的指令系统 5.1 汇编语言指令格式 1 指令格式 2 了解指令的几个方面 5.2 指令系统 1 数据传送指令 2 标志位操作指令 3 算术运算指令 4 逻辑运算指令 5 移位操作指令 6 位操作指令 7 比较运算指令 8 循环指令 9 转移指令 10 条件设置字节指令 11 字符串操作指令 12 ASCII-BCD码调整指令 13 处理器指令 5.3 习题 第6章 程序的基本结构 6.1 程序的基本组成 1 段的定义 2 段寄存器的说明语句 3 堆栈段的说明 4 源程序的结构 6.2 程序的基本结构 1 顺序结构 2 分支结构 3 循环结构 6.3 段的基本属性 1 对齐类型 2 组合类型 3 类别 4 段组 6.4 简化的段定义 1 存储模型说明伪指令 2 简化段定义伪指令 3 简化段段名的引用 6.5 源程序的辅助说明伪指令 1 模块名定义伪指令 2 页面定义伪指令 3 标题定义伪指令 4 子标题定义伪指令 6.6 习题 第7章 子程序和库 7.1 子程序的定义 7.2 子程序的调用和返回指令 1 调用指令 2 返回指令 7.3 子程序的参数传递 1 寄存器传递参数 2 存储单元传递参数 3 堆栈传递参数 7.4 寄存器的保护与恢复 7.5 子程序的完全定义 1 子程序完全定义格式 2 子程序的位距 3 子程序的语言类型 4 子程序的可见性 5 子程序的起始和结束操作 6 寄存器的保护和恢复 7 子程序的参数传递 8 子程序的原型说明 9 子程序的调用伪指令 10 局部变量的定义 7.6 子程序库 1 建立库文件命令 2 建立库文件举例 3 库文件的应用 4 库文件的好处 7.7 习题 第8章 输入输出和中断 8.1 输入输出的基本概念 1 I/O端口地址 2 I/O指令 8.2 中断 1 中断的基本概念 2 中断指令 3 中断返回指令 4 中断和子程序 8.3 中断的分类 1 键盘输入的中断功能 2 屏幕显示的中断功能 3 打印输出的中断功能 4 串行通信口的中断功能 5 鼠标的中断功能 6 目录和文件的中断功能 7 内存管理的中断功能 8 读取和设置中断向量 8.4 习题 第9章 宏 9.1 宏的定义和引用 1 宏的定义 2 宏的引用 3 宏的参数传递方式 4 宏的嵌套定义 5 宏与子程序的区别 9.2 宏参数的特殊运算符 1 连接运算符 2 字符串整体传递运算符 3 字符转义运算符 4 计算表达式运算符 9.3 与宏有关的伪指令 1 局部标号伪指令 2 取消宏定义伪指令 3 中止宏扩展伪指令 9.4 重复汇编伪指令 1 伪指令REPT 2 伪指令IRP 3 伪指令IRPC 9.5 条件汇编伪指令 1 条件汇编伪指令的功能 2 条件汇编伪指令的举例 9.6 宏的扩充 1 宏定义形式 2 重复伪指令REPEAT 3 循环伪指令WHILE 4 循环伪指令FOR 5 循环伪指令FORC 6 转移伪指令GOTO 7 宏扩充的举例 8 系统定义的宏 9.7 习题 第10章 应用程序的设计 10.1 字符串的处理程序 10.2 数据的分类统计程序 10.3 数据转换程序 10.4 文件操作程序 10.5 动态数据的编程 10.6 COM文件的编程 10.7 驻留程序 10.8 程序段前缀及其应用 1 程序段前缀的字段含义 2 程序段前缀的应用 10.9 习题 第11章 数值运算协处理器 11.1 协处理器的数据格式 1 有符号整数 2 BCD码数据 3 浮点数 11.2 协处理器的结构 11.3 协处理器的指令系统 1 操作符的命名规则 2 数据传送指令 3 数学运算指令 4 比较运算指令 5 超越函数运算指令 6 常数操作指令 7 协处理器控制指令 11.4 协处理器的编程举例 11.5 习题 第12章 汇编语言和C语言 12.1 汇编语言的嵌入 12.2 C语言程序的汇编输出 12.3 一个具体的例子 12.4 习题 附录
上传时间: 2013-07-05
上传用户:hw1688888
通用异步收发器(Universal Asynchronous Receiver Transmitter,UART)是一种能同时支持短距离和长距离数据传输的串行通信接口,被广泛应用于微机和外设之间的数据交换。像8251、NS8250、NS16550等都是常用的UART芯片,但是这些专用的串行接口芯片的缺点是数据传输速率比较慢,难以满足高速率数据传输的场合,而更重要的就是它们都具有不可移植性,因此要利用这些芯片来实现PC机和FPGA芯片之间的通信,势必会增加接口连线的复杂程度以及降低整个系统的稳定性和有效性。 本课题就是针对UART的特点以及FPGA设计具有可移植性的优势,提出了一种基于FPGA芯片的嵌入式UART设计方法,其中主要包括状态机的描述形式以及自顶向下的设计方法,利用硬件描述语言来编制UART的各个子功能模块以及顶层模块,之后将其集成到FPGA芯片的内部,这样不仅能解决传统UART芯片的缺点而且同时也使整个系统变得更加具有紧凑性以及可靠性。 本课题所设计的LIART支持标准的RS-232C传输协议,主要设计有发送模块、接收模块、线路控制与中断仲裁模块、Modem控制模块以及两个独立的数据缓冲区FIFO模块。该模块具有可变的波特率、数据帧长度以及奇偶校验方式,还有多种中断源、中断优先级、较强的抗干扰数据接收能力以及芯片内部自诊断的能力,模块内分开的接收和发送数据缓冲寄存器能实现全双工通信。除此之外最重要的是利用IP模块复用技术设计数据缓冲区FIFO,采用两种可选择的数据缓冲模式。这样既可以应用于高速的数据传输环境,也能适合低速的数据传输场合,因此可以达到资源利用的最大化。 在具体的设计过程中,利用Synplify Pro综合工具、ModelSim仿真工具、ISE集成的软件开发环境中对各个功能模块进行综合优化、仿真验证以及下载实现。各项数据结果表明,本课题中所设计的UART满足预期设计目标。
上传时间: 2013-08-02
上传用户:rocketrevenge
现代通信朝着全网IP化的进程逐步发展,越来越多的通信需要IP路由查找;同时光纤技术的发展,使得比特速率达到了20Gbps,路由技术成了整个通信系统的瓶颈,迫切需要一种具有高查找性能,低成本的路由算法,能够适应大规模应用。 本文研究了一种高性能、低成本的路由算法。在四分支并行路由查找算法的基础上,实现了双分支并行,每个分支流水查找的16-8-8路由算法。该算法由三级表构成,长度小于16的前缀通过扩展成为长度16的前缀存储在第一级表中;长度小于24位的前缀通过扩展成为长度24的前缀存储在前两级表中;长度大于24的前缀则通过专门的存储空间进行存储。将IP路由的二维查找转化为一维精确查找,每次查找最多访问存储器3次,就可以查得下一跳的路由信息。使用Verilog语言实现了本文提出的算法,并对算法进行了功能仿真。为了实现低成本,该算法采用了FPGA和SSRAM的硬件结构实现。 功能仿真表明本文设计的算法查找速度能适应20Gbps的接口转发速率。
上传时间: 2013-04-24
上传用户:金宜
随着信息技术的发展,数字信号的采集与处理在科学研究、工业生产、航空航天、医疗卫生等部门得到越来越广泛的应用,这些应用中对数字信号的传输速度提出了比较高的要求。传统的基于ISA总线的信号传输效率低,严重制约着系统性能的提高。 PCI总线以其高性能、低成本、开放性、软件兼容性等众多优点成为当今最流行的计算机局部总线。但是,由于PCI总线硬件接口复杂、不易于接入、协议规范比较繁琐等缺点,常常需要专用的接口芯片作为桥接,为了解决这一系列问题,本文提出了一种基于FPGA的PCI总线接口桥接逻辑的实现方案,支持PCI突发访问方式,突发长度为8至128个双字长度,核心FPGA芯片采用ALTERA公司的CYCLONE FPGA系列的EP1C6Q240C8,容量为6000个逻辑宏单元,速度为-8,编译后系统速度可以达到80MHz,取得了良好的效果。 基于FPGA的PCI总线接口桥接逻辑的核心是PCI接口模块。在硬件方面,特别讨论了PCI接口模块、地址转换模块、数据缓冲模块、外部接口模块和SRAM DMA控制模块等五个功能模块的设计方案和硬件电路实现方法,着重分析了PCI接口模块的数据传输方式,采用模块化的方法设计了内部控制逻辑,并进行了相关的时序仿真和逻辑验证,硬件需要软件的配合才能实现其功能,因此设备驱动程序的设计是一个重要部分,论文研究了Windows XP体系结构下的WDM驱动模式的组成、开发设备驱动程序的工具以及开发系统实际硬件的设备驱动程序时的一些关键技术。 本文最后利用基于FPGA的PCI总线接口桥接逻辑中的关键技术,对PCI数据采集卡进行了整体方案的设计。该系统采用Altera公司的cyclone Ⅱ系列FPGA实现。
上传时间: 2013-07-24
上传用户:ca05991270
在数字通信中,采用差错控制技术(纠错码)是提高信号传输可靠性的有效手段,并发挥着越来越重要的作用。纠错码主要有分组码和卷积码两种。在码率和编码器复杂程度相同的情况下,卷积码的性能优于分组码。 卷积码的译码方法主要有代数译码和概率译码。代数译码是基于码的代数结构;而概率译码不仅基于码的代数结构,还利用了信道的统计特性,能充分发挥卷积码的特点,使译码错误概率达到很小。 卷积码译码器的设计是由高性能的复杂译码器开始的,对于概率译码最初的序列译码,随着译码约束长度的增加,其译码错误概率可达到非常小。后来慢慢地向低性能的简单译码器演化,对不太长的约束长度,维特比(Viterbi)算法是非常实用的。维特比算法是一种最大似然的译码方法。当编码约束度不太大(小于等于10)或者误码率要求不太高(约10-5)时,Viterbi译码算法效率很高,速度很快,译码器也较简单。 目前,卷积码在数传系统,尤其是在卫星通信、移动通信等领域已被广泛应用。 本论文对卷积码编码和Viterbi译码的设计原理及其FPGA实现方案进行了研究。同时,将交织和解交织技术应用于编码和解码的过程中。 首先,简要介绍了卷积码的基础知识和维特比译码算法的基本原理,并对硬判决译码和软判决译码方法进行了比较。其次,讨论了交织和解交织技术及其在纠错码中的应用。然后,介绍了FPGA硬件资源和软件开发环境Quartus Ⅱ,包括数字系统的设计方法和设计规则。再有,对基于FPGA的维特比译码器各个模块和相应算法实现、优化进行了研究。最后,在Quartus Ⅱ平台上对硬判决译码和软判决译码以及有无交织等不同情况进行了仿真,并根据仿真结果分析了维特比译码器的性能。 分析结果表明,系统的误码率达到了设计要求,从而验证了译码器设计的可靠性,所设计基于FPGA的并行Viterbi译码器适用于高速数据传输的场合。
上传时间: 2013-04-24
上传用户:tedo811
本文对嵌入硬核的FPGA布线通道宽度分布和改进FPGA布局算法进行了研究。文章在嵌入硬核的FPGA布线通道宽度分布研究中,引入了四种架构,其布线通道宽度分布函数分别为均匀、脉冲、高斯和三角分布。通过修改VPR工具的源代码,使平台适用于具有嵌入硬核的FPGA架构,利用MCNC基准电路来测试这四种架构的性能。实验结果表明:在以网线平均长度作为指标的测试中,通道宽度均匀分布的架构具有更短的布线长度、更优的性能。
上传时间: 2013-06-01
上传用户:JGR2013
基于51单片机超声波测距器设计,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。要求测量范围在0.10-3.00m,测量精度1cm,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。
上传时间: 2013-04-24
上传用户:squershop
当前,在系统级互连设计中高速串行I/O技术迅速取代传统的并行I/O技术正成为业界趋势。人们已经意识到串行I/O“潮流”是不可避免的,因为在高于1Gbps的速度下,并行I/O方案已经达到了物理极限,不能再提供可靠和经济的信号同步方法。基于串行I/O的设计带来许多传统并行方法所无法提供的优点,包括:更少的器件引脚、更低的电路板空间要求、减少印刷电路板(PCB)层数、PCB布局布线更容易、接头更小、EMI更少,而且抵抗噪声的能力也更好。高速串行I/O技术正被越来越广泛地应用于各种系统设计中,包括PC、消费电子、海量存储、服务器、通信网络、工业计算和控制、测试设备等。迄今业界已经发展出了多种串行系统接口标准,如PCI Express、串行RapidIO、InfiniBand、千兆以太网、10G以太网XAUI、串行ATA等等。 Aurora协议是为私有上层协议或标准上层协议提供透明接口的串行互连协议,它允许任何数据分组通过Aurora协议封装并在芯片间、电路板间甚至机箱间传输。Aurora链路层协议在物理层采用千兆位串行技术,每物理通道的传输波特率可从622Mbps扩展到3.125Gbps。Aurora还可将1至16个物理通道绑定在一起形成一个虚拟链路。16个通道绑定而成的虚拟链路可提供50Gbps的传输波特率和最大40Gbps的全双工数据传输速率。Aurora可优化支持范围广泛的应用,如太位级路由器和交换机、远程接入交换机、HDTV广播系统、分布式服务器和存储子系统等需要极高数据传输速率的应用。 传统的标准背板如VME总线和CompactPCI总线都是采用并行总线方式。然而对带宽需求的不断增加使新兴的高速串行总线背板正在逐渐取代传统的并行总线背板。现在,高速串行背板速率普遍从622Mbps到3.125Gbps,甚至超过10Gbps。AdvancedTCA(先进电信计算架构)正是在这种背景下作为新一代的标准背板平台被提出并得到快速的发展。它由PCI工业计算机制造商协会(PICMG)开发,其主要目的是定义一种开放的通信和计算架构,使它们能被方便而迅速地集成,满足高性能系统业务的要求。ATCA作为标准串行总线结构,支持高速互联、不同背板拓扑、高信号密度、标准机械与电气特性、足够步线长度等特性,满足当前和未来高系统带宽的要求。 采用FPGA设计高速串行接口将为设计带来巨大的灵活性和可扩展能力。Xilinx Virtex-IIPro系列FPGA芯片内置了最多24个RocketIO收发器,提供从622Mbps到3.125Gbps的数据速率并支持所有新兴的高速串行I/O接口标准。结合其强大的逻辑处理能力、丰富的IP核心支持和内置PowerPC处理器,为企业从并行连接向串行连接的过渡提供了一个理想的连接平台。 本文论述了采用Xilinx Virtex-IIPro FPGA设计传输速率为2.5Gbps的高速串行背板接口,该背板接口完全符合PICMG3.0规范。本文对串行高速通道技术的发展背景、现状及应用进行了简要的介绍和分析,详细分析了所涉及到的主要技术包括线路编解码、控制字符、逗点检测、扰码、时钟校正、通道绑定、预加重等。同时对AdvancedTCA规范以及Aurora链路层协议进行了分析, 并在此基础上给出了FPGA的设计方法。最后介绍了基于Virtex-IIPro FPGA的ATCA接口板和MultiBERT设计工具,可在标准ATCA机框内完成单通道速率为2.5Gbps的全网格互联。
上传时间: 2013-05-29
上传用户:frank1234
随着移动终端、多媒体、Internet网络、通信,图像扫描技术的发展,以及人们对图象分辨率,质量要求的不断提高,用软件压缩难以达到实时性要求,而且会带来因传输大量原始图象数据带来的带宽要求,因此采用硬件实现图象压缩已成为一种必然趋势。而熵编码单元作为图像变换,量化后的处理环节,是图像压缩中必不可少的部分。研究熵编解码器的硬件实现,具有广阔的应用背景。本文以星载视频图像压缩的硬件实现项目为背景,对熵编码器和解码器的硬件实现进行探讨,给出了并行熵编码和解码器的实现方案。熵编解码器中的难点是huffman编解码器的实现。在设计并行huffman编码方案时通过改善Huffman编码器中变长码流向定长码流转换时的控制逻辑,避免了因数据处理不及时造成数据丢失的可能性,从而保证了编码的正确性。而在实现并行的huffman解码器时,解码算法充分利用了规则化码书带来的码字的单调性,及在特定长度码字集内码字变化的连续性,将并行解码由模式匹配转换为算术运算,提高了存储器的利用率、系统的解码效率和速度。在实现并行huffman编码的基础上,结合针对DC子带的预测编码,针对直流子带的游程编码,能够对图像压缩系统中经过DWT变换,量化,扫描后的数据进行正确的编码。同时,在并行huffman解码基础上的熵解码器也可以解码出正确的数据提供给解码系统的后续反量化模块,进一步处理。在本文介绍的设计方案中,按照自顶向下的设计方法,对星载图像压缩系统中的熵编解码器进行分析,进而进行逻辑功能分割及模块划分,然后分别实现各子模块,并最终完成整个系统。在设计过程中,用高级硬件描述语言verilogHDL进行RTL级描述。利用了Altera公司的QuartusII开发平台进行设计输入、编译、仿真,同时还采用modelsim仿真工具和symplicity的综合工具,验证了设计的正确性。通过系统波形仿真和下板验证熵编码器最高频率可以达到127M,在62.5M的情况下工作正常。而熵解码器也可正常工作在62.5M,吞吐量可达到2500Mbps,也能满足性能要求。仿真验证的结果表明:设计能够满足性能要求,并具有一定的使用价值。
上传时间: 2013-05-19
上传用户:吴之波123
Turbo码是一类并行级联的系统卷积码,它是在综合级联码、最大后验概率(MAP)译码、软输入软输出及迭代译码等理论基础上的一种创新。Turbo码的基本原理是通过对编码器结构的巧妙设计,多个子码通过交织器隔离进行并行级联编码输出,增大了码距。译码器则以类似内燃机引擎废气反复利用的机理进行迭代译码以反复利用有效信息流,从而获得卓越的纠错能力。计算机仿真表明,Turbo码不但在加性高斯噪声信道下性能优越,而且具有很强的抗衰落、抗干扰能力,当交织长度足够长时,其纠错性能接近香农极限。 FPGA(FieldProgrammableGateArray),即现场可编程门阵列,是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。FPGA技术具有大规模、高集成度、高可靠性、设计周期短、投资小、灵活性强等优点,逐步成为复杂数字硬件电路设计的理想选择。 本论文以东南大学移动通信实验室B3G课题组提出的“支持多天线的广义多载波无线传输技术”(MIMO-GMC)为背景,分析了Turbo译码算法,并针对MIMO-GMC系统的迭代接收机中所采用的外信息保留和联合检测译码迭代的特点,完成了采用滑动窗Log-MAP算法的软输入、软输出的Turbo译码器的设计。整个译码器模块的设计采用Verilog语言描述,并在VirtexⅡPro系列FPGA芯片上实现。
上传时间: 2013-04-24
上传用户:shanml