tceic.com
学霸学习网 这下你爽了
赞助商链接
当前位置:首页 >> 计算机软件及应用 >>

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


实验二 算术运算类操作实验 (基础与设计)
一、实验要求和目的
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 指令系统提供了实现加、减、乘、除运算的上述基本指令, 可对下表所示的数 据类型进行数据运算。 数制 运算符 操作数 二进制 带符号 无符号 组合 +、- +、-、×、÷ 字节、字、多精度 BCD码 非组合 +、-、×、÷

字节(二位数字) 字节(一位数字)

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

运算数偏移量 SI=0 结果数偏移量 BX=0

JIA[BX]=ARRAY[SI]+ARRAY[SI+2] JIAN[BX]=ARRAY[SI]-ARRAY[SI+2] CHENG[BX]=ARRAY[SI]*ARRAY[SI+2] CHU[BX]=ARRAY[SI]/ARRAY[SI+2]

SI+4, BX+2

BX=2 否 是 结束

源代码:

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逐步运行程序,逐步查看每次运算后标志位的状态,结果如下: 计 算 表达式 087H +034H 结果 00BBH CF NC AF NA 状态标志 ZF NZ OF NV SF PL PF PE

087H -034H 087H *034H 087H/034H 0C2H+5FH 0C2H-5FH 0C2H*5FH 0C2H/5FH

0053H 1B6CH 2H 余 1FH 0121H 0063H 47FEH 2H 余 4H

NC NC NC NC NC NC NC

NA NA NA AC AC AC AC

NZ NZ NZ NZ NZ NZ NZ

NV NV NV NV NV NV NV

PL PL PL PL PL PL PL

PE PE PE PE PE PE PE

2、在数据段定义了两个多精度的有符号16 进制数,FIRST 和SECOND ,1)求两数的和 与差,并将结果存放在THIRD 为首地址的缓冲区中;2)如果把两组数据当作十进制数据 来处理,再次求两数的和与差,并将结果存放在FORTH 为首地址的缓冲区中。试编程实现 上述运算。 FIRST DW 45 H,82H,96 H,57H SECOND DW 12 H,46H,83 H,45H 思路流程: 以十六进制加法为例

偏移量 SI=3,BX=3 计数值 CX=4

THIRD[BX]=FIRST[SI] +SECOND[SI]

SI--,CX--

否 CX-1=0 是 结束 源代码:

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 L1: DEC SI DEC BX ;标志位CF清零 ;运算数据的偏移量 ;储存数据结果的偏移量 ;循环标志量

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

INC BX INC SI CLC L3: DEC SI DEC BX MOV AL,FIRST[SI] ADC AL,SECOND[SI] DAA MOV FORTH[BX],AL LOOP L3 ;十减法 MOV SI,3 MOV BX,8 MOV CX,4 INC BX INC SI CLC L4: DEC SI DEC BX MOV AL,FIRST[SI] ;转换为十进制加法

SBB AL,SECOND[SI] DAS MOV FORTH[BX],AL LOOP L4 ;转换为十进制减法

MOV AH,4CH INT 21H CODES ENDS END START
程序结果:

0770:0000 到 0770:0003 是 FIRST 数,0770:0004 到 0770:0007 是 SECOND 数,0770:0008 到 0770:000B 是十六进制加法结果,0770:000D 到 0770:0010 是十六进制减法结果,0770:0012 到 0770:0015 是十进制加法结果,0770:0017 到 0770:001A 是十进制减法结果。 FIRST +SECOND FIRST -SECOND 16 进制结果 57H C9H 19H 9CH 33H 3CH 13H 12H 10 进制结果 58H 29H 80H 02H 33H 36H 13H 12H

3、编程计算((Z +X*Y -328) -V)/ Y,其中X、Y、Z、V 均为16 位带符号数,假设初始数

据分别装入X、Y、Z、V 单元,要求上式计算结果的商存入AX,余数存入DX 寄存器。同 学自行给出初始值加以验证程序。 源代码:

DATAS SEGMENT X DW 200 Y DW 2 Z DW 30 V DW 4 DATAS ENDS ;设X=200 ;设Y=2 ;设Z=30 ;设V=4

STACKS SEGMENT

STACKS ENDS

CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV AX,X MUL Y ADC AX,Z SBB AX,328

SBB AX,V DIV Y MOV AH,4CH INT 21H CODES ENDS END START 程序结果: ;运算结果在AX中

结果在 AX=31H,商为 DX=0

五、心得体会
本次实验主要学习了汇编中四则运算的方法, 并在程序中加以循环实现多组数依次完成 运算。这次实验学习到的最主要的知识就是 DW 和 DB 两种数据在进行运算时候的不同以及 对进位的处理。 在第二个题目中需要涉及到加减乘除四种运算, 为了更好的处理进位就把原 数据由 DW 改为了 DB,这是因为如果用 DW 进位时会将该数的进位加在其 4 位十六进制数 的高两位,而不能加在高位的 DW 中,不方便阅读最终结果。实验中另一个很大的收获就是 有了更深的对标志位的认识。 通过第一个题目认识了不同运算对标志位的影响。 在做第二个 题目时, 由于在循环过程中用了 CMP 改变了标志位导致有些结果总是没有加上下面的进位, 我改进了判断循环的方法避免了改动标志位。 这个经历对我日后的汇编编程是很宝贵的经验。


