MASM |
Macro Assembler |
---|---|
MS-DOS 2 | Externe |
Syntaxe
MASM |
MASM source_file [,[object_file][,[list_file][,[cref_file]]]] [options] [;] |
Paramètres
Nom | Description |
---|---|
source_file | Ce paramètre permet d'indiquer le nom du fichier contenant le code source du langage assembleur (extension par défaut = .ASM). |
object_file | Ce paramètre permet d'indiquer le nom du fichier destiné à recevoir le module objet assemblé (extension par défaut = .OBJ). |
list_file | Ce paramètre permet d'indiquer le nom du fichier ou du périphérique devant recevoir la liste de l'assembleur. La valeur par défaut est NUL. Si destination = fichier, extension par défaut = .LST. |
cref_file | Ce paramètre permet d'indiquer le nom du fichier de référence croisée devant recevoir des informations pour un traitement ultérieur par l'utilitaire CREF (par défaut = NUL). Si destination = fichier, extension par défaut = .CRF. |
/A | Ce paramètre permet d'écrire les segments de programme par ordre alphabétique. |
/Bn | Ce paramètre permet de définir la taille du tampon du fichier source en kilo-octets (1 à 63, par défaut = 32). |
/C | Ce paramètre permet de créer un fichier de référence croisée (.CRF). |
/D | Ce paramètre permet d'ajouter une liste de programmes de premier passage à list_file si un fichier de liste a été spécifié. La valeur par défaut = liste de seconde passe uniquement. |
/Dsymbol | Ce paramètre permet de définir le symbole comme une chaîne de caractères de texte nulle. |
/E | Ce paramètre permet d'assembler le code d'un émulateur 8087/80287. |
/Ipath | Ce paramètre permet de définir un répertoire dans lequel rechercher des fichiers d'inclusion. |
/L | Ce paramètre permet de créer un fichier de liste (.LST) avec des informations de numéro de ligne. |
/ML | Ce paramètre permet de préserver le respect de la casse dans tous les noms de symboles. |
/MU | Ce paramètre permet de convertir tous les noms minuscules en noms majuscules. |
/MX | Ce paramètre permet de conserver les minuscules dans les noms publics et externes uniquement. |
/N | Ce paramètre permet de supprimer la génération de tables de macros, structures, enregistrements, groupes, segments et symboles à la fin du fichier de liste. |
/P | Ce paramètre permet de vérifier le code impur en mode protégé 80286; n'a aucun effet à moins que la directive .286P ne soit incluse dans le fichier source. |
/R | Ce paramètre permet d'assembler le code d'un coprocesseur mathématique 8087/80287. |
/S | Ce paramètre permet d'organiser les segments de programme par ordre d'occurrence. |
/T | Ce paramètre permet de sélectionner le mode concis, supprimant tous les messages générés lors de l'assemblage, à l'exception des messages d'erreur. |
/V | Ce paramètre permet de sélectionner le mode détaillé, affichant le nombre de lignes et de symboles à la fin de l'assemblage. |
/X | Ce paramètre permet d'inclure de fausses conditions dans le fichier de liste. |
/Z | Ce paramètre permet d'afficher les lignes source avec des erreurs lors de l'assemblage. |
Description
Cette commande permet de lancer le Macro Assembler. Ainsi, elle permet de convertir un programme de code source de langage de programmation assembleur en un module objet relocalisable.
Remarques
- Les commutateurs peuvent être en majuscules ou en minuscules et peuvent être précédés d'un tiret (-) au lieu d'une barre oblique (/).
- La commande MASM convertie le code source du langage assembleur en modules objet déplaçables. Les modules objet peuvent ensuite être placés dans un fichier bibliothèque ou traités par Microsoft Object Linker (LINK) pour créer un programme exécutable.
- Le paramètre source_file est le seul nom de fichier requis. Il spécifie un fichier contenant le code source du langage assembleur en texte ASCII. Si aucune extension n'est spécifiée, MASM utilise .ASM. Si aucun fichier source n'est entré dans la ligne de commande, MASM demande un nom de fichier source.
- Le paramètre object_file spécifie le fichier contenant le code objet relocalisable assemblé. Si ce paramètre n'est pas fourni, MASM utilise le même nom de fichier que source_file mais remplace l'extension .OBJ.
- Le paramètre list_file spécifie un fichier ou un périphérique de destination pour la liste de programmes facultative. La liste contient le code source d'origine, le code machine assemblé, les définitions et extensions de macros, ainsi que d'autres informations utiles, formatées en pages avec des titres, des dates et des numéros de page. Si la destination de la liste est un fichier, l'extension par défaut du fichier est .LST. Si le paramètre list_file n'est pas inclus dans la ligne de commande, MASM envoie la liste à NUL (c'est-à-dire qu'une liste n'est pas produite).
- Le paramètre cref_file spécifie le nom d'un fichier de référence croisée devant recevoir les informations à traiter par l'utilitaire CREF. Si aucune extension de fichier n'est spécifiée, MASM utilise .CRF. Si le paramètre cref_file n'est pas inclus dans la ligne de commande, MASM envoie le fichier à NUL (c'est-à-dire qu'aucun fichier de référence croisée n'est généré).
- Si la commande MASM est entrée sans paramètres, MASM demande à l'utilisateur chaque nom de fichier. La réponse par défaut pour chaque prompt (à l'exception du prompt du fichier source) est affichée entre crochets et peut être sélectionnée en appuyant sur la touche Enter.
- Une fois le fichier source spécifié, si MASM rencontre un caractère point-virgule (;) dans la ligne de commande ou à n'importe quelle prompt, il utilise les valeurs par défaut pour les paramètres restants. La commande MASM ignore tous les paramètres spécifiés après le point-virgule.
- La commande MASM effectue deux passages pour convertir le code en langage assembleur du fichier source en code objet réadressable. Toutes les erreurs détectées lors de la conversion sont affichées sur la sortie standard et incluses dans la liste des programmes (le cas échéant). Deux types d'erreurs peuvent être détectés: les erreurs d'avertissement et les erreurs graves. Si MASM rencontre une erreur d'avertissement, il crée toujours le fichier objet, bien que le fichier résultant puisse être inutilisable. Si MASM rencontre une erreur grave, il ne crée pas le fichier objet. Une fois qu'un fichier a été assemblé avec succès sans erreurs, l'utilitaire LINK peut être utilisé pour convertir le fichier objet résultant en un fichier programme exécutable.
- La commande MASM prend en charge une grande variété d'options pouvant être sélectionnées en incluant des commutateurs dans la ligne de commande ou en répondant à n'importe quelle prompt.
- Les commutateurs /A et /S déterminent l'ordre des segments dans le fichier de module objet résultant. Le commutateur /A place les segments dans le fichier objet dans l'ordre alphabétique. Le commutateur /S (par défaut) organise les segments dans le même ordre qu'ils apparaissent dans le fichier source.
- Les commutateurs /Bn, /Dsymbol et /Ipath ont des effets assez généraux sur le comportement de MASM. Le commutateur /Bn définit la taille (en kilo-octets) de la mémoire tampon RAM du fichier source; la valeur de n doit être comprise entre 1 et 63, inclus (par défaut = 32). Si la mémoire tampon RAM est suffisamment grande, le fichier source entier peut être conservé en mémoire, ce qui réduit l'activité du disque pendant les passes. Le commutateur /Dsymbol définit un symbole de chaîne de caractères de texte nul à partir de la ligne de commande. Ce symbole peut être référencé dans le programme avec la directive IFDEF pour contrôler l'assemblage conditionnel de parties du programme. Le commutateur /Ipath spécifie un répertoire dans lequel seront recherchés les fichiers nommés dans les instructions de l'assembleur INCLUDE si ces instructions n'incluent pas de répertoire explicite. Jusqu'à 10 de ces chemins de recherche peuvent être spécifiés avec des commutateurs individuels /Ipath.
- Les commutateurs /E et /R affectent la génération de code pour l'émulateur 8087/80287 ou le coprocesseur mathématique 8087/80287. (La prise en charge du 80287 est incluse avec les versions MASM 3.0 et ultérieures.) Le commutateur /E génère des interruptions logicielles vers les routines d'émulation de processeur à virgule flottante. Un sous-programme assemblé avec le commutateur /E peut être lié aux programmes C, Pascal et FORTRAN et peut utiliser les bibliothèques d'émulation. Le commutateur /R produit des instructions machine en ligne pour le coprocesseur mathématique lorsque des mnémoniques à virgule flottante sont utilisés.
- Les commutateurs /ML, /MU et /MX contrôlent la gestion par MASM des noms en majuscules et en minuscules. Le commutateur /ML rend MASM sensible à la casse; c'est-à-dire que MASM différencie un nom en lettres majuscules du même nom en lettres minuscules. (Le commutateur /ML ne doit pas être utilisé si le fichier source contient 8087 instructions WAIT et MASM 4.0 est utilisé pour traduire le fichier.) Le commutateur /MU (par défaut) rend MASM insensible à la casse; toutes les lettres minuscules sont converties en majuscules à des fins d'assemblage. Le commutateur /MX rend MASM sensible à la casse pour les noms publics et externes uniquement (noms définis avec les directives PUBLIC ou EXTRN). Le commutateur /MX est souvent utilisé pour traiter les fonctions du langage d'assemblage pour les programmes C.
- Le commutateur /P vérifie les segments de code impurs posant des problèmes si le programme assemblé est exécuté en mode protégé 80286. Le commutateur vérifie en marquant toute instruction modifiant un emplacement mémoire adressé via le registre CS du microprocesseur. Le commutateur /P n'a aucun effet à moins que le fichier source du langage assembleur n'inclue la directive .286P.
- Les commutateurs /C, /D, /L, /N et /X contrôlent le contenu de la liste des programmes et d'autres fichiers facultatifs générés à la suite de l'assemblage. Le commutateur /C provoque la création d'un fichier de référence croisée (.CRF) et l'ajout de numéros de ligne au fichier listé (.LST) (s'il en existe un). Le commutateur /C doit être inclus dans la ligne de commande si le fichier de références croisées sera utilisé ultérieurement avec l'utilitaire CREF pour produire une liste de références croisées. Le commutateur /D inclut une liste de la première passe ainsi qu'une liste de la deuxième passe dans le fichier de liste si un fichier de liste a été spécifié (par défaut = liste de deuxième passe uniquement). En comparant les deux listes, l'utilisateur peut isoler une instruction provoquant une erreur de phase. (Une erreur de phase se produit lorsque MASM fait des hypothèses sur les adresses, les valeurs ou les types de données lors de la première passe n'étant pas valides dans la seconde passe.) Le commutateur /L crée un fichier de liste avec des informations de numéro de ligne et lui donne le même nom comme fichier source, avec l'extension .LST. Le commutateur /N supprime la génération de tables - symboles, segments, groupes, structures, enregistrements et macros - à la fin d'une liste de programmes. Le commutateur /X inclut des instructions à l'intérieur de fausses instructions conditionnelles dans le fichier de liste, ce qui permet d'afficher les conditions ne générant pas de code. Le paramètre /X n'a ??aucun effet si la directive .SFCOND ou .LFCOND est utilisée dans le fichier source; si la directive .TFCOND est utilisée, les effets de /X sont inversés.
- Les effets de /X sont également inversés dans MASM version 1.2. Dans cette version, les instructions dans une condition fausse sont incluses par défaut dans le fichier de liste et /X les supprimera.
- Les commutateurs /T, /V et /Z affectent l'affichage du MASM sur la sortie standard. Le commutateur /T (laconique) supprime les messages vers la sortie standard, à l'exception des messages indiquant des erreurs d'avertissement ou des erreurs graves. Le commutateur /V (détaillé) affiche des informations sur le nombre de lignes source et de symboles à la fin de l'assemblage, en plus d'afficher les informations d'erreur normales et d'espace de symboles. Le commutateur /Z affiche les lignes source réelles générant des erreurs d'assemblage (plutôt que d'afficher uniquement le type d'erreur et le numéro de ligne).
- Les versions de MASM antérieures à 4.0 affichent toujours à la fois la ligne source et le message d'erreur.
- La commande MASM retourne les codes de retour suivant :
Valeur | Description |
---|---|
0 | Aucune erreur n'a été trouvée lors de l'assemblage. |
1 | Une erreur a été détectée dans l'un des paramètres de ligne de commande. |
2 | Le fichier source du langage d'assemblage n'a pas pu être ouvert. |
3 | Le fichier de liste n'a pas pu être créé. |
4 | Le fichier objet n'a pas pu être créé. |
5 | Le fichier de références croisées n'a pas pu être créé. |
6 | Un fichier d'inclusion n'a pas pu être ouvert. |
7 | Au moins une erreur grave a été détectée lors de l'assemblage. (MASM supprime le fichier objet non valide.) |
8 | L'assemblage a été arrêté car une erreur d'allocation de mémoire s'est produite. |
10 | Une erreur s'est produite lors de la définition d'un symbole (avec le commutateur /Dsymbol) à partir de la ligne de commande. |
11 | L'assemblage a été interrompu par la pression de l'utilisateur sur Ctrl+C ou Ctrl+Break. |
Liste des messages
Message | Description |
---|---|
8087 opcode can't be emulated | Un opcode 8087 ou les opérandes utilisés avec lui ont produit une instruction que l'émulateur ne peut pas prendre en charge. |
Already defined locally | Une tentative a été faite pour définir un symbole comme EXTRN ayant déjà été défini localement. |
Already had ELSE clause | Une tentative a été faite pour définir une clause ELSE dans une clause ELSE existante. (ELSE ne peut pas être imbriqué sans imbriquer IF ... ENDIF.) |
Already have base register | Plus d'un registre de base a été spécifié dans un opérande. |
Already have index register | Plusieurs registres d'index ont été spécifiés dans un opérande. |
Block nesting error | Un segment, une structure, une macro, un IRC, un IRP, un REPT ou une procédure imbriquée ne s'est pas terminé correctement. |
Byte register is illegal | Un registre d'octets a été utilisé de manière incorrecte dans une instruction. |
Can't override ES segment | Une tentative a été faite pour remplacer le segment ES dans une instruction dans laquelle ce remplacement n'est pas valide. |
Can't reach with segment reg | Aucune directive ASSUME n'a été donnée pour rendre la variable accessible. |
Can't use EVEN on BYTE segment | Une directive EVEN a été utilisée sur un segment déclaré être un segment d'octet. |
Circular chain of EQU aliases | Un alias EQU pointe finalement vers lui-même. |
Constant was expected | Une constante était attendue, mais un élément a été reçu ne correspondant pas à une constante. |
CS register illegal usage | Le registre CS a été utilisé de manière incorrecte dans l'une des instructions. |
Data emitted with no segment | Le code ne se trouvant pas dans un segment a tenté de générer des données. |
Directive illegal in STRUC | Toutes les instructions dans les blocs STRUC doivent être des commentaires précédés d'un point-virgule (;) ou l'une des directives de définition (DB, DW,...). |
Division by 0 or overflow | Une expression a été rencontrée ayant entraîné une division par 0 ou un nombre trop grand pour être représenté. |
DUP is too large for linker | L'imbrication des opérateurs DUP était telle qu'un enregistrement trop volumineux pour LINK a été créé. |
End of file, no END directive | Aucune instruction END n'a été rencontrée ou une erreur d'imbrication s'est produite. |
Extra characters on line | Des caractères superflus ont été détectés sur une ligne après que des informations suffisantes pour définir une instruction aient été interprétées. |
extra file name ignored | La ligne de commande contenait plus de quatre paramètres de nom de fichier. |
Field cannot be overridden | Une tentative a été faite pour donner une valeur à un champ ne pouvant pas être remplacée par une instruction d'initialisation STRUC. |
Forced error | Une erreur a été forcée avec la directive .ERR. |
Forced error - expression equals 0 | Une erreur a été forcée avec la directive .ERRE. |
Forced error - expression not equal 0 | Une erreur a été forcée avec la directive .ERRNZ. |
Forced error - pass1 | Une erreur a été forcée avec la directive .ERR1. |
Forced error - pass2 | Une erreur a été forcée avec la directive .ERR2. |
Forced error - string blank | Une erreur a été forcée avec la directive .ERRB. |
Forced error - string not blank | Une erreur a été forcée avec la directive .ERRNB. |
Forced error - strings different | Une erreur a été forcée avec la directive .ERRDIF. |
Forced error - strings identical | Une erreur a été forcée avec la directive .ERRIDN. |
Forced error - symbol defined | Une erreur a été forcée avec la directive .ERRDEF. |
Forced error - symbol not defined | Une erreur a été forcée avec la directive .ERRNDEF. |
Forward reference is illegal | Un élément était référencé dans l'opérande d'une directive EQU ou de signe égal (=) avant d'être défini. |
Illegal register value | Une valeur de registre spécifiée ne rentre pas dans le champ reg (c'est-à-dire que la valeur est supérieure à 7). |
Illegal size for item | La taille de l'élément référencé n'est pas valide. Cette erreur se produit également fréquemment lors d'une tentative d'assemblage de code source écrit pour les assembleurs avec une vérification de type moins stricte que celle de Microsoft Macro Assembler (comme les premières versions de l'assembleur IBM). Le problème peut généralement être résolu en remplaçant le type de l'opérande par l'opérateur PTR. |
Illegal use of external | Une variable déclarée externe a été utilisée de manière incorrecte. |
Illegal use of register | Une tentative a été faite pour utiliser un registre avec une instruction dans laquelle un registre ne peut pas être utilisé. |
Illegal value for DUP count | Le nombre DUP n'était pas une constante s'évaluant à un entier positif supérieur à zéro. |
Improper operand type | Un opérande a été utilisé d'une manière qui empêche la génération d'opcode. |
Improper use of segment register | Une tentative a été faite pour utiliser un registre de segment dans une instruction dans laquelle l'utilisation d'un registre de segment n'est pas autorisée. |
Impure memory reference | Une tentative de stockage des données dans le segment de code a été effectuée lorsque la directive .286P et le commutateur /P étaient en vigueur. |
Index displ. must be constant | Un déplacement d'index a été utilisé de manière incorrecte ou n'a pas été évalué à un nombre absolu ou à une adresse mémoire. |
Internal error | Une erreur de logique interne a été détectée dans l'assembleur. |
Label can't have seg. override | Un remplacement de segment a été utilisé de manière incorrecte. |
Left operand must have segment | Le contenu de l'opérande de droite nécessite qu'un segment soit spécifié dans l'opérande de gauche. |
Line too long expanding symbol | Un symbole défini par une directive EQU ou égal-signe (=) est si long que son expansion provoquera un débordement des tampons internes de l'assembleur. Ce message peut indiquer une macro de texte récursive. |
Missing data; zero assumed | Un opérande est absent d'une instruction et MASM suppose que sa valeur est zéro. Ceci est une erreur d'avertissement; le fichier objet n'est pas supprimé car il est avec des erreurs graves. |
More values than defined with | Trop de valeurs initiales ont été données lors de la définition d'une variable à l'aide d'un type REC ou STRUC. |
Must be associated with code | Un élément lié aux données a été utilisé lorsqu'un élément lié au code était attendu. |
Must be associated with data | Un élément lié au code a été utilisé lorsqu'un élément lié aux données était attendu. |
Must be AX or AL | Un registre autre que AX ou AL a été spécifié là où seuls ceux-ci sont acceptables. |
Must be in segment block | Une tentative a été faite pour générer du code par des instructions qui n'étaient pas contenues dans un segment. |
Must be index or base register | Une instruction nécessite un registre de base ou d'index, et un autre registre a été spécifié entre crochets ([]). |
Must be record field name | Un nom de champ d'enregistrement était attendu, mais quelque chose d'autre s'est produit. |
Must be record or fieldname | Un nom d'enregistrement ou un nom de champ était attendu, mais quelque chose d'autre s'est produit. |
Must be register | Un registre était attendu comme opérande, mais quelque chose d'autre a été rencontré. |
Must be segment or group | Un segment ou un groupe était attendu, mais quelque chose d'autre a été rencontré. |
Must be structure field name | Un nom de champ de structure était attendu, mais quelque chose d'autre s'est produit. |
Must be symbol type | Un BYTE, WORD, DWORD ou une désignation similaire était attendu, mais quelque chose d'autre a été rencontré. |
Must be var, label or constant | Une variable, une étiquette ou une constante était attendue, mais quelque chose d'autre a été rencontré. |
Must have opcode after prefix | Une instruction REP, REPE, REPNE, REPZ ou REPNZ n'était pas suivie du mnémonique d'une opération de chaîne. |
Near JMP/CALL to different CS | Une tentative a été faite pour effectuer un saut NEAR ou un appel à un emplacement dans un segment de code défini avec un ASSUME:CS différent. |
No immediate mode | Des données immédiates ont été fournies comme opérande pour une instruction ne pouvant pas utiliser de données immédiates. Par exemple, les données immédiates ne peuvent pas être déplacées directement avec une instruction MOV vers un registre de segment; il doit d'abord être déplacé dans un registre général puis copié dans le registre de segment. |
No or unreachable CS | Une tentative a été effectuée pour accéder à une étiquette inaccessible. |
Normal type operand expected | Un STRUC, BYTE, WORD ou un autre opérande non valide a été rencontré lorsqu'une étiquette de variable était attendue. |
Not in conditional block | Une instruction ENDIF ou ELSE a été rencontrée et aucune directive d'assemblage conditionnel précédente n'était active. |
Not proper align/combine type | Les paramètres SEGMENT sont incorrects. Vérifiez les types d'alignement et de combinaison pour vous assurer qu'ils sont valides. |
One operand must be const | L'opérateur d'addition n'a pas été utilisé correctement. |
Only initialize list legal | Une tentative a été faite pour utiliser un nom STRUC sans chevrons (<>). |
Operand combination illegal | Une instruction à deux opérandes a été spécifiée et la combinaison spécifiée n'était pas valide. |
Operand must have segment | Une directive SEG a été utilisée de manière incorrecte. |
Operand must have size | Un opérande a été rencontré nécessitant une taille spécifiée, mais aucun n'a été fourni. Souvent, cette erreur peut être corrigée en utilisant l'opérateur PTR pour spécifier un type de taille. |
Operand not in IP segment | Un opérande n'est pas accessible car il ne se trouve pas dans le dernier segment affecté à CS avec une directive ASSUME. |
Operand types must match | MASM a rencontré différents types ou tailles d'arguments dans un cas où ils doivent correspondre. |
Operand was expected | MASM attendait un opérande, mais un opérateur a été rencontré. |
Operands must be same or 1 abs | L'opérateur de soustraction n'a pas été utilisé correctement. |
Operator was expected | MASM attendait un opérateur, mais un opérande a été rencontré. |
Out of memory | La mémoire système est insuffisante pour terminer l'assemblage. Si un fichier de liste (.LST) ou de référence croisée (.CRF) était en cours de génération, réessayez l'assemblage en générant uniquement un fichier objet. Il peut également être nécessaire de modifier le programme source pour réduire la charge sur la table de symboles (en raccourcissant les noms ou en réduisant le nombre d'instructions EQU ou de macros, par exemple). |
Override is of wrong type | Une tentative d'utilisation d'un élément de données de taille incorrecte a été effectuée dans une instruction d'initialisation STRUC. |
Override value is wrong length | La valeur de remplacement d'un champ de structure est trop grande pour tenir dans le champ. |
Override with DUP is illegal | Une tentative d'utilisation du DUP pour remplacer dans une instruction d'initialisation STRUC a été effectuée. |
Phase error between passes | Le programme a des directives d'instructions ambiguës qui ont provoqué un changement de valeur de l'emplacement d'une étiquette dans le programme entre les première et deuxième passages de MASM. Une cause courante est une référence directe à un élément de données typé dans les instructions précédant l'étiquette ayant généré le message d'erreur de phase. Utilisez le commutateur /D pour produire une liste de premier passage pour aider à résoudre les erreurs de phase entre les passages. |
Redefinition of symbol | Ce message est affiché lors du premier passage lors de la deuxième déclaration d'un symbole ayant été défini à plusieurs endroits. |
Reference to mult defined | L'instruction fait référence à un symbole qui a été défini plusieurs fois. |
Register already defined | Une erreur interne a été détectée. |
Relative jump out of range | Un saut conditionnel fait référence à une étiquette qui est hors de la plage autorisée de -128 à +127 octets par rapport à l'instruction en cours. Le problème peut généralement être corrigé en inversant la condition du saut et en utilisant un saut inconditionnel (JMP) vers l'étiquette hors de portée. |
Segment parameters are changed | La liste des paramètres rencontrés pour un SEGMENT n'était pas identique à la liste spécifiée lors de la première utilisation du segment. |
Shift count is negative | Une expression de décalage a été générée, ce qui a entraîné un décompte de décalage négatif. |
Should have been group name | Un nom de groupe était attendu, mais quelque chose d'autre a été rencontré. |
Symbol already different kind | Une tentative a été faite pour redéfinir un symbole déjà défini. |
Symbol has no segment | Une tentative a été faite pour utiliser une variable avec SEG n'ayant pas de segment connu. |
Symbol is already external | Une tentative a été faite pour redéfinir un symbole comme local qui a déjà été défini comme externe. |
Symbol is multi-defined | Ce message s'affiche lors du deuxième passage à chaque déclaration d'un symbole défini à plusieurs endroits. |
Symbol is reserved word | Une tentative a été faite pour utiliser un mot MASM réservé comme symbole. |
Symbol not defined | Un symbole non défini a été utilisé. |
Symbol type usage illegal | Un symbole PUBLIC a été utilisé de manière incorrecte. |
Syntax error | La syntaxe de l'instruction ne correspond à aucune syntaxe reconnaissable. |
Type illegal in context | Le type spécifié est d'une taille inacceptable. |
Unable to open input file filename | Le fichier source spécifié est introuvable. |
unknown switch letter | La ligne de commande comprenait un commutateur non valide. |
Unknown symbol type | MASM ne reconnaît pas le type de taille spécifié dans une étiquette ou une déclaration externe. Réécrivez avec un type valide tel que BYTE, WORD ou NEAR. |
Value is out of range | Une valeur est trop grande pour son utilisation prévue. |
Wrong type of register | Une directive ou une instruction attendait un type de registre, mais un autre type a été rencontré. |
Exemples
L'exemple suivadnt permet d'assembler le fichier source CLEAN.ASM dans l'unité de disque et le répertoire actuels et placer le module d'objet relocalisable résultant dans e fichier CLEAN.OBJ sans produire de liste ou de fichier de référence croisée :
MASM CLEAN; Enter |
Le point-virgule après le premier paramètre oblige MASM à utiliser les valeurs par défaut pour le reste des paramètres. Pour assembler le fichier source CLEAN.ASM, placez le code objet dans un fichier nommé CLEAN.OBJ, créez un fichier liste nommé CLEAN.LST et placez les informations pour un traitement ultérieur par l'utilitaire CREF dans le fichier de référence croisée CLEAN.CRF, taper la commande suivante :
MASM CLEAN,CLEAN,CLEAN,CLEAN Enter |
ou
MASM CLEAN,,CLEAN,CLEAN Enter |
Pour utiliser MASM de manière interactive, entrez son nom sans paramètres :
MASM Enter |
L'exemple suivant MASM demande alors toutes les informations nécessaires. Par exemple, la session interactive de la page suivante assemble le fichier BONJOUR.ASM dans le fichier BONJOUR.OBJ, ne produisant aucune liste ou fichier .CRF :
MASM Enter |
on obtiendra un résultat ressemblant à ceci :
Microsoft (R) Macro Assembler Version 4.00 Copyright (C) Microsoft Corp 1981, 1983, 1984, 1985. All rights reserved Source filename: [.ASM]: BONJOUR Enter Object filename: [BONJOUR.OBJ]: Enter Source listing [NUL.LST]: Enter Cross-reference [NUL.CRF]: Enter 51004 Bytes symbol space free 0 Warning Errors 0 Severe Errors |