鱼C论坛

 找回密码
 立即注册
查看: 6229|回复: 4

[争议讨论] 为什么我的用and al,11011111b不能转换大写呢?

[复制链接]
发表于 2011-12-6 15:19:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
;--------------将包含任意字符串中的小写字母 变成大写-------------------
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,[si]
                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 [si],al
                inc si
                jmp short letterc
        ok: ret
        
code ends
end main
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-6 18:53:40 | 显示全部楼层
注释都没有,看了半天才知道bh,122和bl,97原来是ASCII码。jcxz ok上面的inc si和jb s2这两个代码多余的.
还有你的jcxz ok上面用了jb和ja,所以程序进入无限循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-12-7 10:23:18 | 显示全部楼层

额,我再改改,我的机器是可以正常运行的,就是用al,11011111b的时候不好使, 谢谢给的见意,以后我写东西一写写注释!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-7 12:16:29 | 显示全部楼层
kiven 发表于 2011-12-7 10:23
额,我再改改,我的机器是可以正常运行的,就是用al,11011111b的时候不好使, 谢谢给的见意,以后我写东西 ...

你用debug试试你这代码能跳到ok:ret这里吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-12-7 15:19:09 | 显示全部楼层
api 发表于 2011-12-7 12:16
你用debug试试你这代码能跳到ok:ret这里吗?

额 ,这个还没试,我就看结果跟要求一样了,就没调试!  一会我看看,谢谢提醒哈~~~:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 12:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表