汇编语言综合程序实验报告.docx
- 文档编号:11849307
- 上传时间:2023-04-06
- 格式:DOCX
- 页数:14
- 大小:199.75KB
汇编语言综合程序实验报告.docx
《汇编语言综合程序实验报告.docx》由会员分享,可在线阅读,更多相关《汇编语言综合程序实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
汇编语言综合程序实验报告
东北大学
计算机硬件技术基础实验报告
专业班级:
姓名:
学号:
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
运行结果:
七、实验心得
这次综合程序的运行及思考题、扩展题的操作让我对汇编语言中的循环、求和、求平均值、判断正负、字符显示等有了更深的理解和更熟练的应用,但是通过运行第三个源程序也让我意识到自己对汇编语言的理解还不够深入,只是一味的照搬没有思考其中的语法错误,以后会加强学习争取做更熟练的操作。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 综合 程序 实验 报告