Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6542017
  • 博文数量: 1159
  • 博客积分: 12444
  • 博客等级: 上将
  • 技术积分: 12570
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-13 21:34
文章分类

全部博文(1159)

文章存档

2016年(126)

2015年(350)

2014年(56)

2013年(91)

2012年(182)

2011年(193)

2010年(138)

2009年(23)

分类: LINUX

2010-05-15 16:34:02

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


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