- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
科技学院
课程设计(综合实验)报告
( 2015 -- 2016 年度第 1 学期)
名 称:汇编语言程序设计综合实验
题 目:汇编语言程序设计综合实验
院 系: 计算机系
班 级: 网络
学 号:
学生姓名:
指导教师: 熊海军 王蓝婧
设计周数: 一 周
成 绩:
日期:2015年 12 月 30 日实验一 比较字符串sample
一、课程设计(综合实验)的目的与要求
熟悉DEBUG有关命令的使用方法; 利用DEBUG掌握有关指令的功能;利用DEBUG运行简单的程序段。 进入和退出DEBUG程序; 学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。对于U命令、N命令、W命令等,也应试一下; 利用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。
二、设计(实验)正文
(1)设计思路
通过实现简单的比较字符串的程序初步熟悉汇编程序的编写与功能实现。
(2)程序框图
(3)程序实现
DATAS SEGMENT
string1 db Move the cursor backward.
string2 db Move the cursor backward.
mess1 db Match.,13,10,$
mess2 db No match!,13,10,$
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,ES:DATAS,SS:STACKS
START:
main proc far
;设置堆栈为返回
push ds;保存旧数据段
sub ax,ax;清零
push ax;保存ax
;设置DS寄存器为当前数据段
mov ax,datas;数据段地址
mov ds,ax
mov es,ax
;程序的主要部分
lea si,string1;设置串比较命令的初值,将string1的偏移地址放到si中,使si指向string1
lea di,string2
cld;清除方向标志
mov cx,25;进行25次字符比较
repz cmpsb;如果ds:si和es:di所指向的两个字节相等,则继续比较,否则停止循环
jz match
lea dx,mess2
jmp short disp
match:
lea dx,mess1
disp:
mov ah,09h
int 21h
ret;返回DOS
main endp
CODES ENDS
END START
(4)实验结果
三、课程设计(综合实验)总结或结论
本次试验利用例1.1比较字符串sample,熟悉了汇编编程环境,掌握了汇编程序的整体结构,为后继实验做了很好的准备。
四、参考文献
[1] 沈美明, 温冬婵.IBM-PC汇编语言程序设计. 清华大学出版社, 第二版. 2003.12
实验二 查找匹配字符串
一、课程设计(综合实验)的目的与要求
程序接受用户键入的一个关键字以及一个句子。如果句子中不含关键字则显示‘no match’;如果句子中包含关键字则显示‘match’,且把该字在句子中的位置用十六进制数显示出来。
二、设计(实验)正文
(1)设计思路
1、输入关键字和一个句子,分别存入相应的缓冲区中。可用DOS的10#功能调用。
2、在句子中查找关键字。
2.1关键字和句子中相应字段的比较可用串比较指令。为此必须定义附加段,但附加段和数据段课定义为同一段,以便于串指令的使用。相应的寄存器内容确定如下:
SI 寄存器为关键字的指针
DI 寄存器为句子中正相比较的字段的的指针
DH 寄存器存放关键字的字母个数
BX 寄存器存放句子中当前正在比较的字段的首地址
2.2整个句子和关键字的比较过程可以用一个循环结构来完成。循环次数为:(句子长度-关键字长度)+1
3、输出信息。用DOS系统#号功能调用,分“找到”和“未找到”两种情况分别显示不同信息。
4、数制转换。通过循环移位法将二进制转换为十六进制。
(2)程序框图
(3)程序实现
DATAS SEGMENT
keyadr label byte;改变变量类型
keymax
文档评论(0)