- 论坛徽章:
- 0
|
哪位大侠帮我看看下面的汇编程序,我运行时出错,系统环境是linux。
要实现的功能很简单,就是在打印一个字符串。
gnu.c- #include<stdio.h>
- char *able = "hello";
-
- int main(void)
- {
- a_add (able);
-
- return 0;
- }
复制代码 ass.s- .section .text
- .type a_add,@function
- .globl a_add
- a_add:
- pushl %ebp #现场保护,
- pushl %ecx
- movl %esp,%ebp #
-
- movl 12(%ebp),%ecx #取得C函数传过来的参数
- movl %ecx,%esi #放到si中
- call message
-
- addl $4,%esp #清理局部变量
- popl %ecx
- popl %ebp #恢复现场
- ret #返回
- 1:
- movw $0x0001, %bx
- movb $0xe, %ah
- int $0x10 #利用中断显示字符
- message:
- lodsl
- cmpb $0, %al
- jne 1b
- ret
复制代码 我编译、运行:
#gcc gnu.c ass.s
#./a.out
出现段错误,我对汇编不是很熟悉,大侠帮我找找错? |
|