Red de conocimiento informático - Conocimiento sistemático - Información detallada del lenguaje ensamblador (lenguaje de programación orientado a máquina)

Información detallada del lenguaje ensamblador (lenguaje de programación orientado a máquina)

El lenguaje ensamblador (lenguaje ensamblador) es un lenguaje de bajo nivel utilizado para computadoras electrónicas, microprocesadores, microcontroladores u otros dispositivos programables. También se le llama lenguaje simbólico. En lenguaje ensamblador, los mnemónicos se utilizan para reemplazar los códigos de operación de las instrucciones de la máquina, y los símbolos de dirección (Símbolo) o etiquetas (Etiqueta) se usan para reemplazar las direcciones de instrucciones u operandos. En diferentes dispositivos, el lenguaje ensamblador corresponde a diferentes conjuntos de instrucciones en lenguaje de máquina, que se convierten en instrucciones de máquina mediante el proceso de ensamblaje. En términos generales, un lenguaje ensamblador específico y un conjunto de instrucciones de lenguaje de máquina específico tienen una correspondencia uno a uno y no se pueden trasplantar directamente entre diferentes plataformas.

Muchos programas de ensamblaje proporcionan mecanismos de soporte adicionales para el desarrollo de programas, control de ensamblaje y depuración auxiliar. Algunas herramientas de programación en lenguaje ensamblador a menudo proporcionan macros, que también se denominan macroensambladores.

El lenguaje ensamblador no se usa tan ampliamente en programación como la mayoría de los demás lenguajes de programación. En las aplicaciones reales actuales, generalmente se usa en operaciones de hardware de bajo nivel y situaciones exigentes de optimización de programas. Los controladores, los sistemas operativos integrados y los programas en tiempo real requieren lenguaje ensamblador. Introducción básica Nombre chino: Lenguaje ensamblador Nombre extranjero: Lenguaje ensamblador Materia: Ingeniería de software Año de creación: Década de 1950 Método de compilación: Historia del desarrollo del ensamblador, características del lenguaje, características generales, ventajas, desventajas, composición del lenguaje, instrucciones de transferencia de datos, números enteros y lógica Instrucciones de operación , instrucciones de cambio, instrucciones de operación de bits, instrucciones de configuración de condiciones, instrucciones de transferencia de control, instrucciones de operación de cadenas, instrucciones de entrada y salida, tecnologías relacionadas, ensambladores, entornos de compilación, perspectivas de desarrollo, aplicaciones prácticas, libros de texto clásicos, procesadores x86, ARM y microcontroladores, desarrollo historia Hablando del surgimiento del lenguaje ensamblador, primero debemos hablar del lenguaje máquina. El lenguaje de máquina es una colección de instrucciones de máquina. En pocas palabras, las instrucciones de la máquina son comandos que una máquina puede ejecutar correctamente. La instrucción de máquina de una computadora electrónica es una secuencia de números binarios. La computadora lo convierte en una serie de niveles altos y bajos para que los dispositivos electrónicos de la computadora puedan funcionar para realizar operaciones. La computadora mencionada anteriormente se refiere a una máquina que puede ejecutar instrucciones de máquina y realizar cálculos. Este es el concepto de las primeras computadoras. En nuestras PC de uso común, hay un chip para completar las funciones de la computadora mencionadas anteriormente. Este chip es lo que solemos llamar CPU (Unidad Central de Procesamiento). Cada microprocesador, debido a diferencias en el diseño del hardware y la estructura interna, necesita ser controlado con pulsos de diferentes niveles para que funcione. Por tanto, cada microprocesador tiene su propio conjunto de instrucciones de máquina, que es el lenguaje de máquina. La programación temprana utilizaba lenguaje de máquina. Los programadores escribirían códigos de programa compuestos por números 0 y 1 en cintas de papel o tarjetas, con 1 perforado y 0 sin perforar, y luego ingresarían el programa en la computadora a través de una máquina de cinta de papel o de tarjetas para realizar el cálculo. Dicho lenguaje de máquina se compone de 0 y 1 puros, lo cual es muy complejo, incómodo de leer y modificar y propenso a errores. Los programadores pronto descubrieron los problemas que causaba el uso de lenguajes de máquina. Eran difíciles de identificar y recordar, lo que traía obstáculos al desarrollo de toda la industria, por lo que nació el lenguaje ensamblador. El cuerpo principal del lenguaje ensamblador son las instrucciones ensambladoras. La diferencia entre instrucciones de montaje e instrucciones de máquina radica en la representación de las instrucciones. Las instrucciones de montaje son instrucciones de máquina escritas en un formato fácil de recordar. Operación: el contenido del registro temporal BX se envía a AX 1000100111011000? Instrucciones de máquina mov?ax, instrucciones de ensamblaje de bx Después de eso, los programadores usan instrucciones de ensamblaje para escribir programas fuente. Sin embargo, las computadoras solo pueden entender las instrucciones de la máquina, entonces, ¿cómo se hace que la computadora ejecute el programa escrito por el programador usando instrucciones de ensamblaje? En este momento, necesita un programa de traducción que pueda convertir instrucciones de ensamblaje en instrucciones de máquina. A dicho programa lo llamamos compilador. Los programadores escriben programas fuente en lenguaje ensamblador y luego usan un compilador ensamblador para compilarlos en código de máquina, que finalmente es ejecutado por la computadora. Proceso de trabajo Características del lenguaje El lenguaje ensamblador es un lenguaje de programación orientado directamente al procesador (Processor). El procesador funciona bajo el control de instrucciones. Cada instrucción que el procesador puede reconocer se denomina instrucción de máquina.

