<script type="text/javascript"></script> <script src="show_google.js" type="text/javascript"></script> <script type="text/javascript"></script>
[From]http://weibing.blogbus.com/logs/3170288.html
很好的汇编学习资料,来自成都理工大学的一个教学软件,汇总得很好。原来的连接已经找不到,我上传到这里。还带一些小程序,和测试题。其实这个软件都放了一段时间,只不过一直没发现里头有这么好的资料。很多时候就像这样,得到一块石头又马上去寻找更多的石头,当回过头来认真查看时,才发现手上的宝贝还真不少...... 寄存器与存储器 1. 寄存器功能 . 寄存器的一般用途和专用用途 . CS:IP 控制程序执行流程 . SS:SP 提供堆栈栈顶单元地址 . DS:BX(SI,DI) 提供数据段内单元地址 . SS:BP 提供堆栈内单元地址 . ES:BX(SI,DI) 提供附加段内单元地址 . AX,CX,BX和CX寄存器多用于运算和暂存中间计算结果,但又专用于某些指令(查阅 指令表)。 . PSW程序状态字寄存器只能通过专用指令(LAHF, SAHF)和堆栈(PUSHF,POPF)进行存取。 2. 存储器分段管理 . 解决了16位寄存器构成20位地址的问题 . 便于程序重定位 . 20位物理地址=段地址 * 16 + 偏移地址 . 程序分段组织: 一般由代码段,堆栈段,数据段和附加段组成,不设置堆栈段时 则使用系统内部的堆栈。 3. 堆栈 . 堆栈是一种先进后出的数据结构 , 数据的存取在栈顶进行 , 数据入栈使堆栈向地址减小的方向扩展 。 . 堆栈常用于保存子程序调用和中断响应时的断点以及暂存数据或中间计算结果 。 . 堆栈总是以字为单位存取 指令系统与寻址方式 1. 指令系统 . 计算机提供给用户使用的机器指令集称为指令系统,大多数指令为双操作数指令。执行指令后,一般源操作数不变,目的操作数被计算结果替代。 . 机器指令由CPU执行,完成某种运算或操作,8086/8088指令系统中的指令分为6类: 数据传送,算术运算,逻辑运算,串操作,控制转移和处理机控制。 2. 寻址方式 . 寻址方式确定执行指令时获得操作数地址的方法 . 分为与数据有关的寻址方式(7种)和与转移地址有关的寻址方式(4)种。 . 与数据有关的寻址方式的一般用途: (1) 立即数寻址方式--将常量赋给寄存器或存储单元 (2) 直接寻址方式--存取单个变量 (3) 寄存器寻址方式--访问寄存器的速度快于访问存储单元的速度 (4) 寄存器间接寻址方式--访问数组元素 (5) 变址寻址方式 (6) 基址变址寻址方式 (7) 相对基址变址寻址方式 (5),(6),(7)都便于处理数组元素 . 与数据有关的寻址方式中,提供地址的寄存器只能是BX,SI,DI或BP . 与转移地址有关的寻址方式的一般用途: (1) 段内直接寻址--段内直接转移或子程序调用 (2) 段内间接寻址--段内间接转移或子程序调用 (3) 段间直接寻址--段间直接转移或子程序调用 (4) 段间间接寻址--段间间接转移或子程序调用 汇编程序和汇编语言 1. 汇编程序 . 汇编程序是将汇编语言源程序翻译成二进制代码程序的语言处理程序,翻译的过程称为汇编。 2. 汇编语言 . 汇编语言是用指令助记符,各种标识变量,地址,过程等的标识符书写程序的语言, 汇编语言指令与机器指令一 一对应。 . 伪指令,宏指令不是由CPU执行的指令,而是由汇编程序在汇编期间处理的指令。 . 伪指令指示汇编程序如何完成数据定义,存储空间分配,组织段等工作。 . 宏指令可简化程序并减少程序书写量。 . 条件汇编伪指令的功能是确定是否汇编某段源程序,而不是实现程序分支,对未汇编的程序将不产生相应的目标代码。 . 结构作为一种数据结构可将一组类型不同但有逻辑关联的数据组织在一起,便于 整体处理数据。 . 记录可用于提高存储单元的利用率,将若干不足一个字节或字且有逻辑关联的信 息压缩存放在一个字节或字中。 . 指令中的表达式在汇编期间计算,并且只能对常量或地址进行计算。 程序设计基础 1. 分支程序设计 . 程序分支由条件转移指令或无条件转移指令实现 . 存放若干目的转移地址或跳转指令的跳转表常用于实现多路分支 . 条件转移指令只能实现偏移量为-128至+127字节范围的转移 . 无条件转移指令根据寻址方式可实现短转移(偏移量为-128至+127字节),段内转 移,段间转移。 2. 循环程序设计 . 可由循环控制指令或条件转移指令组织循环结构 . 内层循环结构必须完全包含在外层循环结构内,并不能发生从循环结构外向循环 结构内的转移。 3. 子程序设计 . 子程序中应保护寄存器内容,并正确使用堆栈, 成对执行PUSH和POP指令,保证执行RET指令时堆栈栈顶为返回地址。 . 主程序可通过寄存器,参数表,或堆栈传递参数给子程序 4. EXE文件和COM文件 . 二者都是可执行文件 . COM文件源程序的特点是: 第一条可执行指令的起始存放地址必须是100H,不能 分段,不用定义堆栈,所有过程为NEAR类型,直接用INT 20H 指令返回DOS。 5. DOS功能调用与BIOS中断调用 . 二者都是完成DOS系统提供给用户的输入/输出等常用功能,通过执行软中断指令 完成一次软中断服务。 . DOS功能调用的中断服务程序是操作系统的一部分,存于RAM中; 而BIOS中断调用的中断服务程序存放在ROM中。 输入/输出与中断系统 1. 输入/输出的方式 . 程序直接I/O方式: 用IN和OUT指令直接在端口级上进行I/O操作,数据传送方式 分为无条件传送方式和查询传送方式。 . 中断传送方式: 由CPU响应中断请求完成中断服务。 . DMA传送方式: 直接在存储器与外设之间传送数据。 2. 有关中断的概念 . 中断、中断源、中断请求、中断服务、中断向量、中断向量表、中断响应过程、 中断指令、开中断、关中断、内部中断、外部中断、可屏蔽中断、非屏蔽中断。 3. 键盘I/O、显示器I/O操作 . 键盘的输入操作用BIOS的16H中断调用控制,也可直接访问60H端口(数据端口), 61H端口(状态端口)检测键盘的按键操作。 . 对于特殊键(如Shift , Ctrl , Alt , NumLock , ScrollLock等键)的按动情况,可以直接从来40:17H单元取得有关信息。 . 显示器的图形显示可以用BIOS的10H中断调用实现,另一种速度更快的方法是直 接读写视频缓冲区。 4. 打印机I/O操作由 INT 17H中断调用实现, 串行通讯口操作由 INT 14H中断调用实现。 |