私は非常に単純なアセンブリプログラムを実行しようとしていますが、私は何でもsegfaultsを取得するようです。NASM:SegFault on MOV ECX
はここに私のコードです
section .data
buffer times 50 db 97
pointer db 0
section .text
global _start
_start:
mov ECX , pointer
mov EDX , [buffer + ECX]
mov EAX , 4
mov EBX , 1
mov ECX , EDX
mov EDX , 1
int 0x80
それは最初のMOVにセグメンテーションフォルトが発生するが、それが動作するはずですように私には明らかと思われる(「」Linuxマシン上で印刷する必要があります)。
私はほとんど何もそれを減らし、それはまだsegfault。
section .data
msg db "hello"
section .text
global _start
_start:
mov EAX,1
私は正常にこれを実行しました:
section .text
global _start
_start:
mov ax, 0b
dec ax
sub ax, 11111111b
mov bx, 97
add ax, bx
mov [INVENTORY], ax ; put a in first inventory pos
mov eax, 4
mov ebx, 1
mov ecx, INVENTORY
mov edx, 1
int 0x80
mov ax, [INVENTORY]
add ax, 1
mov [INVENTORY + 1], ax ; put b in second inventory pos
mov [VAR], ax
mov eax, 4
mov ebx, 1
mov ecx, VAR
mov edx, 1
int 0x80
mov eax, 4
mov ebx, 1
mov ecx, '\n'
mov edx, 1
int 0x80
mov eax,1
int 0x80
_newline:
section .data
VAR DW 0
INVENTORY TIMES 8 DW 0
は、それはそれは私が改行やタブに使用するシンボルに関係していることは可能ですか?私は、javaからアセンブリを生成し、それがあまりにも悪くはありませんので、私は、タブと\ nは改行のための(とスペースのための\ tを使用
私はNASMを使用していると私はここでそれを実行しているよ:。 https://www.tutorialspoint.com/compile_assembly_online.php
はありがとう
単純な例では、プログラムを終了するには_EXIT_システムコールを呼び出す必要があります。 –
私はEXITシステムコールを無用に追加しました –
コンパイルして実行するために私のポストにリンクを使っていますが、正確なOSは何かわかりませんが、それはLinuxのボックスです。 –