鱼C论坛

 找回密码
 立即注册
查看: 1859|回复: 0

[技术交流] 实验11详细解析,高效代码!

[复制链接]
发表于 2012-6-14 13:08:39 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 hackiy 于 2012-6-14 13:50 编辑
assume cs:codesg

datasg segment
        db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends

codesg segment
start:        mov ax,datasg
                mov ds,ax
                mov si,0
                call letterc

over:        mov ax,4c00h
                int 21h

;说明:将以0结尾的字符串中的小写字母转变成大写字母
;参数:ds:si指向字符串的首地址
letterc:;注意,需要转换的是字符串a-z,而不是其他字符
                push si                        ;子程序入栈
                
        s:        cmp byte ptr [si],0                ;模拟(si)-0
                je ok                        ;结果等于0则结束
                
                cmp byte ptr [si],61h        ;小写a的assci码16进制为61h
                jb no                        ;低于61h则跳到no
                
                cmp byte ptr [si],7ah        ;小写z的assci码16进制为7ah
                ja no                        ;高于7ah则跳到no
                
                and byte ptr [si],0dfh        ;转变为大写(11011111b)
                
        no:         inc si                        ;处理下一个字符
                jmp short s                ;回到标号s处

         ok:         pop si                        ;子程序出栈
                  ret                        ;子程序返回                
codesg ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-20 07:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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