汇编输出字符串显示问题学习笔记
来源:互联网 发布:同福3队吊打棒子知乎 编辑:程序博客网 时间:2024/05/21 17:24
首先是一开始的代码,目的是将从键盘输入的字符串进行输出
ASSUME CS:CODE,DS:DATADATA SEGMENTINPUT DB 50,0,50 DUP(0) ;INPUT只是一个标号, 50为最大允许输入字符数,0仅做占位,输入后将会填入实际输入字符数,后面再占上50个字节DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET INPUTMOV AH,10INT 21HMOV DI,OFFSET INPUT+1 ;取得实际输入字符数所在的偏移地址MOV BL,[DI] ;取得实际输入字符数,注意用BL,若用BX,则会取得一个字(两个字节)MOV AX,'$';不能直接将'$'写入内存,要借助寄存器MOV [BX+DI+1],AX ;加入结束符MOV AH,9 ;调用9号中断,将输出DS:DX为首地址,到'$'为止的字符串MOV DX,OFFSET INPUT+2 ;将偏移地址送入DXINT 21H ;中断显示输出MOV AX,4C00H ;4号中断返回INT 21HCODE ENDSEND START
看起来这段代码好像没有什么问题,
但实测效果如下
看起来好像并没有输出,再进入debug模式调试一番,看看原因
字符串明显已经读入内存
上图显示输出也没问题,那是什么原因的
不妨对上述代码稍作补充
ASSUME CS:CODE,DS:DATADATA SEGMENTINPUT DB 50,0,50 DUP(0)STRING DB "YOUR INPUT IS:$"DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET INPUTMOV AH,10INT 21HMOV DI,OFFSET INPUT+1MOV BL,[DI]MOV AX,'$'MOV [BX+DI+1],AXMOV DX,OFFSET STRINGMOV AH,9INT 21HMOV DX,OFFSET INPUT+2INT 21HMOV AX,4C00HINT 21HCODE ENDSEND START
运行结果如下:
显然是输出把输入的字符覆盖了
即输出字符之前应先进行回车
那只需在数据段里加上如下代码
NEWLINE DB 13,10,'$'
每次输出前先输出回车和换行即可
整理后代码如下
ASSUME CS:CODE,DS:DATADATA SEGMENTNEWLINE DB 13,10,'$'INPUT DB 50,0,50 DUP(0)DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET INPUTMOV AH,10INT 21HMOV DI,OFFSET INPUT+1MOV BL,[DI]MOV AX,'$'MOV [BX+DI+1],AXMOV DX,OFFSET NEWLINEMOV AH,9INT 21HMOV DX,OFFSET INPUT+2INT 21HMOV AX,4C00HINT 21HCODE ENDSEND START
运行效果如下
另外对于结束符的添加,此处做记录
MOV DI,OFFSET INPUT+1MOV BL,[DI]MOV AX,'$'MOV [BX+DI+1],AX
阅读全文
1 0
- 汇编输出字符串显示问题学习笔记
- 汇编源码学习3-输出字符串
- 【汇编】汇编显示字符串
- 【汇编学习笔记】1:输出ASCII字符
- 汇编输出显示函数
- 汇编_输出字符串
- 汇编学习笔记(三) -- 显示时间
- AT&T汇编学习笔记之字符串
- 汇编->字符串显示
- 汇编学习-输出正方形
- 汇编学习笔记(二) -- 输出256个ASCII字符
- 【汇编学习笔记】2:判断并输出各类字符数
- 【汇编学习笔记】5:多窗口协同输出
- 8086CPU汇编:显示字符串
- [汇编笔记]一个接受输入的字符串并反向输出的程序分析
- 汇编实现输入字符串逆向输出
- 字符串的读入与输出--汇编练习
- 汇编-将输入的字符串逆序输出
- 强大的图片加载框架Fresco的使用
- 51nod 1053 最大M子段和 V2
- 第二次信奥考试试题及题解(部分)
- SQL的四种连接-左外连接、右外连接、内连接、全连接
- C++:关键字const
- 汇编输出字符串显示问题学习笔记
- 百度POI数据抓取-BeautifulSoup
- 登陆示例(利用jsp,servlet)不连接数据库
- 高级软件工程实验报告七
- 定义一个圆形的类
- Informatica基础系列(四)——联结组件、路由组件
- 第2章 Opencv图像处理初阶(core组件)
- java 二分查找
- B