小写字母转为大写

本文介绍了将小写字母快速转换为大写的简单方法,适用于文本处理和编程中的字母大小写转换需求。
摘要由CSDN通过智能技术生成

  方法1如下:

SECTION .bss
    Buff resb 1

SECTION .data

SECTION .text

global _start
_start:
    nop ; 这个无操作指令让gdb非常高兴

Read: mov eax, 3    ; 指定sys_read系统调用
      mov ebx, 0    ; 指定文件描述符0:标准输入
      mov ecx, Buff ; 传递即将从中读取数据的缓冲区的地址
      mov edx, 1    ; 告诉sys_read从标准输入读入一个字符
      int 80h       ; 调用sys_read

    cmp eax, 0           ; 观察sys_read在EAX寄存器中的返回值
    je  Exit             ; 如果为0(意思是EOF)则跳转到Exit
                         ; 或者不为0,则测试它是否为一个小写字母
    cmp byte [Buff], 61h ; 将输入字符与小写字母“a”相比较
    jb  Write            ; 如果在ASCII表中比“a”小,则不是小写字母

    cmp byte [Buff], 7Ah ; 将输入字符与小写字母“z”相比较
    ja  Write            ; 如果在ASCII表中比“z”大,则不是小写字母
                         ; 此时我们已经拥有一个小写字母

    sub byte [Buff], 20h ; 从小写字母中减去20h,得出相应的大写字符
                         ; 然后将该字符写出到标准输出

Write: mov eax, 4    ; 指定sys_write系统调用
       mov ebx, 1    ; 指定文件描述符,1是标准输出
       mov ecx, Buff ; 传递要写出的字符的地址
       mov edx, 1    ; 传递要写出的字符的数量
       int 80h       ; 调用sys_write
       jmp Read      ; 然后跳转到开始处,获取另外一个字符

Exit: mov eax, 1 ; 指定Exit系统调用
      mov ebx, 0 ; 返回一个零代码
      int 80h    ; 进行系统调用来终止程序

  方法2如下:

SECTION .bss
    BUFFLEN equ 1024   ; 缓冲区长度
    Buff resb  BUFFLEN ; 缓冲区文本本身

SECTION .data

SECTION .text

global _start

_start:
    nop ; 这个无操作指令让gdb非常高兴

Read: mov eax, 3       ; 指定sys_read系统调用
      mov ebx, 0       ; 指定文件描述符,0是标准输入
      mov ecx, Buff    ; 传递即将从中读取数据的缓冲区的地址
      mov edx, BUFFLEN ; 传递一次循环中要读入的字节数
      int 80h          ; 调用sys_read来填充缓冲区

    mov esi, eax ; 复制sys_read的返回值并妥善保管
    cmp eax, 0   ; 如果eax为0,则sys_read到了标准输入的结尾
    je  Done     ; 如果(0相比较)相等则跳转

    mov ecx, esi  ; 将读入的字节数放入ecx寄存器中
    mov ebp, Buff ; 将缓冲区的地址放入ebp寄存器中
    dec ebp       ; 调整对偏移地址的计数值

; 详细检查缓冲区,并将小写字符转换为大写字符
Scan: cmp byte [ebp+ecx], 61h ; 将输入字符与小写字母“a”相比较
      jb  Next                ; 如果在ASCII表中比“a”小,则不是小写字母
      cmp byte [ebp+ecx], 7Ah ; 将输入字符与小写字母“z”相比较
      ja  Next                ; 如果在ASCII表中比“z”大,则不是小写字母
                              ; 此时我们已经拥有一个小写字母
      sub byte [ebp+ecx], 20h ; 从小写字母中减去20h,得出相应的大写字符
Next: dec ecx                 ; 递减字符计数器
      jnz Scan                ; 如果仍有字符,则继续循环

; 将满满一缓冲区处理过的文本写到标准输出:
Write: mov eax, 4    ; 指定sys_write系统调用
       mov ebx, 1    ; 指定文件描述符1:标准输出
       mov ecx, Buff ; 传递缓冲区的偏移地址
       mov edx, esi  ; 传递缓冲区数据的#个字符
       int 80h       ; 调用sys_write
       jmp Read      ; 回去继续循环,加载另一满满的缓冲区数据

Done: mov eax, 1 ; 指定Exit系统调用
      mov ebx, 0 ; 返回一个零代码
      int 80h    ; 进行系统调用来终止程序

使用方法:

./uppercaser < inputfile > outputfile
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目:用 JavaScript 编写的《小鸡快跑》游戏 小鸡快跑游戏是一个 javascript 项目。这是一款简单而有趣的游戏,你可能将它列入你的愿望清单中。这款游戏主要包含 javascript 和一些 CSS,以使其看起来很漂亮。这款游戏与著名的谷歌浏览器离线游戏恐龙跑者非常相似。 游戏玩法 游戏玩法简单有趣。你所要做的就是控制你的小鸡,跳过障碍物。这只鸡的名字叫“Pepper”。在这里,你必须让 Pepper 跳起来,并尽量避开即将到来的威胁。控制键是 W、空格键或向上箭头键。 当你继续游戏时,游戏速度通常会以更快的速度增加。试着按下控制按钮跳得更高,这样 Pepper 就可以跳得更高,以避开障碍物。当你最终撞到障碍物时,你终于可以查看你的得分了。此外,你还可以在社交媒体上分享你的得分。 总的来说,这款游戏玩起来相当有趣。此外,作为一名 程序员,它能让你以某种方式更轻松、更完美地提高你的程序编写能力。这款游戏纯粹是用 javascript 制作的。游戏开发过程中没有使用任何类型的框架。 您可以通过查看下面的图片滑块来查看我们的项目 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值