Cada procesador tiene su propio conjunto de instrucciones que puede reconocer, llamado conjunto de instrucciones. Cuando el procesador ejecuta instrucciones, toma diferentes acciones según diferentes instrucciones y completa diferentes funciones. No solo puede cambiar su propio estado de funcionamiento interno, sino también controlar el estado de funcionamiento de otros circuitos periféricos. Otra característica del lenguaje ensamblador es que el objeto que opera no son datos específicos, sino un registro o memoria temporal, es decir, trata directamente con registros y memorias temporales. Es por eso que la velocidad de ejecución del lenguaje ensamblador es más rápida que la de otros. El lenguaje es rápido, pero también complica la programación, porque dado que los datos se almacenan en un registro o memoria temporal, debe haber un método de direccionamiento, es decir, cómo encontrar los datos requeridos. Por ejemplo, en el ejemplo anterior, no podemos usar datos directamente como un lenguaje de alto nivel, sino que primero recuperamos los datos de los registros temporales correspondientes AX y BX. Esto también aumenta la complejidad de la programación, porque en los lenguajes de alto nivel la parte de direccionamiento del trabajo la realiza el sistema de compilación, mientras que en el lenguaje ensamblador la realizan los propios programadores, lo que simplemente aumenta el grado de complejidad de la programación. , reduciendo la legibilidad del programa. Además, las instrucciones en lenguaje ensamblador son una representación simbólica de las instrucciones de la máquina y los diferentes tipos de CPU tienen diferentes sistemas de instrucción de la máquina y, por lo tanto, diferentes lenguajes ensambladores. Por lo tanto, los programas en lenguaje ensamblador tienen una estrecha relación con las máquinas. Por lo tanto, además de un cierto grado de portabilidad entre programas en lenguaje ensamblador entre CPU de la misma serie y diferentes modelos, los programas en lenguaje ensamblador entre otros tipos diferentes de CPU (como minicomputadoras y microcomputadoras, etc.) no se pueden portar. Por ejemplo, los programas en lenguaje ensamblador son menos versátiles y portátiles que los programas en lenguaje de alto nivel. Precisamente porque el lenguaje ensamblador tiene la característica de "dependencia de la máquina", cuando los programadores escriben programas en lenguaje ensamblador, pueden organizar de manera totalmente racional varios recursos dentro de la máquina para que siempre estén en uso óptimo. El programa escrito de esta manera tiene un código de ejecución corto y una velocidad de ejecución rápida. El lenguaje ensamblador es uno de los diversos lenguajes de programación que tiene la relación más cercana y directa con el hardware, y también es el más eficiente en términos de tiempo y espacio. Es uno de los cursos profesionales requeridos en tecnología de aplicaciones informáticas en las universidades y. Las universidades desempeñan un papel importante en la capacitación de los estudiantes para que dominen la tecnología de programación y se familiaricen con el funcionamiento de la computadora y la tecnología de depuración de programas. Dependencias de la máquina Este es un lenguaje de bajo nivel orientado a la máquina, generalmente diseñado específicamente para una computadora o familia de computadoras en particular. Debido a que es una representación simbólica de instrucciones de máquina, diferentes máquinas tienen diferentes lenguajes ensambladores. El uso del lenguaje ensamblador puede estar orientado a la máquina y hacer un mejor uso de las características de la máquina, lo que da como resultado programas de mayor calidad. 2. El lenguaje ensamblador de alta velocidad y alta eficiencia mantiene las ventajas del lenguaje de máquina, es directo y simple y puede acceder y controlar de manera efectiva varios dispositivos de hardware de computadora, como discos, memorias, CPU, puertos de E/S, etc. Ocupa menos memoria y tiene una velocidad de ejecución rápida. Es un lenguaje de programación eficiente. 3. La complejidad de la escritura y la depuración se debe a que el hardware se controla directamente y las tareas simples también requieren muchas declaraciones en lenguaje ensamblador. Por lo tanto, la programación debe ser integral, considerar todos los problemas posibles e implementar y utilizar racionalmente varios recursos del cuerpo de software y hardware. Esto inevitablemente aumenta la carga para los programadores. De manera similar, al depurar un programa, una vez que hay un problema con el funcionamiento del programa, es difícil encontrarlo. Ventajas 1. Debido a que los programas diseñados en lenguaje ensamblador eventualmente se convierten en instrucciones de máquina, pueden mantener la consistencia del lenguaje de máquina, son directos y simples y pueden acceder y controlar varios dispositivos de hardware de computadora, como discos, como instrucciones de máquina y memoria. , CPU, puertos de E/S, etc. Usando lenguaje ensamblador, puede acceder a todos los recursos de software y hardware accesibles. 2. El código de destino es corto, ocupa menos memoria y tiene una velocidad de ejecución rápida. Es un lenguaje de programación eficiente. A menudo se usa junto con lenguajes de alto nivel para mejorar la velocidad de ejecución y la eficiencia del programa. Compensa las deficiencias de los lenguajes de alto nivel en el control de hardware. Aplicar Muy extenso. Desventajas 1. El lenguaje ensamblador está orientado a la máquina y se encuentra en la parte inferior de toda la jerarquía de lenguajes informáticos. Por lo tanto, se considera un lenguaje de bajo nivel y generalmente está diseñado especialmente para una computadora o serie de computadoras específicas.

