第1章 基础知识 1.1 机器语言 1.2 汇编语言的产生 1.3 汇编语言的组成 1.4 存储器 1.5 指令和数据 1.6 存储单元 1.7 CPU对存储器的读写 1.8 地址总线 1.9 数据总线 1.10 控制总线 1.11 内存地址空间(概述) 1.12 主板 1.13 接口卡 1.14 各类存储器芯片 1.15 内存地址空间 第2章 寄存器 2.1通用寄存器 2.2字在寄存器中的存储 2.3几条汇编指令 2.4物理地址 2.516位结构的CPU 2.68086CPU给出物理地址的方法 2.7“段地址×16+偏移地址=物理地址” 的本质含义 2.8段的概念 2.9段寄存器 2.10CS和IP 2.11修改CS、IP的指令 2.12代码段 实验1查看CPU和内存,用机器指令 和汇编指令编程 第3章寄存器(内存访问) 3.1内存中字的存储 3.2DS和(address) 3.3字的传送 3.4mov、add、sub指令 3.5数据段 3.6栈 3.7CPU提供的栈机制 3.8栈顶超界的问题 3.9push、pop指令 3.10栈段 实验2用机器指令和汇编指令编程 第4章第一个程序 4.1一个源程序从写出到执行的过程 4.2源程序 4.3编辑源程序 4.4编译 4.5连接 4.6以简化的方式进行编译和连接 4.71.exe的执行 4.8谁将可执行文件中的程序装载进入 内存并使它运行? 4.9程序执行过程的跟踪 实验3编程、编译、连接、跟踪 第5章(BX)和loop指令 5.1(BX) 5.2Loop指令 5.3在Debug中跟踪用loop指令实现的 循环程序 5.4Debug和汇编编译器masm对指令的 不同处理 5.5loop和(bx)的联合应用 5.6段前缀 5.7一段安全的空间 5.8段前缀的使用 实验4(bx)和loop的使用 第6章 包含多个段的程序 6.1在代码段中使用数据 6.2在代码段中使用栈 6.3将数据、代码、栈放入不同的段 实验5编写、调试具有多个段的程序 第7章更灵活的定位内存地址的 方法 7.1anol和or指令 7.2关于ASCII码 7.3以字符形式给出的数据 7.4大小写转换的问题 7.5(bx+idata) 7.6用(bx+idata)的方式进行数组的 处理 7.7SI和DI 7.8(bx+si)和(bx+di) 7.9(bx+si+idata)和(bx+di+idata) 7.10不同的寻址方式的灵活应用 实验6实践课程中的程序 第8章数据处理的两个基本问题 8.1bx、si、di和bp 8.2机器指令处理的数据在什么地方 8.3汇编语言中数据位置的表达 8.4寻址方式 8.5指令要处理的数据有多长 8.6寻址方式的综合应用 8.7div指令 8.8伪指令dd 8.9dup 实验7寻址方式在结构化数据访问中的 应用 第9章转移指令的原理 9.1操作符offset 9.2jmp指令 9.3依据位移进行转移的jmp指令 9.4转移的目的地址在指令中的jmp 指令 9.5转移地址在寄存器中的jmp指令 9.6转移地址在内存中的jmp指令 9.7jcxz指令 9.8loop指令 9.9根据位移进行转移的意义 9.10编译器对转移位移超界的检测 实验8分析一个奇怪的程序 实验9根据材料编程 第10章CALL和RET指令 10.1ret和retf 10.2call指令 10.3依据位移进行转移的call指令 10.4转移的目的地址在指令中的call 指令 10.5转移地址在寄存器中的call指令 10.6转移地址在内存中的call指令 10.7call和ret的配合使用 10.8mul指令 10.9模块化程序设计 10.10参数和结果传递的问题 10.11批量数据的传递 10.12寄存器冲突的问题 实验10编写子程序 课程设计1 第11章标志寄存器 11.1ZF标志 11.2PF标志 11.3SF标志 11.4CF标志 11.5OF标志 11.6adc指令 11.7sbb指令 11.8cmp指令 11.9检测比较结果的条件转移指令 11.10DF标志和串传送指令 11.11pushf和popf 11.12标志寄存器在Debug中的表示 实验11编写子程序 第12章内中断 12.1内中断的产生 12.2中断处理程序 12.3中断向量表 12.4中断过程 12.5中断处理程序和iret指令 12.6除法错误中断的处理 12.7编程处理0号中断 12.8安装 12.9do0 12.10设置中断向量 12.11单步中断 12.12响应中断的特殊情况 实验12编写0号中断的处理程序 第13章int指令 13.1int指令 13.2编写供应用程序调用的 中断例程 13.3对int、iret和栈的深入理解 13.4BIOS和DOS所提供的 中断例程 13.5BIOS和DOS中断例程的 安装过程 13.6BIOS中断例程应用 13.7DOS中断例程应用 实验13编写、应用中断例程 第14章端口 14.1端口的读写 14.2CMOS RAM芯片 14.3shl和shr指令 14.4CMOS RAM中存储的时间信息 实验14访问CMOS RAM 第15章外中断 15.1接口芯片和端口 15.2外中断信息 15.3PC机键盘的处理过程 15.4编写int 9中断例程 15.5安装新的int 9中断例程 实验15安装新的int 9中断例程 第16章直接定址表 16.1描述了单元长度的标号 16.2在其他段中使用数据标号 16_3直接定址表 16.4程序入口地址的直接定址表 实验16编写包含多个功能子程序的 中断例程 第17章使用BIOS进行键盘输入 和磁盘读写 17.1int 9中断例程对键盘输入的处理 17.2使用int 16h中断例程读取 键盘缓冲区 17.3字符串的输入 17.4应用int 13h中断例程对磁盘 进行读写 实验17编写包含多个功能子程序的 中断例程 课程设计2 综合研究 研究试验1搭建一个精简的C语言 开发环境 研究试验2使用寄存器 研究试验3使用内存空间 研究试验4不用main函数编程 研究试验5函数如何接收不定数量的 参数 附注 附注1Intel系列微处理器的3种工作 模式 附注2补码 附注3汇编编译器(masm.exe)对jmp的 相关处理 附注4用栈传递参数 附注5公式证明 ### 汇编语言基础知识与应用 #### 第1章 基础知识 - **1.1 机器语言**:机器语言是计算机硬件系统能够直接识别的语言,由二进制编码构成,每条指令对应一个特定的操作。 - **1.2 汇编语言的产生**:汇编语言是为了提高机器语言的可读性和可维护性而产生的低级编程语言,通过助记符代替二进制指令。 - **1.3 汇编语言的组成**:主要包括指令集和伪指令两大部分,指令集用于定义处理器可以执行的操作,伪指令用于控制汇编过程。 - **1.4 存储器**:存储器是计算机用来存储数据和指令的设备,分为内存和外存两大类,其中内存包括RAM和ROM。 - **1.5 指令和数据**:指令是由一系列二进制位组成的代码,指导计算机完成特定任务;数据则是被处理的对象,可以是数字或字符等。 - **1.6 存储单元**:存储器中的最小可寻址单位,通常为一个字节。 - **1.7 CPU对存储器的读写**:CPU通过总线与存储器通信,读取数据时发出读命令,写入数据时发出写命令。 - **1.8 地址总线**:用于传输地址信号的总线,决定了CPU可以直接访问的最大内存空间。 - **1.9 数据总线**:用于传输实际数据的总线,其宽度决定了每次能传输的数据量。 - **1.10 控制总线**:用于传输控制信号的总线,如读/写信号、中断请求等。 - **1.11 内存地址空间(概述)**:指CPU能够访问的所有内存地址范围。 - **1.12 主板**:计算机的主要支撑平台,用于连接CPU、内存、各种I/O设备等组件。 - **1.13 接口卡**:用于扩展计算机功能的硬件设备,如声卡、网卡等。 - **1.14 各类存储器芯片**:包括DRAM、SRAM、EPROM等多种类型,各自有不同的特性和应用场景。 - **1.15 内存地址空间**:详细介绍内存地址空间的划分及其管理机制。 #### 第2章 寄存器 - **2.1 通用寄存器**:是CPU内部的小型存储单元,用于暂存数据和地址。 - **2.2 字在寄存器中的存储**:规定了寄存器中数据的存储格式。 - **2.3 几条汇编指令**:介绍了MOV、ADD、SUB等常用指令及其作用。 - **2.4 物理地址**:指内存中的绝对地址,用于唯一标识内存中的每个存储单元。 - **2.5 16位结构的CPU**:早期计算机采用16位架构,支持16位宽的数据处理。 - **2.6 8086CPU给出物理地址的方法**:通过段地址与偏移地址相结合来形成物理地址。 - **2.7 “段地址×16+偏移地址=物理地址” 的本质含义**:解释了物理地址计算的具体原理。 - **2.8 段的概念**:介绍段在内存管理中的作用。 - **2.9 段寄存器**:用于保存段基址的寄存器。 - **2.10 CS和IP**:CS(Code Segment)指代码段寄存器,IP(Instruction Pointer)指指令指针寄存器。 - **2.11 修改CS、IP的指令**:如JMP、CALL等指令可以改变程序执行的流程。 - **2.12 代码段**:存储程序指令的部分,由CS寄存器指向。 #### 实验1 查看CPU和内存,用机器指令和汇编指令编程 - **实验内容**:通过实验了解CPU和内存的基本情况,并尝试使用机器指令和汇编指令进行简单的编程练习。 #### 第3章 寄存器(内存访问) - **3.1 内存中字的存储**:描述字在内存中的布局方式。 - **3.2 DS和(address)**:DS(Data Segment)为数据段寄存器,用于指向数据所在的内存区域。 - **3.3 字的传送**:介绍如何在内存之间或者寄存器与内存之间传送数据。 - **3.4 MOV、ADD、SUB指令**:进一步解释这些指令的具体用法。 - **3.5 数据段**:存储数据的部分,由DS寄存器指向。 - **3.6 栈**:一种特殊的数据结构,遵循先进后出的原则,用于临时存储数据。 - **3.7 CPU提供的栈机制**:介绍CPU如何管理和使用栈。 - **3.8 栈顶超界的问题**:讨论栈顶超出分配内存范围时可能发生的情况。 - **3.9 PUSH、POP指令**:用于往栈中压入数据和从栈中弹出数据。 - **3.10 栈段**:专门用于存放栈的内存区域。 #### 实验2 用机器指令和汇编指令编程 - **实验内容**:通过具体的编程任务加深对指令集的理解。 #### 第4章 第一个程序 - **4.1 一个源程序从写出到执行的过程**:包括编辑、编译、链接等多个步骤。 - **4.2 源程序**:程序员编写的原始程序代码。 - **4.3 编辑源程序**:使用文本编辑器创建和修改源代码。 - **4.4 编译**:将源代码转换成目标代码的过程。 - **4.5 连接**:将多个目标文件组合成可执行文件。 - **4.6 以简化的方式进行编译和连接**:介绍一些简化编译连接过程的方法。 - **4.7 .exe的执行**:解释可执行文件如何被执行。 - **4.8 谁将可执行文件中的程序装载进入内存并使它运行?**:操作系统负责加载和执行程序。 - **4.9 程序执行过程的跟踪**:介绍如何跟踪程序的执行过程。 #### 实验3 编程、编译、连接、跟踪 - **实验内容**:完成一个完整的编程项目,从编写源代码到最终运行并跟踪执行过程。 #### 第5章 (BX)和LOOP指令 - **5.1 (BX)**:BX寄存器用于存储基址。 - **5.2 LOOP指令**:用于控制循环的次数。 - **5.3 在Debug中跟踪用LOOP指令实现的循环程序**:利用调试工具观察程序运行状态。 - **5.4 Debug和汇编编译器MASM对指令的不同处理**:解释Debug和MASM在处理某些指令时的区别。 - **5.5 LOOP和(BX)的联合应用**:介绍如何结合使用这两种技术。 - **5.6 段前缀**:用于指定指令或数据所在的段。 - **5.7 一段安全的空间**:为避免干扰其他程序,提供一个独立的内存区域。 - **5.8 段前缀的使用**:具体示例说明段前缀的应用场景。 #### 实验4 (BX)和LOOP的使用 - **实验内容**:通过实验熟悉BX寄存器和LOOP指令的使用方法。 #### 第6章 包含多个段的程序 - **6.1 在代码段中使用数据**:探讨如何在代码段中嵌入数据。 - **6.2 在代码段中使用栈**:介绍栈在代码段中的应用。 - **6.3 将数据、代码、栈放入不同的段**:优化内存管理的一种方法。 #### 实验5 编写、调试具有多个段的程序 - **实验内容**:编写一个包含多个段的程序,并进行调试。 以上内容仅涵盖了本书的部分章节,每一章节都包含了丰富的知识点和实践内容,旨在帮助读者全面掌握汇编语言的基础理论及实际应用。通过本书的学习,不仅可以深入了解计算机系统的底层工作机制,还能培养解决实际问题的能力。
- 粉丝: 15
- 资源: 20
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助