爱问知识人 爱问教育 医院库

汇编 请问这个代码错在哪里了??急急急

首页

汇编 请问这个代码错在哪里了??急急急

codesegmentmainpro ,1;从键盘输入一个字符的DOS调用INT21HCMPAL,‘a’;输入字符<‘a’吗?JBSTOPCMPAL,‘z’;输入字符>‘z’吗?JASTOPSUBAL,20H;转换为大写字母,用ANDAL,11011111B也可MOVDL,AL;显示一个字符的DOS调用MOVAH,2INT21HJMP 请问我这个哪里错了??为什么通过编译??请帮我写出正确的答案(代码),谢谢!!本人新手,还望多多指教!!!还有,请问汇编中中断调用(DOS)如movah,01hint21h请问从DOS下输入的数存在存在哪里??

提交回答
好评回答
  • 2012-05-29 09:20:33
    几个错误:
    (1)堆栈处理有问题:有push ax,但是在结束前没有:pop ax,对堆栈的操作应该成对,否则堆栈会出现异常,你的ret指令就找不到返回地址了
    (2)你使用的宏汇编,使用dos系统进行编译,需要在结束时调用dos的exit功能(具体功能号好久没有用过忘了,你去查查)
    (3)dos中断已经很久不用了,如果你确实想学习汇编,建议你直接学习windows的汇编;
    (4)mov ah,01h   int 21h,这时一个dos的从键盘读一个字符的调用,他将输入字符放在al寄存器中返回;因此它一次只能读一个字符,就像你的02h调用一次只能输出一个字符一样
    看来你是个电脑的爱好者,我建议你学习AT&T汇编,这是linux和unix的标准,对你将来的就业适应有很大的好处。

    好***

    2012-05-29 09:20:33

类似问题

换一换
  • 操作系统/系统故障 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):