Diferentes procesadores tienen diferentes sintaxis y compiladores de lenguaje ensamblador, y el programa compilado no se puede ejecutar en diferentes procesadores, lo que carece de portabilidad. 2. Es difícil entender la intención de la programación a partir del código en lenguaje ensamblador y la capacidad de mantenimiento es deficiente, incluso si lo es; Completar tareas simples también requiere una gran cantidad de código en lenguaje ensamblador, que es propenso a errores y difícil de depurar 3. Para usar el lenguaje ensamblador, debe tener un buen conocimiento de un determinado procesador y solo se puede optimizar para un específico; La eficiencia de la arquitectura y el procesador es muy baja y el ciclo es largo y monótono. Instrucciones de transferencia de datos de composición de lenguaje Esta parte de las instrucciones incluye instrucciones generales de transferencia de datos MOV, instrucciones de transferencia condicional CMOV, instrucciones de operación de pila PUSH/PUSHA/PUSHAD/POP/POPA/POPAD, instrucciones de intercambio XCHG/XLAT/BSWAP, selector de descriptor de dirección o segmento Transmitir comandos LEA/LDS/LES/LFS/LGS/LSS, etc. Tenga en cuenta que CMOV no es una instrucción específica, sino un grupo de instrucciones, que incluye una gran cantidad de instrucciones, que se utiliza para decidir si se realiza una operación de transferencia específica en función de ciertos estados de bits del registro EFLAGS. Instrucciones de operación lógica y de números enteros Esta parte de las instrucciones se utiliza para realizar operaciones aritméticas y lógicas, incluidas instrucciones de suma ADD/ADC, instrucciones de resta SUB/SBB, instrucciones de suma INC, instrucciones de resta DEC, instrucciones de operación de comparación CMP, instrucciones de multiplicación MUL/IMUL , Instrucciones de división DIV/IDIV, instrucciones de extensión de signos CBW/CWDE/CDQE, instrucciones de ajuste decimal DAA/DAS/AAA/AAS, instrucciones de operación lógica NOT/AND/OR/XOR/TEST, etc. Instrucciones de desplazamiento Estas instrucciones se utilizan para mover operandos de registro o de memoria un número específico de veces. Incluyendo la instrucción de desplazamiento lógico a la izquierda SHL, instrucción de desplazamiento lógico a la derecha SHR, instrucción de desplazamiento aritmético a la izquierda SAL, instrucción de desplazamiento aritmético a la derecha SAR, instrucción de desplazamiento circular a la izquierda ROL, instrucción de desplazamiento circular a la derecha ROR, etc. Instrucciones de operación de bits Estas instrucciones incluyen instrucciones de prueba de bits BT, instrucciones de configuración y prueba de bits BTS, instrucciones de prueba y restablecimiento de bits BTR, instrucciones de prueba y negación de bits BTC, instrucciones de escaneo hacia adelante de bits BSF, instrucciones de escaneo hacia atrás de bits BSR, etc. La instrucción de configuración de condiciones no es una instrucción específica, sino un grupo de instrucciones, que incluye aproximadamente 30 instrucciones, que se utilizan para configurar un registro temporal de 8 bits o un operando de memoria en función de ciertos estados de bits del registro EFLAGS. Como SETE/SETNE/SETGE, etc. Instrucciones de transferencia de control Esta parte incluye instrucciones de transferencia incondicional JMP, instrucciones de transferencia condicional J /JCXZ, instrucciones de bucle LOOP/LOOPE/LOOPNE, instrucciones de llamada a procedimiento CALL, instrucciones de retorno de subproceso RET, instrucciones de interrupción INTn, INT3, INTO, IRET, etc. Tenga en cuenta que J es un grupo de instrucciones, que incluye muchas instrucciones, que se utiliza para decidir si se transfiere en función de ciertos estados de bits del registro EFLAGS. INT n es una instrucción de interrupción suave y n puede ser un número entre 0 y 255, que se utiliza para Indica; el número del vector de interrupción. Las instrucciones de operación de cadenas se utilizan para operar cadenas de datos, incluidas las instrucciones de transferencia de cadenas MOVS, las instrucciones de comparación de cadenas CMPS, las instrucciones de escaneo de cadenas SCANS, las instrucciones de carga de cadenas LODS y las instrucciones de guardado de cadenas STOS. Estas instrucciones pueden usar selectivamente REP/ Los prefijos REPE/REPZ. /REPNE y REPNZ operan consecutivamente. Instrucciones de entrada y salida Estas instrucciones se utilizan para intercambiar datos con dispositivos periféricos, incluidas las instrucciones de entrada de puerto IN/INS y las instrucciones de salida de puerto OUT/OUTS. Instrucciones auxiliares de lenguaje de alto nivel Estas instrucciones brindan comodidad a los compiladores de lenguajes de alto nivel, incluida la instrucción ENTER para crear un marco de pila y la instrucción LEAVE para liberar el marco de pila.

