汇编语言综合程序实验报告.docx

上传人:b****5 文档编号:11849307 上传时间:2023-04-06 格式:DOCX 页数:14 大小:199.75KB
下载 相关 举报
汇编语言综合程序实验报告.docx_第1页
第1页 / 共14页
汇编语言综合程序实验报告.docx_第2页
第2页 / 共14页
汇编语言综合程序实验报告.docx_第3页
第3页 / 共14页
汇编语言综合程序实验报告.docx_第4页
第4页 / 共14页
汇编语言综合程序实验报告.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

汇编语言综合程序实验报告.docx

《汇编语言综合程序实验报告.docx》由会员分享,可在线阅读,更多相关《汇编语言综合程序实验报告.docx(14页珍藏版)》请在冰豆网上搜索。

汇编语言综合程序实验报告.docx

汇编语言综合程序实验报告

东北大学

计算机硬件技术基础实验报告

专业班级:

姓名:

学号:

20092100

实验题目:

综合程序设计

日期:

2011年12月12日

一、实验内容

1.自内存DATA单元开始存放若干个无符号字节数,数据个数在COUNT单元存放。

编制程序分别计算其中奇数,偶数的和,并分别存入ODDSUM,EVENSM单元。

设各类和不超过16位二进制数,可用一个字表示或存放。

2.试编制一程序。

从键盘输入一个字符,若为“1”,则显示“THEFIRSTSUBROUTINE!

”;否则显示“INPUTRIGHTCHARACTER”,返回DOS。

3.计算一组字数据中正数,负数和零的个数,并分别存放在PCOUNT,MCOUNT和ZCOUNT单元。

设该组数据首地址为ARRY,数据个数在CNT单元存放。

二、算法描述流程图

实验内容1、2、3的流程图分别为图1、图2、图3。

图1

图2

图3

图2

图1

图3

三、实验步骤

1.自内存DATA单元开始存放若干个无符号字节数,数据个数在COUNT单元存放。

编制程序分别计算其中奇数,偶数的和,并分别存入ODDSUM,EVENSM单元。

设各类和不超过16位二进制数,可用一个字表示或存放。

1)输入源程序:

DSEGSEGMENT

DATADB45H,16H,63H,24H,0B1H,0A6H,0A4H,18H

COUNTDW08

ODDSSUMDW0

EVENSSUMDW0

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

MAIN:

MOVAX,DSEG

MOVDS,AX

LEASI,DATA

MOVCX,COUNT

XORAX,AX

XORBX,BX

XORDX,DX

AGAIN:

MOVAL,[SI]

TESTAL,01

JZEVENS

ADDBX,AX

JMPCHCNT

EVENS:

ADDDX,AX

CHCNT:

INCSI

LOOPAGAIN

MOVODDSSUM,BX

MOVEVENSSUM,DX

MOVAH,4CH

INT21H

CSEGENDS

ENDMAIN

2)运行程序。

3)检查结果无错误后将结果记录下来。

2.试编制一程序。

从键盘输入一个字符,若为“1”,则显示“THEFIRSTSUBROUTINE!

”;否则显示“INPUTRIGHTCHARACTER”,返回DOS。

1)输入源程序:

DATASEGMENT

STR0DB'INPUTTHERIGHTCHARACTER','$'

STR1DB'INPUTCHARACTER:

$'

STR2DB'THEFIRSTSUBROUTINE!

$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETSTR1

MOVAH,09H

INT21H

MOVAH,01H

INT21H

CMPAL,'1'

JZSUBF

MOVDL,0DH

MOVAH,02H

INT21H

MOVDL,0AH

MOVAH,02H

INT21H

LEADX,STR0

MOVAH,09H

INT21H

JMPEXIT

SUBF:

LEADX,STR2

MOVAH,09H

INT21H

JMPEXIT

EXIT:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2)运行程序。

3)检查结果无错误后将结果记录下来。

3.计算一组字数据中正数,负数和零的个数,并分别存放在PCOUNT,MCOUNT和ZCOUNT单元。

设该组数据首地址为ARRY,数据个数在CNT单元存放。

1)输入源程序:

DSEGSEGMENT

ARRYDW15,-5,1,5,0,123,964,-327,0

CNTDW9

PCOUNTDW0

MCOUNTDW0

ZCOUNTDW0

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

START:

MOVAX,DSEG

MOVDS,AX

