实验二 算术运算类操作实验 (基础与设计)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二算术运算类操作实验 (基础与设计)

一、实验要求和目的

1、了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式;

2、掌握各类运算类指令对各状态标志位的影响及测试方法;

3、熟悉汇编语言二进制多字节加减法基本指令的使用方法;

4、熟悉无符号数和有符号数乘法和除法指令的使用;

5、掌握符号位扩展指令的使用。

6、掌握BCD 码调整指令的使用方法

二、软硬件环境

1、硬件环境:计算机系统 windows;

2、软件环境:装有MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识

本实验主要进行算术运算程序设计和调试,涉及到的知识点包括:

1.加减法处理指令

主要有加法指令ADD,带进位加法ADC,减法指令SUB,带进位减法指令SBB。

2.乘除法指令和符号位扩展指令

主要有无符号数乘法指令MUL,带符号数乘法指令IMUL,无符号数除法指令DIV,带符号数除法指令IDIV,以及符号位从字节扩展到字的指令CBW 和从字扩展到双字的指令CWD。3.BCD 码的调整指令

主要有非压缩的BCD 码加法调整指令DAA,压缩的BCD 码减法调整指令DAS,非压缩的BCD 码加法调整指令AAA,非压缩的BCD 码减法调整指令AAS,乘法的非压缩BCD码调整指令AAM,除法的非压缩BCD 码调整指令AAD。

8088/8086 指令系统提供了实现加、减、乘、除运算的上述基本指令,可对下表所示的数据类型进行数据运算。

四、实验内容与步骤

1、对于两组无符号数,087H 和034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响。

设计流程:

源代码:

DATAS SEGMENT

ARRAY DW 087H,034H,0C2H,05FH

JIA DW 2 DUP(?) ;储存两组加法结果

JIAN DW 2 DUP(?) ;储存两组减法结果

CHENG DW 2 DUP(?) ;储存两组乘法结果CHU DW 2 DUP(?) ;储存两组除法结果DATAS ENDS

STACKS SEGMENT

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

MOV AX,DATAS

MOV DS,AX

MOV SI,0

MOV BX,0

SUB BX,2

SUB SI,4

L1:

ADD SI,4

ADD BX,2

MOV AX,ARRAY[SI] ;第一个运算数ADD AX,ARRAY[SI+2] ;加法运算

MOV JIA[BX],AX ;储存加法结果

MOV AX,ARRAY[SI]

SUB AX,ARRAY[SI+2] ;减法运算

MOV JIAN[BX],AX ;储存减法结果

MOV AX,ARRAY[SI]

MUL ARRAY[SI+2] ;乘法运算

MOV CHENG[BX],AX ;储存乘法结果MOV AX,ARRAY[SI]

MOV CX,ARRAY[SI+2]

DIV CL ;除法运算

MOV CHU[BX],AX ;储存除法结果CMP BX,2

JNZ L1

MOV AH,4CH

INT 21H

CODES ENDS

END START

程序结果:

通过-t逐步运行程序,逐步查看每次运算后标志位的状态,结果如下:

2、在数据段定义了两个多精度的有符号16 进制数,FIRST 和SECOND ,1)求两数的和与差,并将结果存放在THIRD 为首地址的缓冲区中;2)如果把两组数据当作十进制数据来处理,再次求两数的和与差,并将结果存放在FORTH 为首地址的缓冲区中。试编程实现上述运算。

FIRST DW 45 H,82H,96 H,57H

SECOND DW 12 H,46H,83 H,45H

思路流程:

以十六进制加法为例

源代码:

DATAS SEGMENT

FIRST DB 45H,82H,96H,57H

SECOND DB 12H,46H,83H,45H

THIRD DB 10 DUP(?)

FORTH DB 10 DUP(?)

DATAS ENDS

STACKS SEGMENT

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

MOV AX,DATAS

MOV DS,AX

;十六加法

MOV SI,3 ;运算数据的偏移量

MOV BX,3 ;储存数据结果的偏移量MOV CX,4 ;循环标志量

INC BX

INC SI

CLC ;标志位CF清零

L1:

DEC SI

DEC BX

MOV AL,FIRST[SI]

ADC AL,SECOND[SI]

MOV THIRD[BX],AL

LOOP L1

;十六减法

MOV SI,3

MOV BX,8

MOV CX,4

INC BX

INC SI

CLC

L2:

DEC SI

DEC BX

MOV AL,FIRST[SI]

SBB AL,SECOND[SI]

MOV THIRD[BX],AL

LOOP L2

;十加法

MOV SI,3

MOV BX,3

MOV CX,4

相关文档
最新文档