Esta parte de las instrucciones de control y privilegios incluye la instrucción de no operación NOP, la instrucción de apagado HLT, la instrucción de espera WAIT/MWAIT, la instrucción de escape ESC, la instrucción de bloqueo del bus LOCK, la instrucción de verificación de rango de memoria BOUND, la tabla de descriptores globales instrucción de operación LGDT/SGDT, instrucciones de operación de tabla de descriptores de interrupción LIDT/SIDT, instrucciones de operación de tabla de descriptores locales LLDT/SLDT, instrucción de carga de valor límite de segmento de descriptor LSR, instrucción de lectura de derecho de acceso de descriptor LAR, instrucción de operación de registro de tarea LTR/STR, solicitud de nivel de privilegio instrucción de ajuste ARPL, instrucción de borrado de bandera de conmutación de tareas CLTS, instrucción de transferencia de datos de registro de control y registro de depuración MOV, instrucción de control de caché de alta velocidad INVD/WBINVD/INVLPG, instrucciones de lectura y escritura de registro temporal relacionadas con el modelo RDMSR/WRMSR, instrucción de adquisición de información del procesador CPUID, instrucción de lectura de marca de tiempo RDTSC, etc. Instrucciones de punto flotante y multimedia Esta parte de las instrucciones se utiliza para acelerar la operación de datos de punto flotante, así como las instrucciones de datos múltiples de instrucción única (SIMD y su extensión SSEx) que se utilizan para acelerar el procesamiento de datos multimedia. Esta parte de los datos de instrucciones es muy grande y no se puede enumerar uno por uno. Consulte el manual de INTEL. Instrucciones de extensión de máquina virtual Esta parte de las instrucciones incluye INVEPT/INVVPID/VMCALL/VMCLEAR/VMLAUNCH/VMRESUME/VMPTRLD/VMPTRST/VMREAD/VMWRITE/VMXOFF/VMON, etc. Ensamblador de tecnología relacionada Un ensamblador moderno típico construye código objeto interpretando los mnemónicos de la instrucción del lenguaje establecido en el código de operación (OpCode) y analizando nombres simbólicos en direcciones de memoria y otras entidades. El uso de referencias simbólicas es una característica importante de los ensambladores que ahorra el tedioso y lento cálculo de la redirección manual después de modificar el programa. Básicamente, simplemente convierte el código de máquina en algunas letras y luego reemplaza las letras del comando de entrada con un código de máquina oscuro durante la compilación. Entorno de compilación Un programa simbólico escrito en un lenguaje que no es de máquina, como el lenguaje ensamblador, se denomina programa fuente. La función de un compilador en lenguaje ensamblador es traducir el programa fuente a un programa de destino. El programa de destino es un programa en lenguaje de máquina que, cuando se coloca en una ubicación predeterminada de la memoria, puede ser procesado y ejecutado por la CPU de la computadora. Generalmente hay pocos entornos de depuración para ensamblador y pocos compiladores muy buenos. La elección del compilador depende del tipo de procesador de destino y de la plataforma específica del sistema. En términos generales, un compilador con buenas funciones debería ser muy cómodo de usar, por ejemplo, debería poder organizar formatos automáticamente, resaltar la sintaxis e integrar compilación, vinculación y depuración, lo que lo hace conveniente y práctico. Para las computadoras personales más utilizadas, los compiladores en lenguaje ensamblador que se pueden seleccionar libremente incluyen MASM, NASM, TASM, GAS, FASM, RADASM, etc., pero la mayoría de ellos no tienen funciones de depuración. Si quieres aprender lenguaje ensamblador, Easy Assemble es un compilador ensamblador muy adecuado para principiantes porque tiene un entorno integrado completo. Perspectivas de desarrollo El lenguaje ensamblador es un mnemotécnico para el lenguaje de máquina. Es más fácil de leer, escribir, depurar y modificar que el aburrido código de máquina. Al mismo tiempo, excelentes diseñadores de lenguaje ensamblador han diseñado inteligentemente para hacer que el código ensamblado del lenguaje ensamblador sea mejor que el alto. Lenguaje de alto nivel Tiene ventajas como una velocidad de ejecución más rápida y menos espacio de memoria. Sin embargo, la velocidad de ejecución y la ocupación de espacio del lenguaje ensamblador son para lenguajes de alto nivel y requieren un diseño inteligente, y algunos lenguajes de alto nivel lo tienen. Además, la eficiencia de ejecución del código es muy alta después de la compilación, por lo que esta ventaja se debilita gradualmente. Además, tiene limitaciones obvias cuando la escritura de programas complejos depende del modelo de máquina específico y no puede ser universal ni trasplantarse entre diferentes modelos de máquina. A menudo se dice que el lenguaje ensamblador es un lenguaje de bajo nivel. Esto no significa que deba abandonarse. Por el contrario, el lenguaje ensamblador sigue siendo un lenguaje que los programadores deben comprender en la base de las computadoras (o microcomputadoras). En algunas industrias y campos, el lenguaje ensamblador es indispensable. Si es menor, no será aplicable.