推荐相关:

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

汇编语言实验报告实验二 算术运算类操作实验(基础与设计) 班级: 姓名: 学号: 实验日期: 汇编语言实验报告 班级: 姓名: 学号: 实验二 算术运算类操作实验(基础与...

北京理工大学-汇编实验二-算术运算类操作实验.pdf

北京理工大学-汇编实验二-算术运算类操作实验_化学_自然科学_专业资料。北京理工大学,汇编语言,实验报告 实验二算术运算类操作实验(基础与设计)一、实验要求和目的...

实验二算术运算类操作实验解读.doc

汇编程序上机实践实验报告 实验二算术运算类操作实验 (基础与设计 班级:05811101 学号:1120111447 姓名:敬汉丹 实验二算术运算类操作实验 (基础与设计 一、实验要求...

实验二 算术运算类操作实验.doc

实验二 算术运算类操作实验 - 汇编程序上机实践实验报告 实验二 算术运算类操作实验 (基础与设计) 班级:05811101 学号:1120111447 姓名:敬汉丹 实验二 算术运算类...

北京理工大学汇编语言实验二 算术运算类操作实验.doc

实验二 算术运算类操作实验(基础与设计) 六、流程图设计 1 开始 2 开始 取值 Cx=4 取值 按制定操作计算, 取得结果 按制定操作带符号计 结果存入栈中 算,...

实验2.pdf

实验2 - 实验二 算术运算类操作实验 (基础与设计) 一、实验要求和目的 1、

理工 汇编语言 实验二.doc

理工 汇编语言 实验二 - 实验二算术运算类操作实验 (基础与设计) 一、实验要

北理工汇编语言实验报告2.doc

北理工汇编语言实验报告2 - 汇编语言实验报告 实验二 算术运算类操作实验 (基础与设计) 班级:05611102 姓名:肖枫 学号:1120111431 实验日期:2013.9.4晚上 ...

实验01《C#基础》.doc

计算机科学与技术专业 《Visual C#.NET 程序设计实验指导书 实验 1、C#基础实验课时:课内:2;课外:2 实验目的:掌握 C# 常量、变量、运算符、表达式、数据类型...

实验2 顺序结构程序设计.pdf

实验2 顺序结构程序设计_数学_自然科学_专业资料。实验 2 顺序结构程序设计 2....运算符表达式 C 语言的算术运算符有多种,应用范围很广,几乎所有的基本操作都...

《计算机组成原理》实验报告---8位算术逻辑运算实验_图文.doc

《计算机组成原理》实验报告---8位算术逻辑运算实验_电脑基础知识_IT/计算机_...计算机专业类课程 实验报告 课程名称:计算机组成原理 学专院:信息与软件工程学院...

实验二 算术运算类实验(单片机).doc

实验二 算术运算类实验(单片机) - 实验二 算术运算类实验 1. 实验目的 加减法的运算 2. 实验内容设计 (1) 五个字节的加法 (2) 五个字节的减法 (3) 两...

实验二 算术运算实验.doc

实验二算术运算实验一、 实验目的 1、 掌握 MASMforWindows环境下的汇编语言编程环境使用; 2、 掌握汇编语言程序设计的基本流程及汇编语言中的二进制、十六进制、十...

实验二 运算类编程实验.doc

2-1 数据类型算术运算表 二进制 数制 运算符 操作数 带符号 无符号 组合...3.4.4 调试提示: (1) 根据实验要求和程序框图设计程序,经汇编、链接装入系统...

北京理工大学汇编第二次(算术运算类操作实验)实验报告.doc

北京理工大学汇编第二次(算术运算类操作实验)实验报告 - 12级,14到15学年

微机实验二 算术逻辑运算及移位操作.doc

实验二 算术逻辑运算及移位操作 一、 实验目的 1.熟悉算术逻辑运算指令和移位...实验心得与体会 在上节课实验基础上,这次的实验比较顺利,感觉到了微机实验的...

运算类编程实验.doc

运算类编程实验_电脑基础知识_IT/计算机_专业资料。深圳大学实验报告 课程名称: ...表 2.2 数据类型算术运算表 数制 二进制 带符号 无符号 组合 +、- BCD 码...

实验2 ALU 实验要求.pdf

设计,在理解的基础上修改设计 (二)实验类别:基础实验 (三)实验学时数:2 学...(五)实验内容 设计一个具有 8 种操作的 ALU,其中逻辑运算和算术运算各 4 种...

实验2_数据类型、运算符和表达式.doc

实验2_数据类型、运算表达式_电脑基础知识_IT/计算机_专业资料。厦门理工学院大一计算机C语言 《C 语言程序设计实验报告实验序号:2 学号姓名 实验项目:数据...

厦门理工学院11级C语言 实验2_数据类型、运算符和表达式.doc

厦门理工学院11级C语言 实验2_数据类型、运算表达式_电脑基础知识_IT/计算机_专业资料。《高级语言程序设计实验报告实验序号:2 学号姓名 实验项目:数据类型、...

网站首页 | 网站地图
All rights reserved Powered by 学霸学习网 www.tceic.com
copyright ©right 2010-2021。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com