汇编语言实现字符串逆序输出.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
. 北京邮电大学 微机原理与接口技术实验报告 学院:电子工程学院 2012211203班级: 2012210876学号: 姓名:邱启哲 . . 字符串的逆序存储实验 一、 题目要求 实现将STRING1起始存取单元中的字符串'ABCDEFGHIJKLM'逆序存放到STRING2的存储单元中,并在屏幕上显示结果。 二、 设计思路 在数据段定义时,将字符串'ABCDEFGHIJKLM'存入STRING1中,并定义一个空字符串数组STRING2用于存放字符。将指针[STRING1+BP]指向字符串数组STRING1的最后一个字符,指针[STRING2+BX]指向STRING2的起始字符对其进行赋值,每次赋值后STRING1的指针减一,STRING2的指针加一,循环赋值13次。赋值完成后用系统调用实现STRING2中内容的循环输出。 三、 程序代码 DATA SEGMENT STRING1 DB 'ABCDEFGHIJKLM' STRING2 DB 13DUP(0) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,13 MOV BX,0 MOV BP,12 LOOP1: ;此循环用于实现对STRING2的赋值功能 MOV AL,[STRING1+BP] ;通过AL实现STRING1对STIRNG2的赋值 MOV [STRING2+BX],AL INC BX DEC BP LOOP LOOP1 MOV CX,13 ;将CX值复员以便进入下一个循环 MOV BX,OFFSET STRING2 ;使BX指向STRING2的起始字符 LOOP2: MOV AH,2 ;调用2号系统调用,输出STRING2 MOV DL,[BX] ;用STRING2中的字符为DL赋值 INT 21H INC BX ;BX加一,向后移一位 LOOP LOOP2 MOV AH,4CH ;程序结束 INT 21H CODE ENDS END START . . 四、 程序运行截图 1、 汇编和连接过程 生成相应程序文件2、 、 程序运行结果3 由结果可见,实现了字符串的逆序存储。 实验总结五、 开始编译的时候迟迟但是在完成的过程中遇到了一些问题。这次上机实验的题目不难,的基址寻过不了,后来发现是因为不能通过CX等通用寄存器引用内存,只能通过BX,BP中一个正序的字符串,后来发现每次都是送入STRING2的变址寻址来访问内存。址和SI,DI的逆向逐个字BX]因为我是使用[STRING1+12-来实现对STRING1这个问题困扰了我很久,不能用减号和加数字,只能对寄存器进行符访问,后来发现这样做不能实现预期功能,在[]这个过程我学到很多,巩固了解决了这两个问题,程序终于通过并实现了逆序存储,操作。 汇编程序的编写和编译调试过程,熟悉了内存寻址的操作。 .

文档评论(0)

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

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

1亿VIP精品文档

相关文档