Sin embargo, el campo más importante de las computadoras ahora es el software de TI, que también es lo que a menudo llamamos programación de software. Sin embargo, en manos de programadores expertos, los programas escritos en lenguaje ensamblador tienen una eficiencia operativa y un rendimiento relativamente mayores que los programas escritos en otros lenguajes. El precio es que lleva más tiempo optimizarlo. Si no tiene una base sólida en principios y programación informática, aumentará la dificultad del desarrollo, lo que realmente no vale la pena perder en comparación con el desarrollo de software alrededor de 2010. Ya es una industria de software orientada al mercado. En cuanto a la excelencia y la multiplataforma de los lenguajes de alto nivel, una empresa no puede permitir que un equipo use lenguaje ensamblador para escribir todo. Es mejor que varias veces o incluso docenas de veces. use otros idiomas para completarlo, siempre que el resultado final no sea mejor que escribir en lenguaje ensamblador. Si hay demasiada diferencia, se puede completar primero. Este es un resultado inevitable en la economía de mercado. Sin embargo, hasta ahora, ningún programador se ha atrevido a concluir que no es necesario aprender el lenguaje ensamblador. Al mismo tiempo, algunos diseñadores de lenguaje ensamblador tienen un diseño exquisito. ya separado del desarrollo de software Involúcrate en la programación de electrónica industrial. Para industrias con funciones relativamente pequeñas pero exigentes requisitos de diseño de lenguaje y hardware, como los microcontroladores de 4 bits, debido a su capacidad y cálculo, los ingenieros electrónicos en esta industria generalmente son responsables de desarrollar y diseñar circuitos y control de software. Se utiliza ensamblador y lenguaje C. Solo representan una parte muy pequeña, y los ingenieros de desarrollo electrónico son difíciles de encontrar. En algunas empresas industriales, un ingeniero electrónico central gana más que cualquier otro empleado. Los ingenieros electrónicos son más de diez veces mayores que los programadores. Esta situación se debe a que, aunque hay muchas personas que aprenden ensamblador desde el siglo XXI, no muchas pueden dominarlo realmente. En comparación con los lenguajes de alto nivel, es difícil de aprender, difícil de usar y tiene un alcance de aplicación pequeño. Es simple, es demasiado flexible. Es mucho más difícil para las personas que han aprendido lenguajes de alto nivel aprender ensamblador que para las personas que han aprendido ensamblador al principio. Para aprender lenguajes de alto nivel, es fácil seguir lo simple hasta lo complejo, y es difícil seguir lo complejo hasta lo simple. Para un programador que tenga un conocimiento integral de los principios de las microcomputadoras, el lenguaje ensamblador es un lenguaje obligatorio. Aplicación práctica A medida que los sistemas de software modernos se vuelven cada vez más complejos, han surgido una gran cantidad de lenguajes encapsulados de alto nivel como C/C++ y Pascal/Object Pascal. Estos nuevos lenguajes hacen que el proceso de desarrollo sea más simple y eficiente para los programadores, lo que permite a los desarrolladores de software hacer frente a los requisitos del desarrollo rápido de software. Debido a su complejidad, el lenguaje ensamblador ha ido reduciendo gradualmente sus campos de aplicación. Pero eso no significa que las compilaciones no tengan cabida. Debido a que el ensamblador está más cerca del lenguaje de máquina y puede operar directamente el hardware, el programa generado tiene una mayor velocidad de ejecución y ocupa menos memoria que otros lenguajes, por lo que se usa ampliamente en algunos programas que tienen altos requisitos de puntualidad. Muchos módulos centrales de programas a gran escala y control industrial. Además, aunque hay muchos lenguajes de programación para elegir, el ensamblaje sigue siendo un curso obligatorio para los estudiantes de informática en varias universidades para brindarles una comprensión profunda de cómo funcionan las computadoras. Históricamente, el lenguaje ensamblador fue uno de los lenguajes de programación más populares. Con el crecimiento de la escala del software y los requisitos posteriores para el progreso y la eficiencia del desarrollo de software, los lenguajes de alto nivel han reemplazado gradualmente al lenguaje ensamblador. Pero aun así, los lenguajes de alto nivel no pueden reemplazar completamente el papel del lenguaje ensamblador. Tomemos el núcleo de Linux como ejemplo. Aunque la mayor parte del código está escrito en lenguaje C, inevitablemente se utiliza código ensamblador en algunos lugares clave. Dado que esta parte del código está muy relacionada con el hardware, incluso el lenguaje C será incapaz de hacer su trabajo, mientras que el lenguaje ensamblador puede hacer un buen uso de las fortalezas y evitar las debilidades para maximizar el rendimiento del hardware. En primer lugar, la mayoría de las declaraciones en lenguaje ensamblador corresponden directamente a instrucciones de la máquina. Tienen una velocidad de ejecución rápida, alta eficiencia y un tamaño de código pequeño. Son más útiles en situaciones donde la capacidad de memoria es limitada pero se requiere una respuesta rápida y en tiempo real. como en instrumentación y equipos de control industrial. En segundo lugar, el lenguaje ensamblador se puede utilizar en la parte central del programa del sistema y en las partes que interactúan frecuentemente con el hardware del sistema. Por ejemplo, los segmentos del programa central del sistema operativo, el programa de inicialización del circuito de interfaz de E/S, el programa controlador de bajo nivel del dispositivo externo, así como las subrutinas frecuentemente llamadas, bibliotecas de conexión dinámica, algunos programas de gráficos avanzados, programas de videojuegos, etc. En tercer lugar, el lenguaje ensamblador se puede utilizar en diversos aspectos, como el cifrado y descifrado de software, el análisis y prevención de virus informáticos, así como la depuración de programas y el análisis de errores. Finalmente, al aprender lenguaje ensamblador, puede profundizar su comprensión de cursos como principios informáticos y sistemas operativos.

