网站大量收购独家精品文档,联系QQ:2885784924

试验6:宏结构.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
试验6:宏结构.doc

湖 北 工 程 学 院 课程设计报告 专 业 : 网络工程 课程名称 : 汇编课程设计 班 级 : 1217142 姓 名 : 雷震 学 号 : 012301714208 设计题目 : 宏程序 设计时间 : 2014-6-5 实验目的 加深对宏程序的理解;? 掌握宏的定义和使用;? 掌握创建宏组和条件宏的方法; 掌握宏的应用; 5.学会利用宏程序的特点减少程序的冗余度; 6. 加深对编程的独立探索、创新能力。 二、实验内容: 利用宏程序实现将输入的字符串逆序输出,要求尽可能提高时间复杂度。 本程序没有开辟一个新的空间来存储逆序后的字符串,而是直接在原存储区上对输入字符串进行改变。不仅如此,本程序每次循环逐一将首尾字符进行交换,这样将时间复杂度由原来的O(N)提高到O(n/2)。 程序中,INFO1保存输入提示字符串,INFO2保存输出提示字符串。BUF指示缓冲区的大小,LEN指示输入字符串的长度,STR指示输入的字符串。 程序开始,利用定义在MACRO.LIB中的定义的宏进行宏调用,RETURN输出回车换行符,PRINT输出字符变量INFO1,INPUT从键盘输入字符带缓冲区。 将输入字符串串首的偏移地址赋给SI,将AH,CH初始化为0,将输入字符串长度LEN赋给AL,然后将字符串长度加到SI中,此时SI指向输入字符串尾的后一个字节。将BX赋值为2,将字符串长度除以2,将除得的商作为循环次数赋值给CX。接着,将SI里面的数据减1,将输入字符串串首的偏移地址赋给DI。此时,SI指向输入字符串的最后一个字符,DI指向输入字符串的第一个字符。 循环开始,将偏移地址SI中的字符赋给AL,交换AL和偏移地址DI中的字符,最后将AL中的字符赋给偏移地址为SI的内存单元,完成首尾字符的交换。更改循环条件,将DI后移一个字符,SI前移一个字符,循环条件CX减1。 循环完成后,利用宏程序调用,RETURN输出回车换行符,PRINT输出字符串变量INFO2,PRINT输出变换后的字符串STR。 程序返回,执行完毕。 三、实验步骤 1.程序设计流程图 Y N 源代码: 宏定义代码: INPUT MACRO A LEA DX,A MOV AH,10 ;10号系统功能调用 INT 21H ENDM PRINT MACRO A LEA DX,A MOV AH,9 ;9号系统功能调用 INT 21H ENDM RETURN MACRO MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH ;回车换行 INT 21H ENDM STACK0 MACRO A STACK SEGMENT STACK ;栈的定义 DB A STACK ENDS ENDM 主程序代码: INCLUDE MACRO.LIB STACK0 200 DUP (0) ;利用宏,定义堆栈段 DATA SEGMENT INF01 DB Please input primary string:$ ;提示输入变量字符串INFO1 INF02 DB Output he transfered string:$ ;提示输出变量字符串INFO2 BUF DB 81 ;BUF指示缓冲区的大小 LEN DB ? ;LEN变量指示输入字符串的长度 STR DB 80 DUP($) ;STR变量表示输入字符串,初始化为美元符号 DATA ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX RETURN ;利用宏调用,输出回车换行符 PRINT INF01 ;利用宏调用,输出字符变量INFO1 中的字符串 INPUT BUF ;利用宏调用,从键盘输入字符到缓冲区; LEA SI,STR ;将输入字符串的偏移地址赋给SI MOV CH,0 ;将CX和AX的高字节单元初始化为0 MOV AH,0 MOV AL,LEN ;将输入字符串的长度赋值给AL ADD SI,AX ;SI指向字符串末尾后的一个字符 M

文档评论(0)

三哥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档