运算类编程实验.docx

上传人:b****3 文档编号:27320647 上传时间:2023-06-29 格式:DOCX 页数:11 大小:192.56KB
下载 相关 举报
运算类编程实验.docx_第1页
第1页 / 共11页
运算类编程实验.docx_第2页
第2页 / 共11页
运算类编程实验.docx_第3页
第3页 / 共11页
运算类编程实验.docx_第4页
第4页 / 共11页
运算类编程实验.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

运算类编程实验.docx

《运算类编程实验.docx》由会员分享,可在线阅读,更多相关《运算类编程实验.docx(11页珍藏版)》请在冰豆网上搜索。

运算类编程实验.docx

运算类编程实验

深圳大学实验报告

 

课程名称:

微型计算机基本原理

 

 

实验项目名称:

运算类编程实验

 

学院:

信息工程学院

专业:

电子信息工程

指导教师;

周建华

报告人:

学号』级:

实验时间:

2015年4月23日

 

 

实验报告提交时间:

2015年4月30日

 

教务处制

实验目的与要求:

1.掌握使用运算类指令编程及调试方法。

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

3.学习使用软件监视变量的方法。

实验设备

 

方法、步骤:

80X86指令系统提供了实现加、减、乘、除运算的基本指令,可对表2.2

二进制双精度加法运算

计算X+丫=Z,将结果Z存入某存储单元。

实验程序参考如下。

本实验是双精度(2个16位,即32位)加法运算,编程时可利用累加器先求低16位的和,并将运算结果存入低地址存储单元,然后求高16位的

将结果存入高地址存储单元中。

由于低16运算后可能向高位产生进位,

所示的数据类型进行算术运算。

数制

二进制

BCD码

带符号1无符号

组合

非组合

运算符

+、一、x、*

+、一

+、一、x、*

操作数

字节、字、多精度

字节(二位数字)

字节(一位数字)

实验过程及内容:

1.

表2.2数据类型算术运算表

AX

和,

因此高16位运算时使用ADC指令,这样在低16位相加运算有进位时,高位相加会加上CF中的1。

A3-1.ASM)

实验程序清单(例程文件名为:

SSTACKSEGMENTSTACK

DW64DUP⑺

;设置全局变量

SSTACKENDS

PUBLICXH,XL,YH,YL,ZH,ZL

DATA

ENDS

SEGMENT

ASSUMECS:

CODE,DS:

DATASTART:

MOVAX,DATA

MOVDS,AX

MOVAX,XL

;X低位加Y低位

;低位和存到Z的低位

;高位带进位加

-存高位结果

'-在此行亍设置断点,以观察变量值

ADDAX,YLMOVZL,AXMOVAX,XH

ADCAX,YHMOVZH,AXJMPSTART

CODEENDS

ENDSTART

实验步骤

(1)编写程序,经编译、链接无误后装入系统。

(2)程序装载完成后,点击’变量区’标签将观察窗切换到变量监视窗口。

(3)点击处,将变量XHXL,YHYL,ZHZL添加到变量监视窗中,然后修改XHXL,YHYL的值,如图2.13所示,修改XH为0015,XL为65A0,YH为0021,YL为B79E

(4)在JMPSTAR语句行设置断点,然后运行程序。

(5)

图2.13变量监视窗口

当程序遇到断点后停止运行,查看变量监视窗口,计算结果ZH为0037,ZL为1D3E

(6)修改XHXL,YH和YL的值,再次运行程序,观察实验结果,反复测试几组数据,验证程序的功能。

2.乘法运算

START:

MOVAX,DATA

MOVDS,AX

CALLINIT;初始化目标地址单元为0

MOVSIQFFSETDATA2

;得到乘数

MOVBL,[SI]

ANDBL,0FH

CMPBL,09H

JNCERROR

MOVSI,OFFSETDATA1

MOVDI,OFFSETRESULT

A1:

MOVCX,0005H

MOVAL,[SI+04H]

ANDAL,0FH

CMPAL,09H

JNCERROR

DECSI

MULBL

AAM;乘法调整指令

ADDAL,[DI+05H]

AAA

MOV[DI+05H],AL

DECDI

MOV[DI+05H],AH

A2:

LOOPA1

MOVAX,4C00H

INT21H;程序终止

;===将RESULT所指内存单元清零===

INIT:

MOVSI,OFFSETRESULT

MOVCX,0003H

MOVAX,0000H

A3:

MOV[SI],AX

INCSI

INCSI

LOOPA3

RET

.===错误处理===

Error:

movsi,offsetresul若输入数据不符合要求则results指向内存单元全部写入E

MOVCX,0003H

MOVAX,0EEEEH

A4:

MOV[SI],AX

INCSI

INCSI

LOOPA4

JMPA2

CODEENDS

ENDSTART

实验步骤

(1)编写程序,编译、链接无误后装入系统。

(2)查看寄存器窗口获得CS的值,使用U命令可得到数据段段地址DS然后通过E命令为被乘数及乘数赋值,如被乘数:

0102030405,乘数:

01,方法同实验内容1。

(3)运行程序,待程序运行停止。

(4)通过D命令查看计算结果,应为:

000102030405;当在

为被乘数和乘数赋值时,如果一个数的低4位大于9,则查看计算结果将全部显示为E。

(5)反复测试几组数据,验证程序的正确性。

数据处理分析:

实验一:

二进制双精度加法运算

 

EH)画

 

