从键盘输入字符串并输出该字符串汇编程序.docVIP

从键盘输入字符串并输出该字符串汇编程序.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
从键盘输入字符串并输出该字符串汇编程序.doc

从键盘输入字符串并输出该字符串(汇编程序) DATAS SEGMENT STR?? DBplease input a string:$??? BUF?? DB 20 ????? DB ? ????? DB 20 DUP (?) CRLF? DB 0AH,0DH,$;此处输入数据段代码? DATAS ENDS STACKS SEGMENT STACK ?????? DB????? 200 DUP(?) ;此处输入堆栈段代码 STACKS ENDS CODES? SEGMENT ?????? ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS ?????? MOV DS,AX ?????? LEA DX,STR ?????? MOV AH,9 ?????? INT 21H ?????? MOV AH,10 ?????? LEA DX,BUF ?????? INT 21H ?????? LEA DX,CRLF ?????? MOV AH,9 ?????? INT 21H ?????? MOV CL,BUF+1 ?????? LEA SI,BUF+2 NEXT:? MOV DL,[SI] ?????? MOV AH,2 ?????? INT 21H ?????? INC SI ?????? DEC CL ?????? JNZ NEXT;此处输入代码段代码? ?????? MOV AH,4CH ?????? INT 21H CODES? ENDS ??? END START ??? 以上是从键盘输入字符串并输出该字符串的简单汇编程序,我们老师的要求是将程序中的2号调用改成9号调用,本人还在思考中,有能解决此问题的请回复,谢谢! ??? 如果我了解了该题答案,一定和大家共享。 ??? 续一: ??? 我们汇编老师的教学是先让我们看程序,写程序,再讲基本指令,基本结构…… ??? 学习汇编重要的是掌握CPU结构、程序结构以及熟练的掌握7种指令的运用。 ??? 以下是本人整理的对上面程序的部分解释: ??? BUF:键盘缓冲区BUF。 ??? DB:定义变量的类型为字节类型。 ????DB 20:表示缓冲区能容纳20个字符。 ??? DB 200 DUP(?)中的问号:不对分配的存储单元初始化。 ??? DS:存放当前数据段的段地址。 ??? CS:存放当前代码段的段地址。 ????SS:存放当前堆栈段的段地址。 ??? MOV:传送指令。 ??? AX:存放接收到的数据或发送数据。 ??? DX:使用间接寻址时存放端口地址。 ??? LEA:取偏移地址。 ??? CL:在移位指令和循环移动指令中,存放移位次数或者循环移位次数。 ??? SI:在存储器寻址时,作为变址寄存器。在串操作中,作为源串指针。 ??? DEC:decrement。 ??? INC:increment。 ????INT:interruput。 ? 续二: DATAS SEGMENT STR?? DBplease input a string:$?? BUF?? DB 20??????? ;这里的20为指定存放字符的个数(理论上的) ????? DB ???????? ;这的?可变,实际存放字符的个数(系统自动计算) ????? DB 20 DUP (?)??? ;这里的20是你在数据段开辟的空间??????????? CRLF? DB 0AH,0DH,$;回车换行;此处输入数据段代码 DATAS ENDS STACKS SEGMENT STACK???? ?????? DB????? 200 DUP(?) ;此处输入堆栈段代码 STACKS ENDS CODES? SEGMENT ?????? ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS ?????? MOV DS,AX ?????? LEA DX,STR??? ;9号中断前提,给参数DX赋值,指定输出字符串所在的有效地址 ?????? MOV AH,9 ?????? INT 21H ?????? MOV AH,10??? ;10号中断,接收输入字符串,此时DX为存放字符串的有效地址 ?????? LEA DX,BUF ?????? INT 21H ?????? LEA DX,CRLF ?????? MOV AH,9 ?????? INT 21H ?????? MOV CL,BUF+1??? ;获取字符串中字符的个数 ?????? LEA SI,BUF+2??? ;间接寻址 NEXT:? MOV DL,[SI] ?????? MOV AH,2??????? ;2号中断输出单个字符 ?????? IN

文档评论(0)

文档精品 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6203200221000001

1亿VIP精品文档

相关文档