Al aprender y utilizar el lenguaje ensamblador, podrá percibir, comprender y comprender las funciones lógicas de la máquina. Esto le ayudará a comprender los principios de varios sistemas de software y sentará una base teórica técnica hacia abajo, dominará los principios de los sistemas de hardware; y sentar las bases para la aplicación práctica. Libros de texto clásicos Hay muchos libros de texto en lenguaje ensamblador que cubren varios procesadores. Un recuento aproximado es no menos de cien. Entre tantos libros de texto, los más utilizados se pueden clasificar y enumerar de la siguiente manera: Procesador x86 1. "Lenguaje ensamblador x86: del modo real al modo protegido", escrito por Li Zhong, Electronic Industry Press, 2013-1. Basado en procesador INTEL x86, compilador NASM y máquina virtual BOCHS. El lenguaje ensamblador es el lenguaje del procesador. En este sentido, desde que aprende el lenguaje ensamblador, debe programar directamente para el hardware en lugar de utilizar interrupciones de DOS inexplicables y llamadas API. Este es un libro interesante que no pierde el tiempo calculando aburridos problemas matemáticos. En cambio, le enseña cómo controlar el hardware directamente, mostrar caracteres, leer datos del disco duro, controlar otro hardware, etc. sin recurrir a BIOS, DOS, Windows, Linux o cualquier otro soporte de software. Sabemos que los sistemas operativos de 32 y 64 bits son los convencionales, el modo real y DOS han pasado a la historia, y tanto Linux como Windows funcionan en modo protegido. Este libro habla del modo real al modo protegido de 32 bits, centrándose especialmente en el modo protegido de 32 bits. Leer este libro será muy útil para comprender los principios de funcionamiento de las computadoras y los sistemas operativos modernos. 2. "Lenguaje ensamblador" (segunda edición), escrito por Wang Shuang, Tsinghua University Press, 2013-4-1. Un libro de texto ensamblador basado completamente en el procesador INTEL 8086, el compilador MASM y la plataforma DOS. del procesador 8086 se centra en los modos y no involucra los modos comúnmente utilizados de 32 y 64 bits. Sin embargo, debido a que es fácil de entender, los lectores respondieron bien. 3. "Tutorial de programación en lenguaje ensamblador 80X86", editado por Yang Jiwen y otros, Tsinghua University Press, 1999-3-1 Basado en el procesador INTEL x86, compiladores MASM y TASM, incluido el modo real de 16 bits y el modo protegido de 32 bits. y este último se describe con más detalle. 4. "Programación en lenguaje ensamblador de 32 bits", editado por Qian Xiaojie, Machinery Industry Press, 2011-8-1 Un libro de texto ensamblador basado en el procesador INTEL x86, el compilador MASM y la plataforma WINDOWS. 5. "Principios de lenguaje ensamblador y tecnología de interfaz para microcomputadoras de 16/32 bits", editado por Qian Xiaojie y Chen Tao, Machinery Industry Press, 2005-2-1 Basado en el procesador INTEL x86, analiza los principios básicos y el lenguaje ensamblador de microcomputadoras de 16 bits y tecnología de interfaz, e introdujo tecnologías relacionadas con sistemas de microcomputadoras de 32 bits. 6. "Programación en lenguaje ensamblador Intel" (quinta edición), escrito por Owen (EE. UU.), Electronic Industry Press, 2012-7-1. Un libro de texto ensamblador basado en el procesador INTEL x86, el compilador MASM y la plataforma DOS/WINDOWS. tanto contenido en modo real de 16 bits como contenido en modo protegido de 32 bits. 7. "El arte de programar en lenguaje ensamblador" (segunda edición), escrito por (estadounidense) Hyde, Tsinghua University Press, 2011-12-1 Basado en el procesador INTEL x86, utilizando el ensamblador de lenguaje de alto nivel de fabricación propia del autor ( High Level Assembler, HLA) como herramienta de enseñanza para capturar parcialmente las ventajas y características de los lenguajes de alto nivel. 8. "Lenguaje ensamblador, diseño e interfaz de PC x86" (quinta edición), (EE. UU.) Mazdi, Kausi, Electronic Industry Press, 2011-1-1 Basado en el procesador INTEL x86, ambos de 16 bits. El contenido del modo real también cubre También se introduce el contenido del modo protegido de 32 bits y de 64 bits. ARM y microcontrolador 1. "Programación en lenguaje ensamblador: basada en arquitectura ARM" (segunda edición), editado por Wen Quangang y otros, Beijing University of Aeronautics and Astronautics Press, 2010-8-1 Los procesadores basados ​​en la arquitectura ARM son un libro de texto introductorio para aprender tecnología integrada. 2. "Learning AVR Microcontrollers from Zero Basics", editado por Xu Yimin y otros, Machinery Industry Press, 2011-1-1 Descripción general de los microcontroladores, herramientas de desarrollo para microcontroladores avr, lenguaje c del microcontrolador avr, estructura básica de los microcontroladores atmega16, comando avr El sistema y el sistema de ensamblaje esperan.

3. "51 Tutorial de combate de simulación de microcontroladores basado en Multisim10", editado por Nie Dian y Ding Wei, Electronic Industry Press, 2010-2-1, explica las funciones principales de NI Multisim 10 en la simulación de microcontroladores. 4. "Microcontrolador PIC18: Arquitectura, programación y diseño de interfaz", escrito por Berry (EE. UU.), Tsinghua University Press, 2009-4-1 Los microcontroladores se utilizan ampliamente en automóviles, electrodomésticos, control industrial, equipos médicos, etc. Muchos campos . Este libro toma como ejemplo los microcontroladores de la serie PIC18 de Microchip para explicar de manera integral cómo usar el lenguaje C y el lenguaje ensamblador para programar microcontroladores. 5. "Programación en lenguaje ensamblador CASL", editado por Zhao Lihui, China Electric Power Press, 2002-10-1 El lenguaje ensamblador CASL es un contenido requerido para el nivel de programador senior del examen de competencia y calificación técnica profesional de software informático chino. Este libro es una monografía sobre la programación en lenguaje ensamblador CASL.