一、实验目的
- 掌握MASM for Windows 环境下的汇编语言编程环境使用;
- 掌握汇编语言程序设计的基本流程及汇编语言中的二进制、十六进制、十进制、BCD码的表示形式;
- 掌握汇编语言对多精度十六进制和十进制的编程方法及运算类指令对各状态标志位的影响及测试方法;
- 掌握无符号数和有符号数运算区别及编程方法;
- 掌握BCD码调整指令的使用方法
二、实验软硬件环境
- 硬件环境:惠普64位一体化计算机及局域网;
- 软件环境:windows 8,红蜘蛛管理系统,MASM for Windows。
三、实验相关知识
算术运算实验需要对运行结果进行调试及查看状态字,其相关知识如下。
(一)标志位
在debug调试过程中,标志位用特殊符号表示的,其标志名和状态符号的对照表参照表1所示。
表 1 标志名和状态符号的对照表参照表
标志名 | 置位 | 复位 |
---|---|---|
溢出标志OF(是/否) | OV | NV |
方向标志DF(减/增) | DN | UP |
中断标志IF(允许/禁止) | EI | DI |
符号标志SF(负/正) | NG | PL |
零标志ZF(是/否) | ZR | NZ |
辅助进位标志AF(是/否) | AC | NA |
奇偶校验标志PF(偶/奇) | PE | PO |
进位标志CF(是/否) | CY | NC |
(二)加减法指令
ADD表示加法指令,ADC表示带进位加法指令, SUB表示减法指令,SBB表示带进位减法指令。
(三)乘除法指令
MUL表示无符号数乘法指令,IMUL表示带符号数乘法指令,DIV表示无符号数除法指令,IDIV表示带符号数除法指令。
(四)符号位扩展指令
CBW表示从字节扩展到字的指令,CWD表示从字扩展到双字的指令。
(五)BCD码的调整指令
在进行十进制加减运算时,需要将数据用BCD码表示,还要考虑到是组合BCD码还是非组合BCD码,组合BCD码是用一个字节表示两位十进制数,非组合BCD码是用一个字节表示一位十进制数,对于组合的BCD码加减法运算其结果存放在AL中。
组合的BCD码加法调整指令DAA;
组合的BCD码减法调整指令DAS;
非组合的BCD码加法调整指令AAA;
非组合的BCD码减法调整指令AAS;
乘法的非组合BCD码调整指令AAM;
除法的非组合BCD码调整指令AAD。
8088/8086指令系统提供了实现加、减、乘、除运算指令, 可参照表2所示内容。
表 2 数据类型的数据运算表