实验二简单汇编语言程序设计与调试讲解Word文档下载推荐.docx

上传人:b****2 文档编号:14582176 上传时间:2022-10-23 格式:DOCX 页数:14 大小:133.60KB
下载 相关 举报
实验二简单汇编语言程序设计与调试讲解Word文档下载推荐.docx_第1页
第1页 / 共14页
实验二简单汇编语言程序设计与调试讲解Word文档下载推荐.docx_第2页
第2页 / 共14页
实验二简单汇编语言程序设计与调试讲解Word文档下载推荐.docx_第3页
第3页 / 共14页
实验二简单汇编语言程序设计与调试讲解Word文档下载推荐.docx_第4页
第4页 / 共14页
实验二简单汇编语言程序设计与调试讲解Word文档下载推荐.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

实验二简单汇编语言程序设计与调试讲解Word文档下载推荐.docx

《实验二简单汇编语言程序设计与调试讲解Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验二简单汇编语言程序设计与调试讲解Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。

实验二简单汇编语言程序设计与调试讲解Word文档下载推荐.docx

非组合

运算符

+、-、×

、÷

+、-

操作数

字节,字,多精度

字节(二位数字)

字节(一位数字)

2.1二进制双精度加法运算

2.1.1实验要求:

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

2.1.2实验原理:

本实验程序是双精度(2个16位,既32位)运算,利用累加器AX,先求低16位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。

由于低位和可能向高位有进位,因而高位字相加语句需要用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。

2.1.3参考程序清单:

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

DATASEGMENT

XLDW?

请在此处给X低位赋值

XHDW?

请在此处给X高位赋值

YLDW?

请在此处给Y低位赋值

YHDW?

请在此处给Y高位赋值

ZLDW?

ZHDW?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,XL;

X的值送AX

ADDAX,YL;

X低位加Y低位

MOVZL,AX;

存低位和

MOVAX,XH;

X高位送AX

ADCAX,YH;

X高位加Y高位

MOVZH,AX;

存高位和

CODEENDS

ENDSTART

2.2十进制数的BCD码减法运算

2.2.1实验要求:

计算X-Y=Z,其中X,Y,Z为BCD码。

00

04

02

01

2.2.2参考实验程序及流程图如下:

XDW?

请在此处给X赋值

YDW?

请在此处给Y赋值

ZDW?

DATAENDS

ASSUMECS:

DATA

MOVAX,DATA

MOVDS,AX

MOVAH,00H

SAHF

MOVCX,0002H

MOVSI,OFFSETX

MOVDI,OFFSETZ

A1:

MOVAL,[SI]

SBBAL,[SI+02H]

DAS

PUSHF

ANDAL,0FH

POPF

MOV[DI],AL

INCDI

INCSI

LOOPA1

A2:

JMPA2

ENDSTART

2.3乘法运算

2.3.1实验要求:

本实验实现十进制数的乘法,被乘数和乘数均以BCD码形式存放于内存中,

乘积在屏幕显示。

2.3.2参考程序清单:

STACKSEGMENTSTACK

DATA1DB5DUP(?

);

乘数

DATA2DB?

被乘数

RESULTDB6DUP(?

乘积

MOVAX,DATA

MOVDS,AX

CALLINIT

MOVSI,OFFSETDATA2

MOVBL,[SI]

ANDBL,0FH

CMPBL,09H

JNCERROR

MOVSI,OFFSETDATA1

MOVDI,OFFSETRESULT

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

MOVCX,06H

MOVSI,OFFSETRESULT

DISPLAY:

MOVAH,01H

MOVAL,[SI]

ADDAL,30H;

得到ASCII码

INT10H;

显示器显示

INCSI

LOOPDISPLAY

A2:

INIT:

MOVSI,OFFSETRESULT;

RESULT区清零

MOVCX,0003H

MOVAX,0000H

A3:

MOV[SI],AX

LOOPA3

RET

ERROR:

MOVAX,0145H;

显示“E”

INT10H

CODEENDS

ENDSTART

2.4设计性实验-----开平方运算(选作)

2.4.1设计要求:

设计一个用减奇数法的开平方运算程序

2.4.2设计提示:

8086/8088指令系统中有乘除法指令但没有开平方指令,因此,开平方运算是通过程序来实现的。

用减奇数法可求得近似平方根,获得平方根的整数部分。

我们知道,N个自然数中的奇数之和等于N²

,即:

1+3+5=9=3²

1+3+5+7=16=4²

1+3+5+7+9+11+13+15=64=8²

若要做S的开方运算,那么就可以从S中逐次减去自然中的奇数1,3,5,7。

,一直进行到相减数为0或不够减下一个自然数的奇数为止,然后统计减去自然数的奇数个数,它就是S的近似平方根。

(设开平方数为正整数,存放在3500H单元)

(5)D350A↙,显示结果为:

350A0400CC…。

(6)反复试几组数,考察程序的正确性。

三、实验步骤与过程

(1)输入程序并检查无误,经汇编、链接后装入系统。

(设:

CS:

0000H,IP:

2000H)

(2)打开寄存器窗口,观察各寄存器内容的变化。

(3)用U0000:

2000查看MOVAX,XXXX(DATA)语句,即得到数据段段地址CS:

XXXX用E命令EXXXX:

0000↙给XL,XH,YL,YH赋值存入二进制数AO651500和9EB72100.

(4)G=0000:

2000↙,运行以上程序。

(5)DXXXX:

0008↙,显示计算结果:

3E1D3700CC….

(6)重新赋值,用T(T=0000:

2000)↙命令逐步运行程序,观察寄存器内容的变化。

(7)反复试几组数,考察程序的正确性.

查看段地址CS:

用E命令赋值:

运行并查看显示计算结果:

单步运行过程:

(1)输入实验程序并检查无误,经汇编、链连接后装入系统,并打开寄存器窗口。

(设:

CS:

0000H,IP:

(2)用U0000:

2000查看MOVAX,XXXX(DATA)语句即得到数据段地址CS:

XXXX。

用E命令EXXXX:

0000↙给X,Y赋值存入40和12的BCD码:

00040201。

(3)G=0000:

2000↙,运行以上程序。

(4)DXXXX:

0004↙,显示计算结果

(5)重新赋值,用T命令单步运行程序,观察各寄寸器内容的变化。

程序注释:

用D命令查看显示结果:

(1)输入程序并检查无误,经汇编、链接后装入系统。

(2)打开寄存器窗口,观察寄存器内容的变化。

(3)用U2000↙命令查看MOVAX,XXXX语句,即得数据段段地址CS:

(4)用EXXXX:

0000↙命令在对应数据段填入乘数与被乘数。

(5)G=0000:

2000↙,运行程序,屏幕显示结果,用ESC可终止程序运行。

要求画出调试正确的程序的程序框图,并给程序加注释

四、实验结论或体会

指导教师批阅意见:

成绩评定:

指导教师签字:

年月日

备注:

注:

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

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

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

当前位置:首页 > 经管营销 > 人力资源管理

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

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