zoukankan      html  css  js  c++  java
  • 王爽 汇编 实验11

    1.描述: 编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母,描述如下.

      名称: letterc

      功能: 将以0结尾的字符串中的小写字母转变成大写字母

      参数: ds:si指向字符串首地址

       因为要转化的字符串中小写字母,而整个字符串中还有其他符号(空格,横杠),所以我们需要用ASCII来判断值是否在[97,122]之间,确定是小写字母,然后再转化成大写字母

     1 assume cs:code
     2 data segment
     3     db "Beginner's All-purpose Symoblic Instruction Code.",0
     4 data ends
     5 
     6 code segment
     7     start:
     8         mov ax,data
     9         mov ds,ax
    10         mov si,0
    11         call letterc    ;调用子程序
    12         
    13         mov ax,4c00h
    14         int 21h
    15     ; 子程序    
    16     letterc:
    17         push ax
    18         push cx        ;入栈各个寄存器的值,防止子程序破坏外部值
    19         s:
    20             mov cl,ds:[si]
    21             mov ch,0
    22             
    23             jcxz ok                ;如果cx==0,则结束循环.判断是否为字符串末尾.
    24             
    25             cmp    cl,97            ;判断字符是否在[97,122]之间,如果在说明
    26             jb    check_out        ;是小写字母,需要转换大写.
    27             cmp cl,122            ;jb,小于97跳转.ja 大于122跳转
    28             ja    check_out
    29             
    30             mov al,cl            ;将小写字母改成大写字母
    31             and al,11011111b
    32             mov cl,al
    33             mov ds:[si],cl
    34             
    35         check_out:        ;判断跳出位置
    36             inc si
    37         jmp short s        ;执行循环
    38         
    39         ok:    
    40             pop cx        ;恢复值
    41             pop ax
    42             ret
    43         
    44 code ends
    45 end start
  • 相关阅读:
    linux解压分卷压缩的zip文件
    centos关闭sudo的ldap认证
    IT词汇表
    IT博客汇
    os.waitpid()无法获取sys.exit()退出时的status code
    github下fork后如何同步源的新更新
    git 撤销commit
    g++编译问题:skipping incompatible /usr/lib//libboost_system.so when searching for -lboost_system
    g++动态库静态库混合链接
    thread
  • 原文地址:https://www.cnblogs.com/Triomphe/p/8673381.html
Copyright © 2011-2022 走看看