实验1.docx

上传人:b****3 文档编号:4652667 上传时间:2022-12-07 格式:DOCX 页数:11 大小:55.59KB
下载 相关 举报
实验1.docx_第1页
第1页 / 共11页
实验1.docx_第2页
第2页 / 共11页
实验1.docx_第3页
第3页 / 共11页
实验1.docx_第4页
第4页 / 共11页
实验1.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

实验1.docx

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

实验1.docx

实验1

成绩

辽宁工程技术大学上机实验报告

 

课程名称

计算机硬件基础

实验题目

综合程序设计

(二)

院系

软件学院

专业

软件工程

班级

姓名

学号

实验日期

2014.11.11

实验

目的

1.熟练掌握宏汇编程序设计的思想。

2.掌握顺序程序设计的思想及方法。

3.熟练掌握分支程序的结构。

4.掌握分支程序设计的思想、方法及上机调试过程。

实验

准备

1.8086/8088宏汇编指令及伪指令

2.汇编语言程序设计的步骤

(1)分析问题

(2)确定算法

(3)绘制程序框图

(4)分配存储空间和工作单元

(5)编写汇编语言源程序

(6)静态检查

(7)上机调试

实验

进度

本次共有3个练习,完成3个。

 

实验

内容

 

实验

内容

(续)

 

【练习1】编写一个程序,计算表达式(XY-Z)/X的值,其中:

X、Y、Z均为16位带符号数,存放在数据段中,要求将表达式的计算结果存放在数据段中的RESULT起始的单元中。

(1)实现方法

数据段中定义了三个常量,根据题目要求按照顺序对其进行运算

(2)程序代码

DSEGSEGMENT

XDW0010H

YDW0020H

ZDW0030H

RESULTDW?

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

START:

MOVAX,DSEG

MOVDS,AX

MOVAX,X

IMULY

MOVCX,AX

MOVBX,DX

MOVAX,Z

CWD

SUBCX,AX

SBBBX,DX

IDIVX

MOVRESULT,AX

MOVAH,4CH

int21h

CSEGENDS

ENDSTART

【练习2】设数据区中NUM1、NUM2字节单元中存放的是两个无符号数,试编写程序完成下述功能之一的操作:

(1)如果两个数均为偶数,则两个数分别加1后送入DA1、DA2字节单元中;

(2)如果一个为偶数,一个为奇数,则奇数送入DA1,偶数送入DA2字节单元中;

(1)实现方法

(2)程序代码

DSEGSEGMENT

NUM1DW0010H

NUM2DW0021H

DA1DW?

DA2DW?

DSEGENDS

CSEGSEGMENT

ASSUMEDS:

DSEG,CS:

CSEG

START:

MOVAX,DSEG

MOVDS,AX

MOVAX,NUM1

MOVBL,2

DIVBL

MOVBL,AH

MOVAX,NUM2

MOVDL,2

DIVDL

MOVDL,AH

MOVCH,BL

MOVCL,DL

ADDBL,DL

CMPBL,1

JABB

CMPBL,1

JACC

CMPCH,0

JAAA

MOVAX,NUM2

MOVDA1,AX

MOVAX,NUM1

MOVDA2,AX

JMPxx

AA:

MOVAX,NUM1

MOVDA1,AX

MOVAX,NUM2

MOVDA2,AX

JMPxx

BB:

MOVAX,NUM1

INCAX

MOVDA1,AX

MOVAX,NUM2

INCAX

MOVDA2,AX

JMPxx

CC:

MOVAX,NUM1

MOVDA1,AX

MOVAX,NUM2

MOVDA2,AX

JMPxx

XX:

MOVAH,4CH

INT21H

CSEGENDS

ENDSTART

【练习3】

在内存BUFFER单元中存有10个8位数,试编程找出其中的最大值及最

小值,并放在指定的存储单元MAX和MIN中。

(1)实现方法

通过设置两个对照参数max,min,让每个数都和它们比较,每一次比较,较大的值都赋给Max,直到比较完成便可得出最大值,同理可得出最小值

(2)程序代码

DSEGSEGMENT

