Linux程序集分段故障打印使用循环

时间:2017-08-31 10:27:49

标签: linux assembly x86 segmentation-fault

我正在编写一个汇编程序,使用循环在0-9之间打印偶数。我遇到这个问题,运行代码时出现分段错误。我在网站上查看了其他答案,但无法找到满足我的问题的答案。

我怀疑函数nwLine可能是问题的根源。

;;this program prints even numbers from 0-8 using loop function
section .text
   global _start
   cr db 10

_start:                 ;tell linker entry point
   mov ecx, 5
   mov eax, '0'

evenLoop:
   mov [evnum], eax     ;add eax to evnum
   mov eax, 4
   mov ebx, 1
   push ecx

   mov ecx, evnum        
   mov edx, 1        
   int 80h
   call nwLine

   mov eax, [evnum]
   sub eax, '1'
   inc eax
   add eax, '2'
   pop ecx
   loop evenLoop

nwLine:                 ;function to move pointer to next line
    mov eax,4 ; System call number(sys_write)
    mov ebx,1 ; File descriptor 1 - standard output 
    mov ecx, cr 
    mov edx, 1 
    int 80h ; Call the kernel
    ret

   mov eax,1             ;system call number (sys_exit)
   int 80h              ;call kernel

section .bss
evnum resb 1

如果有人知道如何使用nwLine函数解决问题,请告诉我。

0 个答案:

没有答案