收藏 分销(赏)

汇编源程序——字符串输入输出PPT学习课件.ppt

上传人:天**** 文档编号:9428460 上传时间:2025-03-26 格式:PPT 页数:15 大小:380KB 下载积分:8 金币
下载 相关 举报
汇编源程序——字符串输入输出PPT学习课件.ppt_第1页
第1页 / 共15页
汇编源程序——字符串输入输出PPT学习课件.ppt_第2页
第2页 / 共15页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,5.3,字符串输入输出方法,5.3.1,字符串输出,【,入口参数,】AH,9,,是,DOS,的子功能号,DS:DX,待输出字符串的首字符的逻辑地址,【,说明,】,(,1,)被输出的字符串的长度不限,但必须连续存放在内存的某个地方,且以,ASCII,值为,24H,的字符,$,结束,中间可以含有回车符、换行符、响铃符等特殊功能符号,存放字符串的起始逻辑地址必须放在指定的寄存器,DS,和,DX,中。,1,(,2,),$,符本身不输出到屏幕。,(,3,)调用结果是把字符串中的各个字符从光标当前所在位置起,依次显示在屏幕上,直至遇到,$,为止,光标停在最后一个输出符号的后面。,(,4,)如果程序中需要输出,$,,只能用,2,号子功能实现。,(,5,),9,号子功能调用将影响,AL,的内容,不改变其余寄存器及标志寄存器的值。,2,【,例,5.5】,分析下面的程序,写出程序执行后的结果。,data SEGMENT,buf1 DB Hello,13,10,this is an example.$,13,10,buf2 DB -END-$,data ENDS,code SEGMENT,ASSUME CS:code,DS:data,main:MOV AX,data,MOV DS,AX,3,LEA DX,buf1,MOV AH,9,INT 21H,MOV DX,OFFSET buf2,INT 21H,MOV AX,4C00H,INT 21H,code ENDS,END main,【,解,】,执行结果如下:,Hello,this is an example.-END-,4,分析一下例,5.5,的程序:,(,1,)程序包括两个段,,data,段中只有变量定义,是数据段,,code,段中是指令序列,是代码段。,(,2,),ASSUME,伪指令只用来说明,code,段中定义的各标识符(实际只有标号,main,)以,CS,为缺省段寄存器,,data,段中的各标识符,(,两个变量,),以,DS,为缺省段寄存器。,ASSUME,伪指令本身并没有对,CS,和,DS,赋值的功能,所以代码段的最前面两条指令就是用来对,DS,赋值,因为后面的字符串输出要求把输出串的段地址放到,DS,中。,5,(,3,)程序中没有类似的指令对,CS,赋值。这是因为操作系统,DOS,把该程序调进内存后,会把机器的控制权交给该程序,这是通过修改,CS,和,IP,的值的方法实现的。也就是说,,DOS,在移交控制权时就已经把,CS,和,IP,都放好了正确的值,而不需要用户程序进行处理。,(,4,)程序中的第,1,次,INT 21H,调用前,用,LEA,指令把变量,buf1,的偏移地址取到寄存器,DX,中,用,MOV,指令把,AH,赋值为子功能号,9,,而在此之前,DS,已被赋值为,buf1,所在的,data,段的段地址。,(,5,)变量,buf1,中的第,1,个字符是字母,H,,,9,号子功能从该字母开始,逐个显示后续字符,遇到,13,和,10,分别进行回车换行处理,直到遇到,$,符为止,,$,本身并不出现在屏幕上,此时的输出情况是:,6,Hello,this is an example.,并且光标停在了第,2,行输出的最后一个符号,.,的后面。虽然,buf1,的定义中在,$,后面还有内容,这些内容都不会被输出。,(,6,)由于,9,号子功能调用的结果并不改变除了,AL,以外的其它寄存器的值,故调用完后,AH,中仍然是,9,,所以第,2,次调用,INT 21H,时只对,DX,重新赋了值,取的是,buf2,的偏移地址,因而第,2,次,INT 21H,调用仍然是,9,号,从光标所在位置输出,buf2,的内容直到,$,,于是得到前面的输出结果。,7,【,例,5.6】,对例,5.5,的程序稍做修改成为下面的情况,写出程序执行后的结果。,data SEGMENT,buf1 DB Hello,13,10,this is an example.,13,10,buf2 DB -END-$,data ENDS,code SEGMENT,ASSUME CS:code,DS:data,main:MOV AX,data,MOV DS,AX,LEA DX,buf1,MOV AH,9,8,INT 21H,MOV AX,4C00H,INT 21H,code ENDS,END main,【,解,】,执行结果如下:,Hello,this is an example.,-END-,9,5.3.2,字符串输入,【,入口参数,】AH,0AH,,是,DOS,的子功能号,10,DS:DX,输入缓冲区的起始逻辑地址,输入缓冲区有特定的要求,其内存图如图,5.3,所示。,len,1,len,2,DS:DX,允许输入的最大字符数,实际输入的字符数,输入串的各个字符,图,5.3,用,DOS,的,10,号子功能进行字符串输入的缓冲区要求,10,【,出口参数,】,由,DOS,的,10,号子功能在输入缓冲区中填写实际输入情况,即根据键盘输入情况,对图,5.3,中的“实际输入字符数”和“输入串的各个字符”部分进行填写。,【,说明,】,(,1,)输入缓冲区是一段连续的内存区,首地址必须在调用,10,号子功能前放到指定的寄存器,DS,和,DX,中。,(,2,),10,号子功能在调用时等待操作员从键盘上按键,直到按下回车键为止,按键情况会显示在屏幕上,最后按下的回车键会导致回车操作。如果在按回车键之前发现输入有错误,可以使用退格键或向左的箭头进行修改。,11,(,3,)输入缓冲区的最前面一个字节(图,5.3,中,len,1,处)的值由用户程序填写,用以指出允许输入的最大字符数。该值是字节型无符号数,有效范围是,0255,,最后按的回车键也计算在内。当已输入,len,1,1,个字符后就只能按回车键了,按其它键都会被认为是不正确的输入而不被机器认可,并且喇叭还会发出“嘀”的一声响以示警告。如果,len,1,=1,,表示只能按,1,个键,这个键只能是回车键,按其它键都会有“嘀”的一声警告;如果,len,1,=0,,表示一个键都不能按,包括回车键在内的任何按键都会被拒绝并且发出“嘀”的警告声,但机器又在等待输入,这一矛盾将导致无限期等待,即死机。,12,(,4,)输入缓冲区的次字节(图,5.3,中,len,2,处)是由,DOS,的,10,号子功能填写的。在调用前用户程序可把它设为任意值,用户程序填写的这个值对,10,号子功能调用没有任何影响。,(,5,)子功能调用完成后,输入的字符串以,ASCII,的形式从输入缓冲区的第,3,个字节起连续存放,最后一个字符是回车键(,0DH,)。第,2,个字节中放的是输入字符串的有效长度(最后的回车键不计算在内)。用户程序可以从缓冲区的第,2,字节起取得输入字符串的串长及各个字符。,13,【,例,5.7】,设有数据段定义如下:,d SEGMENT,buf DB 10,11 DUP(0),d ENDS,画出数据段的内存图,然后执行下面的程序段,设,buf,的缺省段寄存器为,DS,。,MOV AX,d,MOV DS,AX,MOV AH,10,LEA DX,buf,INT 21H,假设执行时键盘上的输入情况是在按,A1B2,后按回车键,画出程序段执行后的数据段的内存图。,14,【,解,】,见图,5.4(a),和,(b),。,0A,00,00,00,00,00,00,00,0000,0001,0002,0003,0004,0005,0006,000B,0A,04,41,31,42,32,0D,00,00,0000,0001,0002,0003,0004,0005,0006,0007,000B,(a),程序段执行前的情况,(b),程序段执行后的情况,图,5.4,例,5.7,的程序段执行前后的数据段的内存图,15,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服