实验三分支循环程序设计.docx

上传人:b****5 文档编号:10163335 上传时间:2023-02-08 格式:DOCX 页数:13 大小:232.96KB
下载 相关 举报
实验三分支循环程序设计.docx_第1页
第1页 / 共13页
实验三分支循环程序设计.docx_第2页
第2页 / 共13页
实验三分支循环程序设计.docx_第3页
第3页 / 共13页
实验三分支循环程序设计.docx_第4页
第4页 / 共13页
实验三分支循环程序设计.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

实验三分支循环程序设计.docx

《实验三分支循环程序设计.docx》由会员分享,可在线阅读,更多相关《实验三分支循环程序设计.docx(13页珍藏版)》请在冰豆网上搜索。

实验三分支循环程序设计.docx

实验三分支循环程序设计

福建农林大学金山学院实验报告

系:

机电工程专业:

电子信息工程年级:

09

姓名:

学号:

092230030实验课程:

汇编语言

实验室号:

_______实验设备号:

实验时间:

指导教师签字:

成绩:

实验三分支循环程序设计

1.实验目的和要求

1、学习调试程序,查找逻辑错误;

2、学习分支语句的编程和调试;

3、学习循环语句的编程和调试。

2.实验环境

实验的硬件环境是:

IBM—PC机及其兼容机

实验的软件环境是:

操作系统:

DOS2.0以上;调试程序:

DEBUG.COM;文本编程程序:

EDIT.EXE、WPS.EXE;宏汇编程序:

MASM.EXE(或ASM.EXE);连接装配程序:

LINK.EXE;交叉引用程序:

CREF.EXE(可有可无)。

3.实验内容及实验数据记录

1.有10个数,统计正数的个数,存放在变量M中中。

经过汇编后,形成EXE文件。

在DEBUG中,先用G=0命令执行程序,用D命令查看M单元的内容,会发现结果不正确。

用单步执行命令T=0,单步执行程序,查找程序中的逻辑错误,注意每一次循环中AL寄存器中值的变化是否正确。

(AL寄存器中存放正数的个数)

DSEGSEGMENT

MSGDB4,-2,-6,0,5,67,8,-3,5,6

MDB?

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

START:

MOVAX,DSEG

MOVDS,AX

MOVCX,10

MOVAL,0

LEASI,MSG

L1:

MOVBL,[SI]

CMPBL,0

JBENEXT

INCAL

NEXT:

INCSI

LOOPL1

MOVM,AL

MOVAL,0

MOVAH,4CH

INT21H

CSEGENDS

ENDSTART

 

2.数据段中是一组无符号数,将最小数存放在M单元中。

按上题方法查找一处逻辑错误。

DSEGSEGMENT

MSGDB13,15,7,25,24

MDB?

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

START:

MOVAX,DSEG

MOVDS,AX

MOVCX,4

MOVAL,MSG

MOVSI,OFFSETMSG+1

L1:

CMPAL,[SI]

JBNEXT

MOVAL,[SI]

NEXT:

LOOPL1

MOVM,AL

MOVAL,0

MOVAH,4CH

INT21H

CSEGENDS

ENDSTART

 

3.编程:

在首地址为BUF开始的内存单元中存有10个字节数,求其中0的个数,并将结果存于RESULT中。

4.编程:

,Ai,Bi为字节型无符号数,分别存于NUM1和NUM2开始的连续存储单元中,结果存于REST单元中。

4.算法描述及实验步骤

一、1、分析:

该程序是是将输入的十个数中输出大于0的数的个数,将之存入AL寄存器中,当[SI]的内容(即BL),大于0的时候,将AL加1,则可从AL中得到大于0的个数

2、

3、通过运行程序,发现AL=10,通过T命令可以发现,当BL<10时,程序仍在执行INCAL,故程序错误,因为JBE是无符号命令,所以将其改为JLE。

则程序变为:

DSEGSEGMENT

MSGDB4,-2,-6,0,5,67,8,-3,5,6

MDB?

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

START:

MOVAX,DSEG

MOVDS,AX

MOVCX,10

MOVAL,0

LEASI,MSG

L1:

MOVBL,[SI]

CMPBL,0

JLENEXT

INCAL

NEXT:

INCSI

LOOPL1

MOVM,AL

MOVAL,0

MOVAH,4CH

INT21H

CSEGENDS

ENDSTART

三.1、该程序需要计数器CX,段寄存器DS,源变址寄存器SI,还要为BUF提供空间,定义result数据寄存器BX,AX,输入十个数据,由SI指向数据区,将里面的内容传给BL,当BL=0时,AL先清0,然后加一,输出的值为AL的值,结果放到result。

可使用分支程序的方法来实现。

2、

3、DSEGSEGMENT

BUFDB4,-2,-6,0,5,67,8,-3,5,6

resultDB?

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

START:

MOVAX,DSEG

MOVDS,AX

MOVCX,10

MOVAL,0

LEASI,BUF

L1:

MOVBL,[SI]

CMPBL,0

JNZNEXT

INCAL

NEXT:

INCSI

LOOPL1

MOVresult,AL

MOVAL,0

MOVAH,4CH

INT21H

CSEGENDS

ENDSTART

四、1.该程序需要变址寄存器SI,DI,寄存器AX,DX,计数器CX,建立NUM1NUM2数据空间,输出空间REST,用到循环语句

2、

3、3DSEGSEGMENT

NUM1DB1,2,3,4,5,6,7,8

NUM2DB1,2,3,4,5,6,7,8

RESTDW?

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

START:

MOVAX,DSEG

MOVDS,AX

MOVCX,8

MOVDX,0

LEASI,NUM1

LEADI,NUM2

L1:

MOVAL,[SI]

MULBYTEPTR[DI]

ADDDX,AX

INCSI

INCDI

LOOPL1

MOVREST,DX

MOVAL,0

MOVAH,4CH

INT21H

CSEGENDS

ENDSTART

5.调试过程

1

2

二、1从MSG中输入五个数,AL取第一个数,SI取第二个数,比较AL,SI所取到的数的大小,若ALSI,AL=[SI];

将AL的内容输出,则得出输出五个数中的最小数

2

3、运行程序,发现程序结果错误,用T命令查看,发现两个比较完成后,指针未下移,所以在循环体后加一步:

INCSI,即程序为:

DSEGSEGMENT

MSGDB13,15,7,25,24

MDB?

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

START:

MOVAX,DSEG

MOVDS,AX

MOVCX,4

MOVAL,MSG

MOVSI,OFFSETMSG+1

L1:

CMPAL,[SI]

JBNEXT

MOVAL,[SI]

NEXT:

INCSI

LOOPL1

MOVM,AL

MOVAL,0

MOVAH,4CH

INT21H

CSEGENDS

ENDSTART

6.实验结果

1、

2、

3、

4、

7.总结

对上机实验结果进行分析、上机的心得体会及改进意见。

附录:

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

当前位置:首页 > 工作范文 > 制度规范

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

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