查找字符串中的指定字符程序设计.docx
- 文档编号:24759336
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:24
- 大小:65KB
查找字符串中的指定字符程序设计.docx
《查找字符串中的指定字符程序设计.docx》由会员分享,可在线阅读,更多相关《查找字符串中的指定字符程序设计.docx(24页珍藏版)》请在冰豆网上搜索。
查找字符串中的指定字符程序设计
微机原理与汇编技术
课程设计(论文)
样张1
查找字符串中的指定字符程序设计
院(系)名称
专业班级
学号
学生姓名
指导教师
起止时间:
2015.12.21—2015.12.31
课程设计(论文)任务与评语
院(系):
教研室:
学号
学生姓名
专业班级
课程设计(论文)题目
查找字符串中的指定字符程序设计
课程设计(论文)任务
设计内容
设计一个程序,能够按要求查找字符串中的字符并按要求显示。
性能指标与技术要求
1、设计一个操作界面,提示操作,如:
输入一串字符串、输入所查找的字符或字符串等;
2、显示出查找到的数目;
3、用不同颜色或闪烁标示出所找到的字符或字符串。
指导教师评语与成绩
平时成绩:
答辩成绩:
论文成绩:
总成绩:
指导教师签字:
年月日
注:
平时成绩占20%,答辩成绩占40%,论文成绩占40%。
摘要
汇编语言(AssemblyLanguage)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。
在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。
普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
汇编语言是直接面向处理器的程序设计语言。
处理器是在指令的控制下工作的,处理器可以识别的每一条指令称为机器指令。
每一种处理器都有自己可以识别的一整套指令,称为指令集。
处理器执行指令时,根据不同的指令采取不同的动作,完成不同的功能,既可以改变自己内部的工作状态,也能控制其它外围电路的工作状态。
汇编语言所操作的对象不是具体的数据,而是寄存器或者存储器,也就是说它是直接和寄存器和存储器打交道,这也是为什么汇编语言的执行速度要比其它语言快,但同时这也使编程更加复杂,因为既然数据是存放在寄存器或存储器中,那么必然就存在着寻址方式,也就是用什么方法找到所需要的数据。
汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。
在今天的实际应用中,它通常被应用在底层,硬件操作和高要求的程序优化的场合。
驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。
关键词:
汇编语言;机器指令;寄存器;存储器
第1章前言
1.1背景
信息检索是指根据一定的策略、运用特定的计算机程序从互联网上或指定文件中搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。
信息检索是获取知识、信息的基本手段。
如何有效、快速、准确地在信息海洋中找到人们所需要的信息,使之成为重要资源,已是信息时代人们的重要需求,因而,信息检索技术在信息社会中将发挥越来越重要的作用。
主要体现在以下几个方面:
第一,能够全面地掌握有关的必要信息,增强决策的科学性。
掌握一定量的必要信息,是进行研究、搞好工作的首要条件,也是进行正确决策必不可少的前提条件。
科学的决策,源于对信息资料的充分了解与认识,信息检索是国家、部门、单位和个人等决策者获取信息的重要途径。
因此,信息检索会使国家、部门、单位和个人的决策建立在科学基础之上,大大增加了决策的科学性,减少了决策的盲目性。
第二,提高信息利用的效率,缩短获取信息的时间。
信息检索可以使用户在短时间内获取有需求紧密相关的信息,使用户有更多的时间去完成更重要的工作,从而大大提高了工作效率。
第三,有利于信息用户获取所需的全部信息。
信息检索工作往往依存于一个或多个很大的信息库,信息库中存储着很全面的各种信息。
通过信息检索工作,一次就可查获信息用户所需要的全部信息。
1.2基本功能要求
设计一个程序,能够按要求查找字符串中的字符并按要求显示。
(1)设计一个操作界面,提示操作,如:
输入一串字符串等;
(2)显示出查找到的数目;
(3)用不同颜色或闪烁标示出所找到的字符或字符串。
第2章程序设计
2.1题目的基本内容
任务要求:
设计一个程序,能够按要求查找字符串中的字符并按要求显示。
技术要求:
(1)设计一个操作界面,提示操作,如:
输入一串字符串等;
(2)显示出查找到的数目;
(3)用不同颜色或闪烁标示出所找到的字符或字符串。
2.2总体流程图
2.3详细说明
通过字符串比较查找字符串,并在查找过程中计数并作为光标的偏移量,以光标偏移量控制变色位置。
程序开始,设置操作窗口,设置光标位置,通过键盘选择确定功能“退出”或“查找字符串”,选择“1”时,进入“查找字符串”模块,选择“5”时,直接退出程序。
2.4主要程序段与其设计分析
段定义:
STACKSEGMENTSTACK
DB256DUP(?
)
TOPLABELWORD
STACKENDS
DATASEGMENT;定义数据段
TABLEDWG1,G5
STRING1DB'1.Findthespecifiedcharacterstring',0DH,0AH,'$'
STRING5DB'5.Exit',0DH,0AH,'$'
STRINGNDB'Inputthenumberyouselect(1OR5):
$'
INF1DB0DH,0AH,'pleaseinputstring:
$'
INF2DB0DH,0AH,0DH,0AH,'pleaseinputaword:
$'
INF3DB0DH,0AH,0DH,0AH,'result:
$'
BUFFDB255
DB?
DB255DUP(?
)
OVERDB1
DB?
DB1DUP(?
)
DATAENDS
CODESEGMENT;定义代码段
ASSUMEDS:
DATA,CS:
CODE
功能选择模块:
BEGIN:
MOVAX,DATA
MOVDS,AXMOVAX,STACK
MOVSS,AX
MOVSP,OFFSETTOP
MAIN:
CALLFARPTRMENU;设置显示器
AGAIN0:
MOVAH,2
MOVBH,0;页号
MOVDL,41;列号
MOVDH,10;行号
INT10H;光标位置设置
MOVAH,1
INT21H
CMPAL,'1'
JBAGAIN0
CMPAL,'5'
JAAGAIN0
SUBAL,'1';N-1
SHLAL,1;(N-1)*2
CBW;AL->AX
LEABX,TABLE
ADDBX,AX
JMPWORDPTR[BX]
G1:
CALLFARPTRCHGLTR
MOVAH,8
INT21H
CMPAL,1BH
JZMAIN
JMPG1
G5:
MOVAH,4CH
INT21H
MENUPROCFAR;显示主界面
;设置显示方式
MOVAH,0
MOVAL,3
MOVBL,0
INT10H;清屏
MOVAH,2
MOVBH,0;页号
MOVDL,5;列号
MOVDH,5;行号
INT10H;光标位置设置
MOVAH,9
LEADX,STRING1
INT21H
MOVAH,2
MOVDL,5;列号
MOVDH,6;行号
INT10H;光标位置设置
MOVAH,9
LEADX,STRING5
INT21H
MOVAH,2
MOVDL,5;列号
MOVDH,10;行号
INT10H;光标位置设置
MOVAH,9
LEADX,STRINGN
INT21H
RET
MENUENDP
清屏:
MOVAH,0
MOVAL,3
MOVBL,0
INT10H;清屏
输入字符:
LEADX,INF1;提示输入字符串
MOVAH,9
INT21H
LEADX,BUFF;从键盘输入字符串,按Enter结束
MOVAH,0AH
INT21H
LEADX,INF2;提示输入查询字符
MOVAH,9
INT21H
LEADX,OVER
MOVAH,1;从键盘输入查询字符
INT21H
查找字符并计数:
MOVCL,BUFF+1;字符总数
XORCH,CH
LEASI,BUFF+2;字符串首地址
XORDH,DH
XORBX,BX;取字符串的字符与查询字符循环比较
AGAIN:
CMPAL,[SI]
JNZNEXT
INCBL;查询结果个位放在BL
CALLDISP
CMPBL,0AH
JNZNEXT
INCBH;查询结果十位放在BH
CALLDISP
XORBL,BL
CMPBH,0AH
JNZNEXT
INCDH;查询结果百位放在DH
CALLDISP
XORBH,BH
NEXT:
INCSI
LOOPAGAIN
MOVCH,DH
LEADX,OVER;按Enter结束查询字符的输入
MOVAH,0AH
INT21H
LEADX,INF3;提示输出结果
MOVAH,9
INT21H
XORCL,CL
CMPCH,CL
JZER;若输出结果为两位,则不显示百位
MOVDL,CH
ADDDL,30H;百位转成ASCII码
MOVAH,2;输出百位
INT21H
JNZSAN;但结果为三位数跳转
ER:
CMPBH,CL
JZYI;结果为一位数,则十位为0
SAN:
MOVDL,BH
ADDDL,30H;十位转成ASCII码
MOVAH,2;输出十位
INT21H
YI:
MOVDL,BL
ADDDL,30H;个位转成ASCII码
MOVAH,2;输出个位
INT21H
LEADX,OVER;按Enter继续
MOVAH,0AH
INT21H
MOVAH,4CH
INT21H
变色程序:
DLY_QRTRPROCNEAR;延时程序
PUSHCX
PUSHDX
MOVDX,60000
D11:
MOVCX,4000
D12:
LOOPD12
DECDX
JNZD11
POPDX
POPCX
RET
DLY_QRTRENDP
DISPPROCNEAR;变色程序
PUSHAX;保护现场
PUSHBX
PUSHCX
PUSHDX
PUSHDI
PUSHSI
MOVBH,0
MOVDH,0
MOVAL,BUFF+1;字符串总长度
ADDAL,100
SUBAL,CL
MOVDL,AL;变色
MOVAH,03
INT10H
MOVAL,[SI]
MOVBL,20
MOVCX,1
MOVAH,09
INT10H
CALLDLY_QRTR;调用延时程序
POPSI
POPDI;恢复现场
POPDX
POPCX
POPBX
POPAX
RET
DISPENDP
CHGLTRENDP
CODEENDS
ENDBEGIN
退出程序:
MOVAH,4CH
INT21H
2.5运行结果
图2.1功能选择界面
图2.2查找到结果界面
图2.3未查找到结果界面
第3章课程设计总结
通过本次课程设计,让我更加深刻地理解了课本知识,对以往疏忽的知识得到了补充,加深了对一些概念和专业术语的理解程度。
在课程设计中遇到了很多问题,都过查找资料一一得以解决,我相信这本书中还有很多我没有搞清楚的问题,但是这次的课程设计与给了我相当扎实的基础知识,为我以后工作打下了坚实的基础。
虽然这次课程设计是那么短暂的两周时间,但我感觉这些天我的所学胜过我这一学期所学,让我对课本知识得到了熟悉和应用,是我做事的耐心和仔细程度得以提高。
课程设计是培训学生运用本专业所学的理论知识和专业知识来分析解决实际问题的重要教学环节,是对所学知识的复习和巩固。
同样,也促进了同学们的相互探讨、相互学习。
因此,我们必须认真、谨慎、踏实、一步一步的完成设计。
课程设计是一个重要的教学环节,通过课程设计使我们了解到一些实际与理论之间的差异。
通过课程设计不仅可以巩固专业知识,为以后的工作打下坚实的基础,而且还可以培养和熟练使用资料,运用工具书的能力,把我们所学的课本知识与实践结合起来,起到温故而知新的作用。
在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。
只有在不断的尝试中,经历失败,从失败中总结经验,然后再不断的尝试,才能获得成功。
本人签字:
参考文献
[1]周杰英,张萍等编著.微机原理、汇编语言与接口技术.北京:
人民邮电出版社,2011
[2]沈美明,温冬婵.IBM-PC汇编语言程序设计.北京:
清华大学出版社,2012
[3]钱晓捷.基于Windows环境的汇编语言程序设计.北京:
清华大学出版社,2012
[4]PeterAbel.IBM-PC汇编语言程序设计.北京:
人民邮电出版社,2002
[5]傅德胜,孙文静.高级汇编语言程序设计与应用.南京:
东南大学出版社,2009
附录
源程序代码
STACKSEGMENTSTACK
DB256DUP(?
)
TOPLABELWORD
STACKENDS
DATASEGMENT;定义数据段
TABLEDWG1,G5
STRING1DB'1.Findthespecifiedcharacterstring',0DH,0AH,'$'
STRING5DB'5.Exit',0DH,0AH,'$'
STRINGNDB'Inputthenumberyouselect(1OR5):
$'
INF1DB0DH,0AH,'pleaseinputstring:
$'
INF2DB0DH,0AH,0DH,0AH,'pleaseinputaword:
$'
INF3DB0DH,0AH,0DH,0AH,'result:
$'
BUFFDB255
DB?
DB255DUP(?
)
OVERDB1
DB?
DB1DUP(?
)
DATAENDS
CODESEGMENT;定义代码段
ASSUMEDS:
DATA,CS:
CODE
BEGIN:
MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
MOVSP,OFFSETTOP
MAIN:
CALLFARPTRMENU;设置显示器
AGAIN0:
MOVAH,2
MOVBH,0;页号
MOVDL,41;列号
MOVDH,10;行号
INT10H;光标位置设置
MOVAH,1
INT21H
CMPAL,'1'
JBAGAIN0
CMPAL,'5'
JAAGAIN0
SUBAL,'1';N-1
SHLAL,1;(N-1)*2
CBW;AL->AX
LEABX,TABLE
ADDBX,AX
JMPWORDPTR[BX]
G1:
CALLFARPTRCHGLTR
MOVAH,8
INT21H
CMPAL,1BH
JZMAIN
JMPG1
G5:
MOVAH,4CH
INT21H
MENUPROCFAR;显示主界面
;设置显示方式
MOVAH,0
MOVAL,3
MOVBL,0
INT10H;清屏
MOVAH,2
MOVBH,0;页号
MOVDL,5;列号
MOVDH,5;行号
INT10H;光标位置设置
MOVAH,9
LEADX,STRING1
INT21H
MOVAH,2
MOVDL,5;列号
MOVDH,6;行号
INT10H;光标位置设置
MOVAH,9
LEADX,STRING5
INT21H
MOVAH,2
MOVDL,5;列号
MOVDH,10;行号
INT10H;光标位置设置
MOVAH,9
LEADX,STRINGN
INT21H
RET
MENUENDP
CHGLTRPROCFAR
MOVAH,0
MOVAL,3
MOVBL,0
INT10H;清屏
LEADX,INF1;提示输入字符串
MOVAH,9
INT21H
LEADX,BUFF;从键盘输入字符串,按Enter结束
MOVAH,0AH
INT21H
LEADX,INF2;提示输入查询字符
MOVAH,9
INT21H
LEADX,OVER
MOVAH,1;从键盘输入查询字符
INT21H
MOVCL,BUFF+1;字符总数
XORCH,CH
LEASI,BUFF+2;字符串首地址
XORDH,DH
XORBX,BX;取字符串的字符与查询字符循环比较
AGAIN:
CMPAL,[SI]
JNZNEXT
INCBL;查询结果个位放在BL
CALLDISP
CMPBL,0AH
JNZNEXT
INCBH;查询结果十位放在BH
CALLDISP
XORBL,BL
CMPBH,0AH
JNZNEXT
INCDH;查询结果百位放在DH
CALLDISP
XORBH,BH
NEXT:
INCSI
LOOPAGAIN
MOVCH,DH
LEADX,OVER;按Enter结束查询字符的输入
MOVAH,0AH
INT21H
LEADX,INF3;提示输出结果
MOVAH,9
INT21H
XORCL,CL
CMPCH,CL
JZER;若输出结果为两位,则不显示百位
MOVDL,CH
ADDDL,30H;百位转成ASCII码
MOVAH,2;输出百位
INT21H
JNZSAN;但结果为三位数跳转
ER:
CMPBH,CL
JZYI;结果为一位数,则十位为0
SAN:
MOVDL,BH
ADDDL,30H;十位转成ASCII码
MOVAH,2;输出十位
INT21H
YI:
MOVDL,BL
ADDDL,30H;个位转成ASCII码
MOVAH,2;输出个位
INT21H
LEADX,OVER;按Enter继续
MOVAH,0AH
INT21H
MOVAH,4CH
INT21H
DLY_QRTRPROCNEAR;延时程序
PUSHCX
PUSHDX
MOVDX,60000
D11:
MOVCX,4000
D12:
LOOPD12
DECDX
JNZD11
POPDX
POPCX
RET
DLY_QRTRENDP
DISPPROCNEAR;变色程序
PUSHAX;保护现场
PUSHBX
PUSHCX
PUSHDX
PUSHDI
PUSHSI
MOVBH,0
MOVDH,0
MOVAL,BUFF+1;字符串总长度
ADDAL,100
SUBAL,CL
MOVDL,AL;变色
MOVAH,02
INT10H
MOVAL,[SI]
MOVBL,20
MOVCX,1
MOVAH,09
INT10H
CALLDLY_QRTR;调用延时程序
POPSI
POPDI;恢复现场
POPDX
POPCX
POPBX
POPAX
RET
DISPENDP
CHGLTRENDP
CODEENDS
ENDBEGIN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 查找 字符串 中的 指定 字符 程序设计