查找字符串中的指定字符程序设计.docx

上传人:b****3 文档编号:24759336 上传时间:2023-06-01 格式:DOCX 页数:24 大小:65KB
下载 相关 举报
查找字符串中的指定字符程序设计.docx_第1页
第1页 / 共24页
查找字符串中的指定字符程序设计.docx_第2页
第2页 / 共24页
查找字符串中的指定字符程序设计.docx_第3页
第3页 / 共24页
查找字符串中的指定字符程序设计.docx_第4页
第4页 / 共24页
查找字符串中的指定字符程序设计.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

查找字符串中的指定字符程序设计.docx

《查找字符串中的指定字符程序设计.docx》由会员分享,可在线阅读,更多相关《查找字符串中的指定字符程序设计.docx(24页珍藏版)》请在冰豆网上搜索。

查找字符串中的指定字符程序设计.docx

查找字符串中的指定字符程序设计

 

微机原理与汇编技术

课程设计(论文)

样张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

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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