大小写转换问题
;本题是说把data段中的小写转换为大写,遇到0则停止,但不知哪儿错了assume cs:code
data segment
db 'begin to go to WUHAn',0
data ends
code segment
mov ax,data
mov ds,ax
mov si,0
call s
mov ax,4c00h ;说明:这个程序在masm5.0中能够编译成功,但是执行时一直在加粗的这
int 21h 一段走,就是不能够执行and语句。求解为什么。
s:moval,
cmp al,0
je t
cmp al,'a'
jb s
cmp al,'z'
ja s
and al,11011111b
mov ,al
inc si
jmp s
t:ret
code ends
end
本帖最后由 メ㊣逆ご帅☆ 于 2012-8-17 13:46 编辑
逻辑错误把,因为你检测是大写字母后直接跳转到s:moval,
在这之前没有inc自增,也就是一直在取同一个字母
我先回答的,希望可以采纳我,不为鱼币只为采纳率
assume cs:code
data segment
db 'begin to go to WUHAn',0
data ends
code segment
start:mov ax,data
mov ds,ax
mov si,0
call s
mov ax,4c00h
int 21h
s:moval,
cmp al,0
je t
cmp al,'a'
jb k
cmp al,'z'
ja k
and al,11011111b
mov ,al
k:inc si
jmp s
t:ret
code ends
end start
嗯,你的回答确实是对的,再说你是第一个回答的,满足你的要求,以后还找你
页:
[1]