iB-InformatikBoard.ch - Benutzer helfen Benutzern   IT-Lohnumfrage ¦ MS-CLIP ¦ Google  


     
     
"5.3 Sterne"   

    Diskussionen über Freizeit und Job: Diskussionen über Weiterbildung: Diskussionen über die Computerwelt:  
    Neu hier? Forum für Einsteiger
Wichtige F.A.Q.'s und Regeln
Off Topic
iB-Updates und News
Feedback und Vorschläge
Informatik Job-Forum
Ich suche eine Informatikstelle
Ich biete eine Informatikstelle
Microsoft MCSE Zertifikate
Microsoft Zertifikate Allgemein
CISCO Zertifikate
SIZ-Zertifikaten und Lernhilfen
Zertifikate und Diplome Allgemein
Weiterbildung mit E-Learning
Windows Workstation   Windows Server
Software Allgemein   Linux Software
Programmiersprachen   Webdesign
Security   Internet
Hardware/Netzwerk   Wireless
Pockets, Smartphones, PDA's   Games
Allgemeine Tipps, Bücher und Tools
HowTo    Online Schnäppchen
 
   

Willkommen auf informatikBoard.ch - Benutzer helfen Benutzern
Zurück   iB-Startseite > Informiere dich über die Computerwelt: Geräte, Hard- und Software > Programmiersprachen Allgemein
Willkommen bei InformatikBoard.ch:
Bevor du Schreiben oder Antworten kannst,
musst du dich hier kostenlos Registrieren!

Antwort
 
