汇编指令的实验 实验二 汇编指令 一、 实验目的 学习数据传送、算术运算、串处理和控制转移等常用指令的用法;掌握数据定义伪指令的格式。 二、 实验原理 数据传送、算术运算、串处理和控制转移等常用指令的用法以及数据定义伪指令的格式。 三、 主要仪器及耗材 计算机、MASM软件包。 ### 汇编实验知识点详解 #### 一、实验目的 本实验的主要目的是让学生通过实践操作,深入理解并掌握汇编语言中的基本指令及其应用场景。具体包括以下几点: 1. **数据传送指令**:了解如何在不同的寄存器之间、寄存器与内存之间进行数据的传递。 2. **算术运算指令**:熟悉加减乘除等基本运算的操作方法,了解无符号和有符号运算的区别。 3. **串处理指令**:掌握字符串的复制、比较等常见操作。 4. **控制转移指令**:学会根据不同的条件选择程序的执行路径。 5. **数据定义伪指令**:了解如何定义和初始化数据段中的变量。 #### 二、实验原理 汇编语言是一种低级编程语言,它与处理器架构紧密相关,能够直接访问硬件资源。本实验将重点介绍以下几个方面的原理: 1. **数据传送**:使用如`MOV`指令实现数据的复制操作。 2. **算术运算**:通过`ADD`、`SUB`、`MUL`、`DIV`等指令进行基本数学运算。 3. **串处理**:利用`MOVSB`、`CMPSB`等指令进行字符串处理。 4. **控制转移**:通过`JMP`、`JE`、`JNE`等指令实现条件跳转。 5. **数据定义**:使用`.data`段定义数据,并利用`.byte`、`.word`等伪指令初始化变量。 #### 三、主要仪器及耗材 本次实验需要用到的工具包括: 1. **计算机**:提供实验平台。 2. **MASM软件包**:Microsoft宏汇编程序,用于编写和编译汇编语言程序。 #### 四、实验内容与步骤 ##### 内容 1. **内存操作数及各种寻址方式使用**:学习如何在汇编语言中使用不同的寻址方式来操作内存中的数据。 2. **数据串传送指令的使用**:掌握串处理指令的基本用法。 3. **算术运算指令的使用**:了解常见的算术运算指令。 4. **条件转移指令的使用**:学习条件转移指令的语法和功能。 ##### 步骤 1. **内存操作数及各种寻址方式使用** ```assembly MOV AX, 1234 ; 将数值1234加载到AX寄存器 MOV [1000], AX ; 将AX寄存器中的值存储到地址1000处 MOV BX, 1002 ; 将数值1002加载到BX寄存器 MOV DL, 39 ; 将数值39加载到DL寄存器 INC BX ; 将BX寄存器的值加1 MOV [BX], DL ; 将DL寄存器的值存储到BX指向的地址 DEC DL ; 将DL寄存器的值减1 MOV SI, 3 ; 将数值3加载到SI寄存器 MOV [BX + SI], DL ; 将DL寄存器的值存储到BX+SI指向的地址 MOV [BX + SI + 1], DL ; 将DL寄存器的值存储到BX+SI+1指向的地址 ``` - **操作步骤** 1. 使用A命令输入上述程序代码。 2. 使用T命令逐条执行程序,并使用D命令检查内存单元的内容。 2. **算术运算指令的使用** - **加法指令add的使用** ```assembly Mov ax, 1234 Add ax, 5678 Mov bx, 1131 Add bx, ax ``` - **执行结果**: `AX`寄存器的值变为6912(1234+5678),然后`BX`寄存器的值变为8043(1131+6912)。 - **加法指令add和adc的使用** ```assembly Mov ax, 4652 Add ax, f0f0 Mov dx, 0234 Adc dx, f0f0 ``` - **执行结果**: `AX`寄存器的值变为0002(4652+f0f0=0002且进位),`DX`寄存器的值变为0328(0234+f0f0+进位=0328)。 - **减法指令sub的使用** ```assembly Mov ax, 5678 Sub ax, 1234 Mov bx, 3354 Sub bx, 3340 ``` - **执行结果**: `AX`寄存器的值变为4444(5678-1234),`BX`寄存器的值变为0014(3354-3340)。 - **减法指令sub和dec,neg的使用** ```assembly Mov ax, ff64 Neg al Sub al, 9d Neg ax Dec sl Neg ax ``` - **执行结果**: `AL`寄存器的值变为9d(对ff64取反后减去9d),之后再取反,并递减`SL`寄存器,最后再次取反`AX`寄存器。 - **乘法指令mul的使用** ```assembly Mov al, a3 Mov bl, 11 Mul bl ``` - **执行结果**: `AX`寄存器的值变为00b3(a3*11)。 - **带符号的乘法指令imul的使用** ```assembly Mov al, b4 Mov bl, 11 Imul bl ``` - **执行结果**: `AX`寄存器的值变为00c4(b4*11)。 - **除法指令div的使用** ```assembly Mov ax, 400 Mov bl, b4 Div bl ``` - **执行结果**: `AX`寄存器的高位部分为商(6),低位部分为余数(16)。 - **带符号的除法指令idiv的使用** ```assembly Mov ax, 400 Mov bx, b4 Idiv bx ``` - **执行结果**: `AX`寄存器的高位部分为商(6),低位部分为余数(16)。 通过这些具体的实验步骤和示例,学生可以更好地理解和掌握汇编语言中的基本指令及其应用场景,为进一步学习高级编程语言和系统开发打下坚实的基础。
- 云雨深处2015-04-08感觉没啥用处。一些实验目标,没有实验结果,不是实验报告。
- 粉丝: 271
- 资源: 10
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助