汇编,输入一个小写字母转成大写字母

javaadu
博客专家认证
2010-10-14 08:52:08
;Ex502
dseg segment
Msg1 db 'Input a lowercase letter:$'
Msg2 db 0dh,0ah,'Uppercase letter is:'
Result db ?
db '$'
dseg ends

cseg segment
assume cs:cseg,ds:dseg
Start:
mov ax,dseg
mov ds,ax

lea dx,Msg1
mov ah,09h
int 21h

mov ah,1
int 21h
cmp al,'a'
jb Exit
cmp al,'z'
ja Exit

sub al,20h
mov Result,al

lea dx,Msg2
mov ah,9
int 21h
Exit: mov ah,4ch
int 21h
cseg ends
end Start
我遇到的问题是:编译连接成功后,生成exe文件,执行exe文件时,当程序提示输入一个字符时,只要我随便按下键盘的任一个键,程序就会自动退出,反汇编显示在,第一个in 21h后程序就跳走了,但是很诡异,不知道为什么?
...全文
428 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
javaadu 2010-10-14
  • 打赏
  • 举报
回复
额,我调试运行成功了,但是直接运行EXE文件还是不行,再思考思考。
javaadu 2010-10-14
  • 打赏
  • 举报
回复
嗯,这个方法我也试过了,还是不行,而且应该不是电脑的问题,因为我换了台电脑也是一样。
quanzhenchii 2010-10-14
  • 打赏
  • 举报
回复
ni你把那个
cmp al,'a'
jb Exit
cmp al,'z'
ja Exit
换成ascii试试吧
alert


masmaster 2010-10-14
  • 打赏
  • 举报
回复
在debug里, 遇到int 21的时候, 不要按T, 要按P
javaadu 2010-10-14
  • 打赏
  • 举报
回复
额,我实际操作的时候就是已输入键盘字母,它就退出了,很诡异;
我用debug跟踪了,跟踪的时候执行到
lea dx,Msg1
mov ah,09h
int 21h
完了以后程序就乱了 ,也就是说下面的程序通通没有执行,但是我
不清楚这里怎么会跳转?
masmaster 2010-10-14
  • 打赏
  • 举报
回复
看你的程序没问题, 就是输入一个小写字母转换成大写之后返回dos,如果输入非小写字母也返回dos
javaadu 2010-10-14
  • 打赏
  • 举报
回复
lea dx,Msg1
mov ah,09h
int 21h
这三句话是为了在屏幕上输出“Input a lowercase letter:”
masmaster 2010-10-14
  • 打赏
  • 举报
回复
mov ah,4ch
int 21h
;返回操作系统

21,458

社区成员

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

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