如何解决违反NASM汇编代码的段
我正在用Linux x86_64学习Assembly,并用nasm和ld编译我的代码。这次,我想秘密地打印一组数字,将其设置为名为“ Llista”的数组。使用./printLlista编译,链接并执行后,终端将向我显示以下内容:
The list is: 1�Violació de segment (s'ha bolcat la memòria)
Mi的意图是在C中做这样的事情:
程序printLlista.asm是这样的:
; printLlista.asm
; Print a list of values from an array.
; Compiled : nasm -f elf printLlista.asm
; Linked : ld -m elf_i386 printLlista.o -o printLlista
; Execute : ./printLlista
section .data
Llista db 1,2,-3,4
len_Llista equ $ - Llista
res_Llista db 0
Missatge db "The list is: ",0h
len_Missatge equ $ - Missatge
section .text
global _start
_start:
print_Missatge:
mov edx,len_Missatge
mov ecx,Missatge
mov ebx,1
mov eax,4
int 80h
get_first_item:
mov esi,0
mov ebx,0
mov ecx,Llista
search_Llista:
mov ebx,[ecx]
add ebx,'0'
mov [res_Llista],ebx
print_items:
mov edx,len_Llista
mov ecx,res_Llista
mov ebx,4
int 80h
test_if_loop:
mov ecx,1
inc esi
cmp esi,len_Llista
jl search_Llista
exit:
mov ebx,0
mov eax,1
int 80h
我不知道问题出在哪里,希望您能。预先感谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。