Je suis très nouveau pour assembler la programmation linguistique, il s'agit probablement d'une erreur très évidente, mais ...
J'utilise MSVC ++, et lorsque je compilise un projet avec une extension .asm, il utilise la règle p> et juste pour vous assurer que le compilateur fonctionne, j'ai essayé le code p> mais quand je l'ai compilé , Je reçois trois erreurs p> donc je me demande simplement, y a-t-il une erreur évidente dans une partie du code, ou est-ce le compilateur qui est en train de gâcher? P> p>
6 Réponses :
Vous devez utiliser l'instruction segment code>. Essayez
code segment code> en haut. P>
Ne fonctionne pas si j'ajoute "code de segment" sur la ligne juste avant le premier.
Essayez ceci:
.model small .stack .data message db "Hello world!", "$" .code main proc mov ax,seg message mov ds,ax mov ah,09 lea dx,message int 21h mov ax,4c00h int 21h main endp end main
Je reçois différentes erreurs, une ligne 7 à propos de "conflit de type symbole" et d'une ligne 15 sur un commutateur "\ Coff" et un soulignement de premier plan.
J'augs que le code a besoin de directives, essayez ceci: ici, .Model dit que nous allons utiliser un "petit" modèle de programme mémoire et .Code dit que le Les lignes suivantes sont du code exécutable. P> EDIT:
OK, il y a un autre exemple que tha devrait courir ok. P> (je l'ai pris de ici ) p> p>
Je reçois un avertissement sur un \ Coff Interrupteur et un soulignement principal, alors il a une erreur d'exécution.
Pourriez-vous élaborer sur la construction avec making.bay? Où exactement le menu du projet est-ce?
Vous n'avez pas de directive ".code" avant que le code puisse faire savoir que cela est censé être dans le segment de code. En plus de cela, vous ne revenez de quelque manière que ce soit du code, la CPU tente donc de s'exécuter tous les octets suivant comme s'il s'agissait de code exécutable. Pas étonnant que cela se bloque après avoir couru. P>
Cela semble fonctionner pour moi en utilisant les lignes ML et Link suivantes
ML / COFF / C TEST.ASM
Lien / Subsystème: Console Test.Obj
TITLE Test app .386 .MODEL flat, stdcall .STACK 4096 ; -------------------- .code main PROC ret main ENDP ; -------------------- END main
à partir d'une navigation rapide, il semble que l'assemblage sous vs.net soit suffisamment rare que vous devez configurer des règles de construction personnalisées. Vous pouvez trouver un exemple ici: http://www.cs.virginia.edu/~evans/cs216/guides/vsasme.html < / a> p>
Par curiosité, qu'essayez-vous d'accomplir? Si vous faites cela pour le plaisir ou pour apprendre la langue de montage, vous serez probablement mieux en train d'utiliser un éditeur de montage dédié. Le MASM32 SDK est une telle option. Vous pouvez ensuite créer un lien vers les bibliothèques que vous créez à partir du projet Visual Studio. P>
Si vous envisagez d'utiliser de petits segments d'assemblage dans des morceaux critiques d'un projet C / C ++, je vous conseillerais de jeter un bon coup d'œil au compilateur intrinsèque ( http://msdn.microsoft.com/en-us/library/26td21ds.aspx ) avant de décider d'utiliser des fichiers d'assemblage entièrement codés à la main. P>