2010-09-08 7 views
0

Bon, je suis actuellement dans un cours de Langues de l'Assemblée à l'école. Nous explorons un code source cette semaine pour la première fois. Mon professeur nous a donné un exemple de la manière suivante:Assembler le code source à partir d'un fichier texte

;plan for getting a, b, c, and displaying ab + bc 
call getVal a 
mov M1, AX 
call getVal 
mov M2, AX 
call getVal 
mov BX, AX 
mul M2 
mov CX, AX 
mov AX, M2 
mul M1 
add AX, CX 
call putVal 

Il nous a dit que nous devons sauvegarder ce dans un fichier txt puis de convertir il dans un fichier binaire exécutable pour l'exécuter. Quelle est la meilleure façon d'y arriver? Peut-il être fait à travers la ligne de commande?

EDIT: désolé le code n'est pas sorti juste, mais ce n'est pas nécessairement important ce qu'il fait. J'ai juste besoin de savoir comment exécuter un code source qui est enregistré en tant que fichier txt

EDIT: Merci Null

+0

Essayez http://flatassembler.net/index.php – NullUserException

+0

Quelle chaîne d'outils êtes-vous censé utiliser? Habituellement, tout ce que vous devez faire est de passer le code à votre assembleur et éditeur de liens, et vous obtiendrez un exécutable. Avez-vous essayé de demander à votre professeur? –

+0

Je lui ai envoyé un email, il semble être un répondeur lent. Vous m'avez perdu à "assembleur et linker", où cela peut-il être obtenu? Que dois-je faire une fois que j'ai l'exécutable? – javaTheHut

Répondre

1

fichier de langue de l'Assemblée ont généralement .s.S ou .asm mais pas .txt même n'a pas d'importance. Comme demandé, vous devez préciser un peu votre question en indiquant le type de machine et la chaîne d'outils. Cela ressemble vraiment à un assemblage Intel-mnemonic utilisant un assemblage Intel (par rapport à AT & T, voir Wikipedia x86 assembly pour un aperçu rapide).

Vous pouvez essayer NASM (The Netwide Assembler) pour compiler un tel code source.

Bien sûr, certaines parties sont manquantes dans votre fichier comme indiqué par NASM (sous Linux).

$ cat file.s 
; comment 
section .text 
    global fct 
fct: 
    call getVal 
    mov M1, AX 
    call getVal 
    mov M2, AX 
    call getVal 
    mov BX, AX 
    mul M2 
    mov CX, AX 
    mov AX, M2 
    mul M1 
    add AX, CX 
    call putVal 
$ nasm -f elf -o file.o file.s 
file.s:5: error: symbol `getVal' undefined 
file.s:6: error: symbol `M1' undefined 
file.s:7: error: symbol `getVal' undefined 
file.s:8: error: symbol `M2' undefined 
file.s:9: error: symbol `getVal' undefined 
file.s:11: error: symbol `M2' undefined 
file.s:13: error: symbol `M2' undefined 
file.s:14: error: symbol `M1' undefined 
file.s:16: error: symbol `putVal' undefined 

Notez que je le format de sortie ELF car il aide à l'aide GNU objdump. Mais vous pouvez choisir un autre fomat de sortie dans la liste suivante (nasm -hf):

valid output formats for -f are (`*' denotes default): 
    * bin  flat-form binary files (e.g. DOS .COM, .SYS) 
    ith  Intel hex 
    srec  Motorola S-records 
    aout  Linux a.out object files 
    aoutb  NetBSD/FreeBSD a.out object files 
    coff  COFF (i386) object files (e.g. DJGPP for DOS) 
    elf32  ELF32 (i386) object files (e.g. Linux) 
    elf  ELF (short name for ELF32) 
    elf64  ELF64 (x86_64) object files (e.g. Linux) 
    as86  Linux as86 (bin86 version 0.3) object files 
    obj  MS-DOS 16-bit/32-bit OMF object files 
    win32  Microsoft Win32 (i386) object files 
    win64  Microsoft Win64 (x86-64) object files 
    rdf  Relocatable Dynamic Object File Format v2.0 
    ieee  IEEE-695 (LADsoft variant) object file format 
    macho32 NeXTstep/OpenStep/Rhapsody/Darwin/MacOS X (i386) object files 
    macho  MACHO (short name for MACHO32) 
    macho64 NeXTstep/OpenStep/Rhapsody/Darwin/MacOS X (x86_64) object files 
    dbg  Trace of all info passed to output stage 

Pour les utilisateurs de MS, vous auriez pu utiliser MASM ou TASM qui utilisent un autre code de style de montage:

; comment 
.CODE 
fct: 
    [...] 
END 

espère que ce aide :)

Questions connexes