实验结果分析:

由程序中的这几条指令:

MOVAX,XL

ADDAX,YL

MOVZL,AX

知:

XL+YL=ZL即65A0+B79E=1D3ECF=178AD+0053=7900CF=0合乎预期;

由程序中的这几条指令:

MOVAX,XH

ADCAX,YH

MOVZH,AX

知:

XH+YH+CF=ZHI卩0015+0021+1=0037;5656+63CB+0=BA21合乎预期。

实验二:

乘法运算

DEC31

140V[LI+05KJ

LOOP

n忙附况冲CODM'

Itrr7iH呈.弓

-——怜卜上4匚「痔扌言内存也元洁專——

IMIT:

MCIVSX,OF1^EET艮£0ULH

MOVrx,□□□3H

MIVixniinriH

>020B:

aOOO05070201O旧030l□?

>U:

^Utj:

JUUUU1U/U1U4UUUUUUUU

实验结果分析:

计算过程:

(1)被乘数是01,02,03,04,05;乘数是01,先取最后一

位即05,其乘以01还是05,没有进位,所以在输出的最后一位是05;然后是上一位04,其乘以01还是04,没进位,由因为下一位没进位,所以其输出为04;03,02

以此类推;至y01时,其乘以01还是01,没进位,所以

其输出为01,而上一个储存空间为00。

这样所以输出为

00,01,02,03,04,05

(2)被乘数是05,07,02,03,08;乘数是03,先取最后一位

即08,其乘以03是0204,所以进位02,输出的最后一位是04;然后是上一位03,其乘以03加上下一位进位的02是0101,所以进位01,其输出为01;02,07以此

类推;到05时,其乘以03加上下一位的进位结果是

0107,所以进位进位01,所以其输出为07,而上一个储

存空间为01。

这样所以输出为01,07,01,07,01,04

实验结论:

通过这两个实验,对使用运算指令类编程有了更深刻的认识;

掌握了运算类指令对个状态标志位的影响极其测试方法;对编程过程中如何达到预期的结果有了更深刻的了解;提高了对程序的分析理解能力。

指导教师批阅意见:

成绩评定:

 

 

指导教师签字:

年月日

备注:

注:

1、报告内的项目或内容设置,可根据实际情况加以调整和补充。

10日内。

2、教师批改学生实验报告时间应在学生提交实验报告时间后

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1