kiven 发表于 2011-12-6 15:19:30

为什么我的用and al,11011111b不能转换大写呢?

;--------------将包含任意字符串中的小写字母 变成大写-------------------
assume cs:code

data segment
      db 'Beginners Alll_purpose Symbolic Instruction Code .',0
data ends

code segment
main:      mov ax,data
                mov ds,ax
                mov si,0
                mov bh,122
                mov bl,97
                call letterc
                mov ax,4c00h
                int 21h
letterc:mov ax,0
                mov al,
                mov cl,al   ;用来看是不是到头了
                mov ch,0
                cmp al,bl
                jb s
                ja s1
                inc si
                jcxz ok
               
      s:inc si
                jmp short letterc
      s1: cmp al,bh
                ja s
                jb s2
        s2: sub al,20h      ;为什么用and al,11011111b不好使呢?
                mov ,al
                inc si
                jmp short letterc
      ok: ret
      
code ends
end main

api 发表于 2011-12-6 18:53:40

注释都没有,看了半天才知道bh,122和bl,97原来是ASCII码。jcxz ok上面的inc si和jb s2这两个代码多余的.
还有你的jcxz ok上面用了jb和ja,所以程序进入无限循环

kiven 发表于 2011-12-7 10:23:18

api 发表于 2011-12-6 18:53 static/image/common/back.gif
注释都没有,看了半天才知道bh,122和bl,97原来是ASCII码。jcxz ok上面的inc si和jb s2这两个代码多余的.
还 ...

额,我再改改,我的机器是可以正常运行的,就是用al,11011111b的时候不好使, 谢谢给的见意,以后我写东西一写写注释!!!

api 发表于 2011-12-7 12:16:29

kiven 发表于 2011-12-7 10:23 static/image/common/back.gif
额,我再改改,我的机器是可以正常运行的,就是用al,11011111b的时候不好使, 谢谢给的见意,以后我写东西 ...

你用debug试试你这代码能跳到ok:ret这里吗?

kiven 发表于 2011-12-7 15:19:09

api 发表于 2011-12-7 12:16 static/image/common/back.gif
你用debug试试你这代码能跳到ok:ret这里吗?

额 ,这个还没试,我就看结果跟要求一样了,就没调试!一会我看看,谢谢提醒哈~~~:lol
页: [1]
查看完整版本: 为什么我的用and al,11011111b不能转换大写呢?