• Opret dig
  • Glemt adgangskode

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log ind
Hjem
LinuxIN.dk

Snak med

Opret dig!

Af marson | 01.12.2010 08:03

[LØST] Assembly: Print to console

Programmering
Hej allesammen.
Jeg har skrevet et assembly program som kan udregne fibonacci tal. Men nu vil jeg gerne have at programmet udskriver tallene til terminalen.

Nogen der ved hvordan man gør, eller kender nogle gode tutorials? Bruger Gnu assembleren og skriver til x86 arkitekturen.
  • Log ind eller opret dig for at tilføje kommentarer

Kommentarer8

# 1

15 år 3 måneder siden

Permalink

Indsendt af Tom_the_ den 1. december 2010 kl. 09:25

Permalink

Hvad med at bruge inline

Hvad med at bruge inline code i c?
  • Log ind eller opret dig for at tilføje kommentarer

# 2

15 år 3 måneder siden

Permalink

Indsendt af jstampe den 1. december 2010 kl. 11:37

Permalink

Systemkald

Her er et eksempel på, hvordan man laver et systemkald til printf:
http://arstechnica.com/phpbb/viewtopic.php?f=20&t=44255
  • Log ind eller opret dig for at tilføje kommentarer

# 3

15 år 3 måneder siden

Permalink

Indsendt af marson den 1. december 2010 kl. 12:27

Permalink

#2
Takker. Kikker lige på

#2
Takker. Kikker lige på det. Vender tilbage hvis jeg ikke kan få det til at virke.
  • Log ind eller opret dig for at tilføje kommentarer

# 4

15 år 3 måneder siden

Permalink

Indsendt af marson den 2. december 2010 kl. 22:28

Permalink

Er nu kommet frem til at

Er nu kommet frem til at bruge inline c code. Jeg laver et kald af printf. Det eneste problem er når jeg linker min object fil, får jeg en undefined reference to `printf'

Hvordan for jeg linkeren (ld) til at kende min c kald?
  • Log ind eller opret dig for at tilføje kommentarer

# 5

15 år 3 måneder siden

Permalink

Indsendt af Tom_the_ den 2. december 2010 kl. 23:56

Permalink

Mangler du ikke at sætte en

Mangler du ikke at sætte en header fil
  • Log ind eller opret dig for at tilføje kommentarer

# 6

15 år 3 måneder siden

Permalink

Indsendt af marson den 3. december 2010 kl. 08:33

Permalink

#5
tror jeg ikke, men min

#5
tror jeg ikke, men min kode ser sådan ud:

.section .data
string: .ascii "Testing\n\0"

.section .text

.globl main

main:
pushl $string
call printf
addl $4,%esp # remove parameters

movl $0, %ebx # exit code 0
movl $1 , %eax # sys_exit
int $0x80


når jeg linker:

marson@isak:~/test$ as main.s -o main.o
marson@isak:~/test$ ld main.o -o main
ld: warning: cannot find entry symbol _start; defaulting to 0000000008048074
main.o: In function `main':
(.text+0x6): undefined reference to `printf'

  • Log ind eller opret dig for at tilføje kommentarer

# 7

15 år 3 måneder siden

Permalink

Indsendt af Tom_the_ den 3. december 2010 kl. 09:07

Permalink

Min tanke med inline code i

Min tanke med inline code i c var som det her:

#include
int main(void)
{
int foo = 10, bar = 15;
asm ("addl %%ebx,%%eax"
:"=a"(foo)
:"a"(foo), "b"(bar)
);
printf("foo+bar=%d\n", foo);
return 0;
}

gem fil som c_asm.c
gcc c_asm.c -o mitprogram.exe
kør program ./mitprogram.exe

Kilde:

http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
  • Log ind eller opret dig for at tilføje kommentarer

# 8

15 år 3 måneder siden

Permalink

Indsendt af marson den 5. december 2010 kl. 18:59

Permalink

Har fundet løsningen.

Har fundet løsningen. Skulle linke mit program på følgende måde:
ld -I/lib/ld-linux.so.2 main.o -lc

og skulle bruge .globl _start istedet for main.
  • Log ind eller opret dig for at tilføje kommentarer

Svar søges

KDE Plasma 6.6 skrivebordsmiljø udgivet 0
youtube-tui: Nyd YouTube fra terminalen som en professionel 0
GRUB 2.14 introducerer understøttelse af EROFS, forbedringer til Btrfs og LVM 0
KDE Plasma 6.6 tilføjer en funktion, som brugerne har spurgt efter i evigheder 0
Linux i København 12.01.2026: Open source i det offentlige 0

Seneste aktivitet

BigLinux 5
Det engang så elskede PCLinuxOS er tilbage - og det er stadig en fantastisk Windows erstatning 1
rsync og filsystem 6
Mousam er en detaljeret desktop vejrapp til Linux 1
Hjælp til Handbrake - ingen dk-undertekster 1
luckyBackup 2
GIMP 30
Pinegrow på Debian 13 ? 4
Openmediavault 1
E-mail blues 9
Driver til min scanner? 5
Printer Epson ET-2865 problem 16
Sudo 7
Thunderbird filvedligeholdelse 2
Debian 13.3.0 8
Linux Mint 22.3 - hvornår opdatere? 10
Canon-printer: Jeg savner "Ink-Toner Level"-meddelelse 10
billede af nuværende installation 2
mapper 4
LinuxIn live 9

© 2026 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !