!!!# 发表于 2012-8-17 11:14:14

大小写转换问题

;本题是说把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 11:14:15

本帖最后由 メ㊣逆ご帅☆ 于 2012-8-17 13:46 编辑

逻辑错误把,因为你检测是大写字母后直接跳转到s:moval,
在这之前没有inc自增,也就是一直在取同一个字母
我先回答的,希望可以采纳我,不为鱼币只为采纳率

GeV20 发表于 2012-8-17 13:42:22

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

!!!# 发表于 2012-8-17 14:05:02

嗯,你的回答确实是对的,再说你是第一个回答的,满足你的要求,以后还找你
页: [1]
查看完整版本: 大小写转换问题