BUFFERDB01h,02h,03h,70h,81h,06h,07h,08h,09h,11h

MAXDB05H

MINDB90H

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

START:

MOVAX,DSEG

MOVDS,AX

MOVCX,10

MOVAX,OFFSETBUFFER

MOVSI,AX

J1:

MOVAL,[SI]

CMPAL,MAX

JLJ2

MOVMAX,AL

J2:

CMPAL,MIN

JGJ3

MOVMIN,AL

J3:

INCSI

DECCX

CMPCX,0

JNZJ1

MOVAH,4CH

INT21H

CSEGENDS

ENDSTART

 

 

实验

分析

 

实验

分析

(续)

 

【练习1】

(1)该源程序取名2.ASM,通过汇编、连接后生成可执行文件2.EXE,运行该文件显示的内容如下:

(2)调试方法和运行结果

利用U命令观察内容如上,表明DS=1456H;数据XYZ的地址分别为ax=0000,ax=0004h,ax=0006h观察数据段如下:

通过r命令查看各个寄存器的变化

原始状态

逐步运行后寄存器部分状态

运行后的结果

(3)实验问题和解决方案

1.想要查看数据段的数据

解决方案:

可通过u命令查出数据段的首地址,再通过d查看数据

2.不同类型之间的数据之间的运算,需要进行数据类型的转换

解决方案:

可有cwd,cbw进行扩展

【练习2】

(1)该源程序取名i.asm,可生成可执行文件1.exe

运行该文件显示的内容如下

(2)调试方法和运行结果

1.首先通过u指令获得程序的数据段的地址,数据段的基地址为1456h

查看数据段数据

(3)无法找到数据段DS的值,因此无法查看数据段相关数据。

解决方案:

调试i.exe文件后,先用U命令反汇编查看,即可获得相关的段寄存器和其他寄存器的初始值。

编写的程序可能会有逻辑错误。

解决方案:

利用T命令先单步调试,遇到中断命令时改用P命令,

观察各个寄存器的变化是否正确。

【练习3】

(1)该源程序取名o.asm.通过汇编连接可生成可执行文件o.exe

程序运行情况如下

(2)调试方法和运行结果

由u命令获取数据段地址,段基址为1456h

查看数据段,此时定义了10个常数,和05h,90h两个参考值

主要执行过程

满足条件执行交换数据

最后结果

(3)实验问题和解决方案

1.怎么样来设置对比的参照数

解决方案:

参照数的选择要考虑到正数和负数的差别

2.怎么样实现对一串数据的比较

解决方案:

取数据首地址赋给si,由incsi来实现对所有数据的访问,dx控制访问的次数,同时用cmp语句比较数的大小

实验

总结

【实验1】

1.存在的问题

刚开始练习的时候不能很好地理解和运用乘除运算,字扩展相关的默认寄存器,16位之间的运算要注意用不同的运算符

2.实验结论

该实验实现了对数据段已经存在的数进行各种运算,并可以得出可靠的结果

3.收获和体会

掌握了运算时候默认寄存器的应用,和有符号数,无符号数之间的运算差别

4.改进意见:

可通过程序改进实现由屏幕动态录入数据再进行运算

【实验2】

1.存在的问题

还需加强对操作语句,相关寄存器和语句之间调用的掌握

2.实验结论

通过对数据段的数据定义,利用DOS系统功能调用方法实现了判断奇偶数的方法。

3.收获和体会

学会定义数据段的数据和数据缓冲区,学会查看寄存器和存储器,学会了通过单步调试跟踪程序执行过程。

4.改进意见

可用逻辑移动的方法判断奇偶性

 

【实验3】

1.存在的问题

开始时不知道如何实现对所有数据的逐个访问,对cmp语句影响的寄存器位不能熟练应用

2.实验结论

可通过对目标数据里的数据和参照数进行逐一的比较来实现找出数据中的最大最小值

3.收获和体会

掌握了对通过si,dx实现对数据串的访问和使用cmp进行条件判断

4.改进意见:

 

教师

评语

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

当前位置:首页 > PPT模板 > 卡通动漫

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

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