问题描述
我正在用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 (将#修改为@)