[057][汇编语言]实验11 编写子程序

实验11 编写子程序

  • 题目要求:将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母

实际运行

[057][汇编语言]实验11 编写子程序_第1张图片
全部的小写字母转换成大写字母.png

完整源码

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

codesg segment
    begin:  mov ax,datasg
            mov ds,ax
            mov si,0
            call letterc
            
            mov ax,4c00h
            int 21H
    letterc:    push cx
                push si
                push ds
                
                s:  mov cl,ds:[si]
                    mov ch,0
                    jcxz ok
                    cmp cl,61H
                    jb s0
                    cmp cl,7AH
                    ja s0
                    add cl,11011111B
                    mov ds:[si],cl
                    
                s0: inc si
                    loop s
            
        ok:     pop ds
                pop si
                pop cx
                ret

    codesg ends
    end begin

代码说明

  • 字符串中不仅有字母还有符号、空格等等, 所以不能对全部的数据都进行and运算
  • 必须用ASCII码中小写字母的范围,闭区间的 [61H,7AH] 来判断小写字母
  • 闭区间 的子程序结构
                s:  ... 控制循环...
                    cmp cl,61H
                    jb s0
                    cmp cl,7AH
                    ja s0
                    ... 小写字母的操作...
                    
                s0: inc si
                    loop s

代码参考

  • 大小写转换 https://www.jianshu.com/p/7c55d6debcb0
  • 子程序条件指令结构 闭区间 检测点11.3 第(1)问
    https://www.jianshu.com/p/d0dbfe6a98e2

你可能感兴趣的:([057][汇编语言]实验11 编写子程序)