王晓博 2010.05.15-2 汇编 大小写转换

作者:2008级嵌入式  王晓博

#将下面汇编代码保存为 wxb2.s 文件
#功能:将输入的字符串中的小写字母转换为大写,然后输出

.section .bss
    .equ len,256
    .lcomm buffer,len     #.lcomm是在本地内存区域中声明固定长度的未初始化数据,
                          #这里初始化了256个字节的空间
    
.section .text
.globl _start

_start:
    movl $buffer, %ecx
    movl $256, %edx
    movl $0, %ebx
    mov $3,%eax        #3号调用
    int $0x80

    movl $buffer,%ecx
    xor %eax,%eax
    jmp ts
up:
    incl %eax
ts:
    cmpl $len,%eax
    jge done

    cmpb $97,(%ecx,%eax,1)       #如果数小于了小写字母a的ASCII就quit
    jl   jtbup

    cmpb $122,(%ecx,%eax,1)      #如果大于w了就也同样quit
    jg jtbup

    subl $32,(%ecx,%eax,1)       #符合的进行转化

jtbup:
     jmp up

done:
    movl $buffer, %ecx
    mov $256,%edx
    movl $1, %ebx
    mov $4,%eax            #4号调用
    int $0x80

    movl $0, %ebx   #quit
    mov $1,%eax
    int $0x80


[root@localhost ~]# as wxb2.s -o wxb2.o
[root@localhost ~]# ld wxb2.o -lc -dynamic-linker /lib/ld-linux.so.2  -o wxb2
[root@localhost ~]# ./wxb2
asdf
ASDF
[root@localhost ~]# ./wxb2
ADF     asdf  ASDdsf
ADF     ASDF  ASDDSF
[root@localhost ~]#



原文地址:https://www.cnblogs.com/ztguang/p/12647849.html