[汇编语言]未来汇编上,程序能运行,但运行出来结果就是不对,找不出原因,求助

zll713 2018-04-11 12:34:53
未来汇编软件上写了一个小程序,是分支结构的练习题。
该程序能够编译运行,但是运行出来结果就是不对,无论是在机房的电脑还是自己的电脑上都是这样
但是自己和周围的人都没找出逻辑上有什么问题,求指教

以下为详细问题描述

该程序大体作用如下:
在屏幕上显示Are you really want to exit?
输入 Yy 则显示Thank you for your using!
输入 Nn 则显示Let's continue!
输入其他字符则显示You press an error key!

程序如下:
SHOW MACRO X
MOV DX,OFFSET X
MOV AH,09H
INT 21H
ENDM
DATA SEGMENT
INFOR1 DB 0AH,0DH,"Are you really want to exit?$"
INFOR2 DB 0AH,0DH,"Thank you for your using!$"
INFOR3 DB 0AH,0DH,"Let's continue!$"
INFOR4 DB 0AH,0DH,"You press an error key!$"
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DX,AX

SHOW INFOR1
MOV AH,01H
INT 21H

CMP AL,'N'
JE NO
CMP AL,'Y'
JE YES
CMP AL,'n'
JE NO
CMP AL,'y'
JE YES
SHOW INFOR4
JMP PEND

YES:
SHOW INFOR2
JMP PEND
NO:
SHOW INFOR3
JMP PEND
PEND:
MOV AH,4CH
INT 21H
CODE ENDS
END START


点运行之后是这样的:




然后输入y之后,是这样的:



发现,并没有显示y对应的结果Thank you for your using!
而是又重复了一遍Are you really want to exit?

而且无论输入什么字符都是这样

不明白是什么问题呢

此外还有一个小问题
就是Are you really want to exit?前面会有一堆乱码出现,不明白它们怎么会出现呢
...全文
1248 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-04-11
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
赵4老师 2018-04-11
  • 打赏
  • 举报
回复
关于自己是否适合编程的很简单的测试: 在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案: A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感 A不适合编程(理由:打字准确度偏低、粗心大意) B初级程序员(理由:打字准确度很高、认真细致、自信、理解全角半角概念) C高级程序员(理由:在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证) D软件项目经理(理由:能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业!) 如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”
zll713 2018-04-11
  • 打赏
  • 举报
回复
引用 3 楼 zara 的回复:
DS 设置错了啊,你设置到 DX 了,属源程序录入时的笔误。 其实,由于输出乱码,这个问题一下子就该看出来的,尤其是老师,不过也可能是他故意让你自己查找解决的。
啊,原来是这样。谢谢你!居然是这么弱智的问题~果然还是太肤浅了。 嘻嘻再次感谢
zara 2018-04-11
  • 打赏
  • 举报
回复
DS 设置错了啊,你设置到 DX 了,属源程序录入时的笔误。
其实,由于输出乱码,这个问题一下子就该看出来的,尤其是老师,不过也可能是他故意让你自己查找解决的。
zll713 2018-04-11
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
谢谢!但是我在进行单步调试也没有找出原因,在单步调试的时候,一直到调用DOS功能时,只有调用01号功能输入一个字符时,出现了屏幕,其他时候如调用02和09号时,它根本不出现,我也不知道到底是什么样的。 在机房也已经向老师请教过,但老师表示他也没有看出来是什么问题。所以才冒昧来请教大家。 另外,本人不是计算机相关专业的学生,此前对与计算机相关的学习仅有C语言入门,现在刚刚开始学微机原理,所以如果有很多地方描述不准确,烦请见谅

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