tutorial language inc eax asm visual-studio visual-studio-2008 assembly compilation masm

visual-studio - language - mov byte eax



Uso de Visual Studio 2008 para ensamblar, vincular, depurar y ejecutar el código de ensamblaje de MASM 6.11 (6)

Si vas a usar Visual Studio, ¿no podrías darles un proyecto esquemático en C / C ++ con el punto de entrada para una aplicación de consola que invoca una función que tiene un bloque de montaje en línea vacío, y dejar que llenen sus resultados en él?

Me gustaría usar Visual Studio 2008 en la mayor medida posible mientras compilo / enlaza / construye / etc. código efectivamente como si todos estos procesos de compilación estuvieran siendo realizados por las herramientas provistas con MASM 6.11. La versión exacta de MASM no importa, siempre y cuando esté dentro del rango de 6.x, ya que eso es lo que mi universidad está usando para enseñar el ensamblaje de 16 bits.

He realizado algunas investigaciones sobre el tema y he llegado a la conclusión de que hay varias opciones:

  1. Vuelva a configurar VS para llamar a los ejecutables de MASM 6.11 con los mismos indicadores, etc. como lo haría originalmente MASM 6.11.
  2. Cree archivos intermedios de proceso por lotes a los que VS llamará para invocar los comandos adecuados para el enlazador de MASM, etc.
  3. Vuelva a configurar las herramientas / reglas de compilación incorporadas de VS (ensamblador, enlazador, etc.) para proporcionar un entorno idéntico al utilizado por MASM 6.11.

La opción (2) apareció cuando me di cuenta de que las opciones disponibles en la interfaz "Herramientas externas" de VS pueden ser insuficientes para invocar correctamente las herramientas de compilación de MASM, por lo que un archivo por lotes para interpretar el estricto método VS de pasar argumentos podría ser útil. de mi aprendizaje sobre cómo hacer que esto funcione implicó mi llamada manual a ML.exe, LINK.exe, etc. desde el símbolo del sistema.

A continuación hay varios enlaces que pueden ser útiles para responder mi pregunta. Tenga en cuenta que los he leído todos y ninguno es la solución real. Solo puedo esperar que la especificación de MASM 6.11 no impida que alguien contribuya con una respuesta quizás más general.

Método similar utilizado para la Opción (2), pero los usuarios en el hilo no son contactables:
http://www.codeguru.com/forum/archive/index.php/t-284051.html
(también, tengo mis dudas sobre la necesidad de un archivo por lotes intermediario)

Explicación desactualizada de mi pregunta:
http://www.cs.fiu.edu/~downeyt/cop3402/masmaul.html

Probablemente, lo más cercano que he encontrado a una solución definitiva, pero se refiere a un conjunto de herramientas de algo además de MASM, también utiliza un archivo por lotes:
http://www.kipirvine.com/asm/gettingStarted/index.htm#16- bit

Me disculpo si mi terminología para las herramientas utilizadas en cada paso del proceso code -> exe está desactivada, pero como intento reproducir la totalidad de los pasos entre la finalización de la escritura del código y la generación de un ejecutable, no lo hago. creo que importa mucho


en lugar de archivos por lotes, ¿por qué no utilizar el paso de compilación personalizado definido en el archivo?


Puede crear un proyecto de archivo MAKE. En Visual Studio, en Archivo / Nuevo / Proyecto, elija el proyecto Visual C ++ / Makefile.

Esto le permite ejecutar un comando arbitrario para construir su proyecto. No tiene que ser C / C ++. Ni siquiera tiene que ser un Makefile NMake tradicional. Lo he usado para compilar un controlador utilizando un archivo por lotes y usando un script NAnt.

Debería ser bastante fácil hacer que ejecute la cadena de herramientas MASM 6.x.


Sugeriría definir reglas de compilación personalizada dependiendo de la extensión de archivo. (Visual Studio 2008, al menos en Professinal Edition, puede generar archivos .rules, que se pueden distribuir). Allí puede definir herramientas de compilación personalizadas para archivos asm. Al usar este enfoque, debería poder dejar el paso del enlazador tal como está.

Hace mucho tiempo, usamos texto de enlace MASM32 como IDE para ayudar a los estudiantes a aprender a ensamblar. Puede verificar sus archivos por lotes, lo que hacen para ensamblar y vincular.


¿Por qué no usas la guía de Irvine? La biblioteca de Irvine es agradable y, si lo desea, puede ignorarla y trabajar con los procesos de Windows directamente. He estado buscando una guía como esta, la de Irvine fue la mejor solución.


Hay un archivo de reglas MASM ubicado en (eliminación de sistema de 32 bits (x86) ):

C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/VCProjectDefaults/masm.rules

Copie ese archivo en su directorio de proyecto y agréguelo a las Reglas de compilación personalizadas para su proyecto. Luego, "Modificar archivo de regla ...", seleccione la regla de compilación de MASM y "Modificar regla de compilación ...".

Agregar una propiedad:

  • Tipo de propiedad del usuario: cadena
  • Valor predeterminado: * .inc
  • Descripción: agregue dependencias adicionales de archivos MASM.
  • Nombre para mostrar: Dependencias Adicionales
  • Es de solo lectura: Falso
  • Nombre: AdditionalDependencies
  • Nombre de página de propiedad: General
  • Cambiar: [valor]

Establezca el valor de Dependencias adicionales en [AdditionalDependencies] . La compilación ahora debería detectar automáticamente los cambios en *.inc , y puede editar las propiedades de un archivo asm individual para especificar otras.