LinkBack Themen-Optionen
Assembler: hex-viewer
Alt
  (#1)
Erfahrener Benutzer
 
Benutzerbild von pantheros
 
Status: Offline
Beiträge: 318
Registriert seit: 04.06.2006
Ort: zu Hause
Standard Assembler: hex-viewer - 25.11.2006, 20:38

Hallo,

Ich wollte nicht in den Ausgang gehen heute und deshalb habe ich beschlossen einen kleinen Hex-Viewer für Linux unter Assembler (AT&T Syntax) zu schreiben. Den Sourcecode publiziere ich hier in der Hoffnung, dass dies jemandem nützlich sein wird.

Code:
$ gcc -o hex hex.s
$ ./hex
Usage: ./hex [file]
Code:
File: hex.s
# a simple hex viewer for linux

.section .rodata

file_mode:
  .asciz "rb"

ErrorMsg0:
  .asciz "fopen is failed!"

ErrorMsg1:
  .asciz "fseek is failed!"

ErrorMsg2:
  .asciz "malloc is failed!"

ErrorMsg3:
  .asciz "fread is failed!"

ErrUsageMsg:
  .asciz "Usage: ./hex <file>\n"

Print_newline:
  .asciz "\n"

Print_hex:
  .asciz "%02x "

Print_line:
  .asciz "%07x "

.section .text
.globl main
main:
        pushl %ebp
        pushl %esi
        pushl %edi

        cmpl $2, 16(%esp)
        jne ErrUsage

        movl 20(%esp), %eax
        movl 4(%eax), %eax

        subl $16, %esp

        movl $file_mode, 4(%esp)
        pushl %eax
        popl (%esp)
        call fopen
        testl %eax, %eax
        jz Error0
        movl %eax, %ebp

        movl %ebp, (%esp)
        movl $0, 4(%esp)
        movl $2, 8(%esp)
        call fseek
        testl %eax, %eax
        jnz Error1 #on error -1

        movl %ebp, (%esp)
        call ftell
        movl %eax, %ebx
        incl %eax
        movl %eax, (%esp)
        call malloc
        testl %eax, %eax
        jz Error2
        movl %eax, %esi

        movb $0, (%ebx, %esi, 1) # adding string termination NULL

        movl %ebp, (%esp)
        call rewind

        movl %ebp, 12(%esp)
        movl $1, 8(%esp)
        movl %ebx, 4(%esp)
        movl %esi, (%esp)
        call fread
        testl %eax, %eax
        js Error3

# %ebx -> bufsize
# %esi -> buffer
# %edi -> counter

        xorl %edi, %edi

        movl %edi, 4(%esp)
        movl $Print_line, (%esp)
        call printf
        movl %edi, 8(%esp)

loop:   movzbl (%esi, %edi, 1), %eax
        movl %eax, 4(%esp)
        movl $Print_hex, (%esp)
        call printf
        incl %edi

        testl $0xf, %edi
        jnz NoNewline
        movl $Print_newline, (%esp)
        call printf

        addl $0x10, 8(%esp)
        pushl 8(%esp)
        popl 4(%esp)
        movl $Print_line, (%esp)
        call printf

NoNewline:
        cmpl %edi, %ebx
        jnz loop

End0:   movl $Print_newline, (%esp)
        call printf

        movl %ebp, (%esp)
        call fclose

Exit:   movl $0, (%esp)
        call exit

Error0: movl $ErrorMsg0, (%esp)
        call puts
        jmp Exit

Error1: movl $ErrorMsg1, (%esp)
        call puts
        jmp Exit

Error2: movl $ErrorMsg2, (%esp)
        call puts
        jmp Exit

Error3: movl $ErrorMsg3, (%esp)
        call puts
        jmp Exit

ErrUsage:
        movl $ErrUsageMsg, (%esp)
        call printf
        jmp Exit
Viel Spass.

bye, pantheros


"There is no such thing as a best solution, be it a tool, a language, or an operating system. There can only be systems that are more appropriate in a particular set of circumstances."
 pantheros eine Nachricht über ICQ schicken pantheros eine Nachricht über MSN schicken  
Mit Zitat antworten
Assembler: hex-viewer
 
Links zum gleichem Thema:
Alt
  (#2)
Moderator
 
Benutzerbild von zer00
 
Status: Offline
Beiträge: 2,568
Registriert seit: 07.11.2003
Ort: The Sprawl
Alter: 32
Standard 26.11.2006, 01:26

Finde ich gut, nur leider sind meine ASM Kenntnisse sehr bescheiden.
Ich schaus mir aber mal an.

grz zer00
   
Mit Zitat antworten
Alt
  (#3)
Erfahrener Benutzer
 
Benutzerbild von pantheros
 
Status: Offline
Beiträge: 318
Registriert seit: 04.06.2006
Ort: zu Hause
Standard 27.11.2006, 09:23

Salü zer00,

Ja easy. Falls etwas unklar ist, fragst du

bye, pantheros


"There is no such thing as a best solution, be it a tool, a language, or an operating system. There can only be systems that are more appropriate in a particular set of circumstances."
 pantheros eine Nachricht über ICQ schicken pantheros eine Nachricht über MSN schicken  
Mit Zitat antworten
Antwort



Unsere iB-Sponsoren:
itrain.ch
klubschule.ch
iB-Sponsor: inside-it.ch
ARP DATACON - PC Onlineshop für Computer, Computerbedarf und Software


Sponsor-Links:




Bitte beachtet das Angebot unserer Sponsoren:
iB-Sponsor: itrain.ch iB-Sponsor: klubschule.ch iB-Sponsor: inside-it.ch GeschenkeNews: Geschenke der besonderen Art


Lesezeichen
Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Assembler: Text umgekehrt ausgeben pantheros Programmiersprachen Allgemein 1 10.08.2007 08:32
Dicom Viewer gesucht Moduuus Windows Software Allgemein 6 25.08.2006 12:41
Access Viewer micoud Windows Software Allgemein 2 09.03.2005 06:36
Visio-Zeichnungen verteilen dank Visio Viewer 2002 rene Windows Software Allgemein 2 03.09.2004 08:06
Word Viewer Cello Windows Software Allgemein 0 17.02.2004 12:03


« Vorheriges Thema | Nächstes Thema »
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Partnerlinks:
www.Clever-Schenken.ch - Geschenke und Geschenkideen, persönlich uns speziell
www.GeschenkeNews.ch - Geschenke und Geschenkideen
www.BigBellyBank.ch - Die lustige Sparkasse mit AHA-Effekt
www.EcoSphere.ch - Das Mini-Aquarium aus der NASA-Forschung für Zuhause
www.Frauen-Geschenke.ch - Spezielle Geschenke nicht nur für Frauen

 
Seite generiert in 0.110 Sekunden mit 10 Queries.
(100.00% PHP - 0% MySQL)

Copyright ©2008 InformatikBoard.ch
Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Template-Modifikationen durch TMS
vB Skin by vBStyles.com
Search Engine Optimization by vBSEO 3.2.0



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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90