LEASI,ARRY

MOVCX,CNT

XORAX,AX

XORBX,BX

XORDX,DX

PMZN0:

TESTWORDPTR[SI],0FFFFH

JSMINUS

JNZPLUS

INCDX

JMPPMZN1

PLUS:

INCAX

JMPPMZN1

MINUS:

INCBX

JMPPMZN1

PMZN1:

INCSI+2

LOOPPMZN0

MOVPCOUNT,AX

MOVMCOUNT,BX

MOVZCOUNT,DX

MOVAH,4CH

INT21H

CSEGENDS

ENDSTART

2)运行程序。

3)检查结果无错误后将结果记录下来。

四、实验结果

1.自内存DATA单元开始存放若干个无符号字节数,数据个数在COUNT单元存放。

编制程序分别计算其中奇数,偶数的和,并分别存入ODDSUM,EVENSM单元。

设各类和不超过16位二进制数,可用一个字表示或存放。

程序运行结果如下界面所示:

2.试编制一程序。

从键盘输入一个字符,若为“1”,则显示“THEFIRSTSUBROUTINE!

”;否则显示“INPUTRIGHTCHARACTER”,返回DOS。

程序运行结果如下界面所示:

3.计算一组字数据中正数,负数和零的个数,并分别存放在PCOUNT,MCOUNT和ZCOUNT单元。

设该组数据首地址为ARRY,数据个数在CNT单元存放。

程序运行结果如下界面所示:

五、思考题

1.测试最低位状态也可以用右移指令,然后判断CF的状态.请问如何修改程序语句?

答:

将AGAIN和EVENS语句改为:

AGAIN:

MOVAL,[SI]

SHRAL,1

JNCEVENS

SHLAL,1

INCAL

ADDBX,AX

JMPCHCNT

EVENS:

SHLAL,1

ADDDX,AX

2.请仔细阅读程序说明AH功能号分别为01H,02H,09H时所代表的功能。

答:

01H——输入字符,02H——显示字符,09H——输出字符

3.本程序利用TEST指令影响标志位来判别程序分支,请问程序利用的是哪两个标志位?

答:

ZF和SF标志位

六、扩展题

1.有一班级,学生人数存储于内存NUB单元,该班同学某门课程的成绩存放于内存S开始的单元,编制程序,统计该班该课程的平均成绩,存放于E单元。

答:

DSEGSEGMENT

SDW5,4,3,6,7

NUBDW5

EDW0

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

START:

MOVAX,DSEG

MOVDS,AX

LEASI,S

MOVAX,0

MOVBX,0

MOVCX,NUB

AGAIN:

MOVBX,[SI]

ADDAX,BX

ADDSI,2

LOOPAGAIN

DIVNUB

MOVE,AX

MOVAH,4CH

INT21H

CSEGENDS

ENDSTART

运行结果:

2.编写程序在屏幕上显示A~Z26个大写字母,要求用DOS系统功能调用INT21H的02H号功能实现。

答:

DATASEGMENT

STRDB'OUTPUTCHARACTER:

$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETSTR

MOVAH,09H

INT21H

MOVAH,02H

MOVCX,26

MOVDL,'A'

L0:

MOVAH,2

INT21H

INCDL

LOOPL0

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

运行结果:

3.设有一组字节数据,编制程序求其全部正数的和。

设和不超过16位二进制数,可用一个字表示或存放。

答:

DATASEGMENT

BUFDB15,-15,7,-6,-34,56,6FH

BUF1DW0

DATAENDS

CODESEGMENT

ASSUMECS:

CSEG,DS:

DSEG

START:

MOVAX,DATA

MOVDS,AX

MOVDX,0

MOVCX,8

MOVSI,OFFSETBUF

L0:

TESTBYTEPTR[SI],0FFH

JSL1

MOVAX,[SI]

ANDAX,00FFH

ADDDX,AX

L1:

INCSI

LOOPL0

MOVBUF1,DX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

运行结果:

七、实验心得

这次综合程序的运行及思考题、扩展题的操作让我对汇编语言中的循环、求和、求平均值、判断正负、字符显示等有了更深的理解和更熟练的应用,但是通过运行第三个源程序也让我意识到自己对汇编语言的理解还不够深入,只是一味的照搬没有思考其中的语法错误,以后会加强学习争取做更熟练的操作。

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

当前位置:首页 > 初中教育 > 语文

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

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