微机原理实验2程序---字符串匹配实验_第1页
微机原理实验2程序---字符串匹配实验_第2页
微机原理实验2程序---字符串匹配实验_第3页
微机原理实验2程序---字符串匹配实验_第4页
微机原理实验2程序---字符串匹配实验_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8086 汇编语言源程序2011 年 湖北汽车工业学院湖北汽车工业学院 袁致旺袁致旺 作作 8086 汇编语言程序实验 实验二 字符串匹配实验 题目 1 必做题 编程实现 从键盘分别输入两个字符串 不必等长 然后进行比较 若两个字符串有相同的字符 则显示 MATCH 若字符都不相同则显示 NO MATCH 2 选做题 编程实现 从键盘分别输入两个字符串 然后进行 比较 若两个字符串的长度和对应字符都完全相同 则显示 MATCH 否则显示 NO MATCH 对应程序如下所示 第 1 题 HUICHEMACRO 定义一个具有回车 换行功能的宏 为程序多次回车换行所调用 MOV DL 0DH 用 2 号功能 显示 回车 MOV AH 02H INT 21H MOV DL 0AH 用 2 号功能 显示 换行 MOV AH 02H INT 21H ENDM DATA SEGMENT MESSAGE1 DB MATCH 定义 MATCH 提示信息 作为调用 9 号功能的结束符 MESSAGE2 DB NO MATCH 定义 NO MATCH 提示信息 TISHI1 DB Please input the first string 提示输入第 1 个字符串的提示信息 TISHI2 DB Please input the second string 提示输入第 1 个字符串的提示信息 STRING1 DB 100 100 为存第一个字符串的最大可用空间的字节数 DB 预留字节 存储将要输入的第 1 个字符串的实际长度 DB 100 DUP 预留 100 个字节空间 用于存放第 1 个字符串 STRING2 DB 100 DB DB 100 DUP DATA ENDS 8086 汇编语言源程序2011 年 湖北汽车工业学院湖北汽车工业学院 袁致旺袁致旺 作作 STACK SEGMENT 定义一个 50 字节大小的堆栈段空间 ZHANDB 50 DUP ZHANDINGEQU LENGTH ZHAN STACK ENDS CODE SEGMENT 代码段开始 ASSUME CS CODE DS DATA ES DATA SS STACK STARTUP MOV AX DATA 程序开始 首先将几个段寄存器初始化为各段的首地址 MOV DS AX MOV ES AX MOV AX STACK MOV SS AX MOV SP ZHANDING 栈顶指针赋初值 MOV DX OFFSET TISHI1 用 9 功能显示提示输入第 1 个字符串的提示信息 MOV AH 9 INT 21H HUICHE 调用 宏定义的 回车换行 功能 程序运行到此处时进行回车换行 MOV DX OFFSET STRING1 MOV AH 0AH 用 10 号功能输入第 1 个字符串 INT 21H HUICHE MOV DX OFFSET TISHI2 MOV AH 9 INT 21H HUICHE MOV DX OFFSET STRING2 输入第 2 个字符串 MOV AH 0AH INT 21H HUICHE CLD 方向标志位清 0 按增址方向操作 MOV SI OFFSET STRING1 2 将第 1 个字符串第 1 个字符偏移地址传送给 SI 为串搜索做准备 MOV BX 0 BX 为后面 记下第 1 个字符串已经被搜索过的字符的个数 做准备 MOV CL STRING1 1 MOV CH 0 将第 1 个字符串的实际长度赋给 CX L1 PUSH CX 先将第 1 个字符串的实际长度压入堆栈 保留 为后面备用 MOV DI OFFSET STRING2 2 将第 2 个字符串第 1 个字符偏移地址传送给 DI 为串搜索做准 备 MOV CL STRING2 1 将第 2 个字符串的实际长度传送给 CX MOV CH 0 MOV AL SI 8086 汇编语言源程序2011 年 湖北汽车工业学院湖北汽车工业学院 袁致旺袁致旺 作作 REPNZ SCASB 进行串搜索 将第 2 个字符串中的字符与第 1 个字符串的一个字符进行比较 JZ XXX1 INC SI SI 加 1 指向第 1 个字符串的下一个字符 INC BX 记下第 1 个字符串已经被搜索过的字符的个数 POP CX CMP CX BX 已经被搜索过的字符个数 BX 与 第 1 个字符串实际长度 CX 进行比较 JNZ L1 若 BX 与 CX 不等 则进行 第 1 字符串的下一字符 与 第 2 字符串中的字符 的比较 若 BX 与 CX 相等 则进行执行下面的语句 显示 NO MACTH MOV DX OFFSET MESSAGE2 显示 NO MACTH MOV AH 9 INT 21H JMP XXX2 显示 NO MACTH 后 跳转到 XXX2 准备返回 DOS 系统 XXX1 MOV DX OFFSET MESSAGE1 显示 MACTH MOV AH 9 INT 21H XXX2 MOV AH 1 INT 21H 等待键盘响应 准备返回 DOS 系统 MOV AH 4CH 返回 DOS 系统 准备结束程序 INT 21H CODE ENDS END STARTUP 程序从此处结束 8086 汇编语言源程序2011 年 湖北汽车工业学院湖北汽车工业学院 袁致旺袁致旺 作作 第 2 题 HUICHEMACRO 定义一个具有回车 换行功能的宏 为程序多次回车换行所调用 MOV DL 0DH MOV AH 02H INT 21H MOV DL 0AH MOV AH 02H INT 21H ENDM DATA SEGMENT MESSAGE1 DB MATCH MESSAGE2 DB NO MATCH TISHI1 DB Please input the first string TISHI2 DB Please input the second string STRING1 DB 100 DB DB 100 DUP STRING2 DB 100 DB DB 100 DUP DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA ES DATA STARTUP MOV AX DATA MOV DS AX MOV ES AX MOV DX OFFSET TISHI1 MOV AH 9 INT 21H HUICHE 调用 宏定义的 回车换行 功能 程序运行到此处时进行回车换行 MOV DX OFFSET STRING1 MOV AH 0AH INT 21H HUICHE MOV DX OFFSET TISHI2 MOV AH 9 INT 21H HUICHE MOV DX OFFSET STRING2 MOV AH 0AH 8086 汇编语言源程序2011 年 湖北汽车工业学院湖北汽车工业学院 袁致旺袁致旺 作作 INT 21H HUICHE CLD MOV SI OFFSET STRING1 2 将第 1 个字符串第 1 个字符偏移地址传送给 SI 为串比较做准备 MOV BL STRING1 1 MOV BH 0 将第 1 个字符串的实际长度赋给 BX MOV DI OFFSET STRING2 2 将第 2 个字符串第 1 个字符偏移地址传送给 DI 为串比较做准 备 MOV CL STRING2 1 MOV CH 0 将第 2 个字符串的实际长度赋给 CX CMP BX CX 比较两个字符串的长度 JNE XXX0 若两个字符串的长度不相等 则转到 XXX0 处 显示 NO MACTH REPE CMPSB 进行串比较 将第 2 个字符串与第 1 个字符串按字符逐一进行比较 JE XXX1 若经过比较 两字符串完全相等 则跳到 XXX1 处 显示 MACTH 否则到 XXX0 处 显示 NO MACTH XXX0 MOV DX OFFSET MESSAGE2 显示 NO MACTH MOV AH 9 INT 21H JMP XXX2 显示 NO MACTH 后 跳转到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论