Ik ben nu een tijdje met assembly bezig, en nu zit ik met een probleempje. Het volgende stukje code werkt niet:
Het stukje code moet onder Linux draaien, met de intel-syntaxis. Als ik nasm en ld over de code laat gaan, en het programma uitvoer krijg ik geen output.
Het bestand /home/frans/test.txt bestaat wel, en er staat ook inhoud in (test).
Weet iemand wat ik verkeerd doe, en hoe ik het op zou kunnen lossen?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| section .data
filename: db '/home/frans/test.txt'
section .bss
buffer: resb 512 ; Reserveer 512 bytes
section .text
global _start
_start:
mov eax, 5 ; Open een bestand
mov ebx, filename ; ebx = filename
mov ecx, 512 ; max 512 tekens
int 0x80 ; kernel call
mov ebx, eax ; Zet de output (file descriptor) van
; het openen in ebx
mov eax, 3 ; sys call READ
; ebx is al bekend
mov ecx, buffer ; schrijf het naar de buffer
mov edx, 512 ; max 512 tekens
int 0x80 ; kernel call
mov eax, 4 ; system call write
mov ebx, 1 ; standaard output
mov ecx, buffer ; print de buffer
mov edx, 512 ; max 512 tekens
int 0x80 ; kernel call
mov eax, 1
mov ebx, 0
int 0x80 |
Het stukje code moet onder Linux draaien, met de intel-syntaxis. Als ik nasm en ld over de code laat gaan, en het programma uitvoer krijg ik geen output.
Het bestand /home/frans/test.txt bestaat wel, en er staat ook inhoud in (test).
Weet iemand wat ik verkeerd doe, en hoe ik het op zou kunnen lossen?
Knight who says 你