在 AT&T IA-32 Linux 汇编器 (gas) 上分割字符串
.section .data
astring: .asciz "11010101"
format: .asciz "%d\n"
.section .text
.globl _start
_start:
xorl %ecx, %ecx
movb astring(%ecx,1), %al
movzbl %al, %eax
pushl %eax
pushl $format
call printf
addl $8, %esp
movl $1, %eax
movl $0, %ebx
int $0x80
假设我想破坏 .asciz 字符串 1101011 并得到它的第一个。 我该怎么办? 上面的代码不起作用,它打印 49 之类的。
.section .data
astring: .asciz "11010101"
format: .asciz "%d\n"
.section .text
.globl _start
_start:
xorl %ecx, %ecx
movb astring(%ecx,1), %al
movzbl %al, %eax
pushl %eax
pushl $format
call printf
addl $8, %esp
movl $1, %eax
movl $0, %ebx
int $0x80
Suppose I wanna break the .asciz string 1101011 and get it's first one. How do I go about it? The code above ain't working, it prints 49 or something.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将
printf
从% 更改为转换说明符d
到%c
以打印字符而不是其 ascii 值。Change the conversion specifier for
printf
from%d
to%c
to print the character instead of its ascii value.4年后。
我正在学习使用 GNU 汇编器进行 asm 编程。
我这样做是为了练习:
4 years later.
I'm learning to programming in asm with GNU Assembler.
I did it as a practice: