Chinaunix首页 | 论坛 | 博客
  • 博客访问: 57126
  • 博文数量: 15
  • 博客积分: 50
  • 博客等级: 民兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-01 09:50
文章分类
文章存档

2014年(1)

2013年(7)

2012年(8)

分类: LINUX

2013-05-07 10:11:37

作者: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 ~]#


阅读(1542) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~