80x86汇编语言程序错误分析
来源:互联网 发布:存货管理论文的数据 编辑:程序博客网 时间:2024/05/21 19:16
题目:编程从键盘接收一个字符串,存入STRING开始的内存缓冲区,要求统计该字符空格的个数,并在屏幕上统计结果。
运行结果有错的源程序如下:
DATA SEGMENT ORG 1000 STRING DB 100 DB ? DB 100 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV DX,OFFSET STRING MOV AH,10 INT 21H MOV CX,100 MOV DL,0 LEA SI,STRINGNEXTCHAR:CMP CX,0h JZ FINISH MOV AL,[SI] CMP AL,' ' JZ NEXT DEC SI DEC CX JMP NEXTCHARNEXT:INC DL DEC CX JMP NEXTCHARFINISH: MOV AH,2 INT 21H MOV AH,4CH INT 21HCODE ENDS END START该程序在DOS下的运行情况,见下图。
从上面的截图可以看出,该程序,不能正确显示结果。
特别提醒读者注意一下,其实,程序是有显示的,是nioj...那一行的第一个字符。很显然,结果是不正确的。
该程序有下面的几个主要问题:
1)DL是计数值,在FINISH处,要输出这个值时,应该转换成对应数值字符的ASCII码;
2)修改SI的指令不对,为什么是DEC SI?而且,找到空格字符,跳转到NEXT处的语句块时,SI没有被修改。
3)输入字符串的10号功能调用后,要加一段代码,输出回车换行符;
4)要统计的字符的个数不应该是100,而应该是你实际输入的字符数,即保存在string+1单元。而这个单元是字节类型的,所以,计数寄存器选用CL就可以了。不能直接赋值给CX;
5)程序中,这3条指令是重复的,可以去掉一部分。读者可以自行分析一下,看看如何优化。
dec cl
incsi
JMP NEXTCHAR
;编程从键盘接收一个字符串,存入STRING开始的内存缓冲区,;要求统计该字符空格的个数,并在屏幕上统计结果。DATA SEGMENT;ORG 1000STRINGDB 100DB ?DB 100 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AXMOV DX,OFFSET STRINGMOV AH,10INT 21Hmov dl,0AHmovah,2int21hmovdl,0dHmovah,2int21h;MOV CX,100movcl,string+1MOV DL,0LEA SI,STRINGaddsi,2NEXTCHAR:;CMP CX,0hcmpcl,0JZ FINISHMOV AL,[SI]CMP AL,' 'JZ NEXTincsi;DEC CXdecclJMP NEXTCHARNEXT:INC DL ;DEC CXdeccl incsiJMP NEXTCHARFINISH:orDL,30HMOV AH,2INT 21H MOV AH,4CHINT 21HCODE ENDS END START
- 80x86汇编语言程序错误分析
- 一个80x86汇编语言程序的查错
- 80x86 汇编语言基础教程
- 数据键入与排序程序--80x86汇编语言
- 用80x86汇编语言,编写一个判断闰年的程序
- 80x86汇编语言程序:判断奇、偶数的个数
- 80x86汇编语言程序设计P50
- 80x86 汇编语言编程:求和
- 80x86汇编语言:福到了
- 80x86汇编语言:字符串移动
- 80x86汇编语言:分类统计
- 80x86 汇编语言:查找字符串
- 80x86 汇编语言编程:EXE2COM
- X86 汇编语言
- 80x86汇编语言程序在DOS下无法正常运行,而在DEBUG里可以
- 用80x86汇编语言,编写一个输出16进制数字的程序
- 80x86汇编语言程序:提示输入矩形的长和宽,并显示周长
- 《80x86汇编语言程序设计》学习笔记(1)
- 你所不知道的Oracle后台进程SMON功能
- 4.2 控件双击事件和触摸事件同时响应
- 【线段树】COGS 1427. zwei
- 4.3 android下事件的的传递机制
- jQuery实现的一个tab切换效果,(内部还有切换)。
- 80x86汇编语言程序错误分析
- 4.4 自由移动的Toast效果
- we
- rails + bootstrap 做项目使用的一些插件
- 4.5 腾讯手机卫士小火箭发射效果
- Red5 流处理架构设计解析
- 4.6 应用桌面快捷图标
- 在我的心中
- 计算机网络应用层之cookie