黑龙江大学软件学院汇编实验报告实验四.docx

上传人:b****6 文档编号:8746602 上传时间:2023-02-01 格式:DOCX 页数:22 大小:498.32KB
下载 相关 举报
黑龙江大学软件学院汇编实验报告实验四.docx_第1页
第1页 / 共22页
黑龙江大学软件学院汇编实验报告实验四.docx_第2页
第2页 / 共22页
黑龙江大学软件学院汇编实验报告实验四.docx_第3页
第3页 / 共22页
黑龙江大学软件学院汇编实验报告实验四.docx_第4页
第4页 / 共22页
黑龙江大学软件学院汇编实验报告实验四.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

黑龙江大学软件学院汇编实验报告实验四.docx

《黑龙江大学软件学院汇编实验报告实验四.docx》由会员分享,可在线阅读,更多相关《黑龙江大学软件学院汇编实验报告实验四.docx(22页珍藏版)》请在冰豆网上搜索。

黑龙江大学软件学院汇编实验报告实验四.docx

黑龙江大学软件学院汇编实验报告实验四

实验报告

课程名称

汇编语言

实验项目名称

汇编语言上机

实验时间

(日期及节次)

2012.4.23,两节

专业

软件工程

学生所在学院

软件学院

年级

大一

学号

20113311

姓名

杜常数

指导教师

史新奕

实验室名称

第三实验室

实验成绩

预习情况

操作技术

实验报告

附加:

综合创新能力

实验

综合成绩

教师签字

黑龙江大学教务处

汇编语言

实验报告

黑龙江大学软件学院

2012年4月

实验名称:

串操作程序设计

实验目的1.掌握串操作指令。

2.利用串操作指令编程。

实验类型

实验环境

实验环境(软件和硬件环境):

硬件环境:

IBM-PC及其系列机

内存256KB以上

外存:

硬盘或至少一个软驱

CPU:

80586以上

显示器:

单色或彩色显示器

键盘:

标准ASCII码键盘

软件环境:

编缉器:

EDIT.COM或其它编缉器

汇编程序:

MASM.EXE

连接程序:

LINK.EXE

调试程序:

DEBUG.EXE

 

主要设计思想与算法

利用字符串处理指令对字符串进行简单处理

1.编写程序,将数据段中的字符串STRING的内容复制到附加段中的缓冲区BUFFER中,然后将EXTRA段中的字符串输出到显示器。

程序如下:

DATASEGMENT

STRINGDB'COPYUSPLEASE!

$';字符串定义,每个字符占用一个字节。

DATAENDS

EXTRASEGMENT

BUFFERDB16DUP(?

);为BUFFER分配了16个字节的存储空间。

EXTRAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

EXTRA

START:

MOVAX,DATA

MOVDS,AX;数据段段地址送DS寄存器

MOVAX,EXTRA

MOVES,AX;附加段段地址送ES寄存器

LEASI,STRING

LEADI,BUFFER

MOVCX,16

CLD

REPMOVSB

MOVAH,09H

LEADX,BUFFER

INT21H

 

MOVAH,4CH

INT21H;程序退出

CODEENDS

ENDSTART

2.编写程序,利用串比较指令比较数据段和附加段中两个字符串,如果两串相等输出Y否则输出N,利用DEBUG调试程序分析串比较指令执行后CX、SI、DI的值。

程序如下:

DATASEGMENT

STRINGDB'ABCDEFG$';字符串定义,每个字符占用一个字节。

NDB'N$'

YDB'Y$'

DATAENDS

EXTRASEGMENT

BUFFERDB'ABCDEFG$';为BUFFER分配了15个字节的存储空间。

EXTRAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

EXTRA

START:

MOVAX,DATA

MOVDS,AX;数据段段地址送DS寄存器

MOVAX,EXTRA

MOVES,AX;附加段段地址送ES寄存器

LEASI,STRING

LEADI,BUFFER

MOVCX,7

CLD

REPECMPSB

JNZDIFFERENT

MOVAH,09H

LEADX,Y

INT21H

JMPEXIT

DIFFERENT:

MOVAH,09H

LEADX,N

INT21H

EXIT:

MOVAH,4CH

INT21H;程序退出

CODEENDS

ENDSTART

3.编写程序,将附加段中的缓冲区BUFFER全部赋值为’@’,然后将字符数组BUFFER的内容输出到显示器。

程序如下:

EXTRASEGMENT

BUFFERDB15DUP(?

);为BUFFER分配了15个字节的存储空间。

EXTRAENDS

CODESEGMENT

ASSUMECS:

CODE,ES:

EXTRA

START:

MOVAX,EXTRA

MOVES,AX;附加段段地址送ES寄存器

MOVAL,'@'

LEADI,BUFFER

MOVCX,14

CLD

REPSTOSB

MOVAL,'$'

MOVES:

[DI],AL

MOVAH,09H

LEADX,BUFFER

INT21H

MOVAH,4CH

INT21H;程序退出

CODEENDS

ENDSTART

4.编写完整程序,在附加段中的字数组中查找是否有数100,有则输出Y,否则输出N。

程序如下:

DATASEGMENT

YDB'Y$'

NDB'N$'

DATAENDS

EXTRASEGMENT

ARRAYDW1,2,3,4,93,100,38,48

EXTRAENDS

CODESEGMENT

ASSUMECS:

CODE,ES:

EXTRA,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,EXTRA

MOVES,AX;附加段段地址送ES寄存器

MOVCX,8

LEADI,ARRAY

MOVAX,100

CLD

REPNESCASW

JZFOUND;结果为零跳了至FOUND

MOVAH,09H;否则未找到

LEADX,N

INT21H

JMPEXIT

FOUND:

MOVAH,09H

LEADX,Y

INT21H

EXIT:

MOVAH,4CH

INT21H;程序退出

CODEENDS

ENDSTART

实验结果(测试用例、实验结果)

1汇编并连接HB41.ASM,生成HB1.exe文件

执行HB41.EXE文件

对HB41.EXE进行调试

用T命令分步执行,观察CX,SI,DI的值变化情况

程序执行REPZMOVSBCX的值由000F变为0000,SI,DI分别由0000变为0010;

用D命令查看附加段的值

2.

对HB42.ASM文件进行汇编连接工作

执行生成文件HB42.EXE

对HB42.EXE文件进行调试-U查看所有值

用-T进行分步调试

进行比较前将BUFFER偏移地址给DI,STRING偏移地址给SI

记录CX=0007,SI=0000,DI=0000

观察程CX,SI,DI的值变化

最后比较结束CX=0000,SI=0007,DI=0007

输出为Y说明两字符串完全相同

完成调试后退出

 

3.

完成对HB43.ASM文件的汇编和连接生成HB43.EXE文件

执行后在屏幕上输出一串@符号

调试HB43.EXE

分步执行调试

记录并观察CX,DI的值变化情况。

程序正常运行结束后用-D命令查看ES段的值

4.

对HB44.ASM文件进行汇编连接

执行HB44.EXE文件,屏幕上输出‘Y’

对HB43,.EXE进行调试

-U查看所有值的情况

-T分步运行

记录CX=0008,DI=0000

 

CX=0002,DI=000C时发生跳转IP=0024,说明查找到了要找的数据

 

正常运行,退出

实验总结

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

当前位置:首页 > 职业教育 > 中职中专

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

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