Una colección completa de detalles del lenguaje ensamblador (lenguaje de programación orientado a máquina)

El lenguaje ensamblador es un lenguaje de bajo nivel utilizado en computadoras electrónicas, microprocesadores, microcontroladores u otros dispositivos programables, también conocido como 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 o etiquetas de dirección 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 ensambladores 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 suelen proporcionar macros, también conocidas como macroensambladores.

El lenguaje ensamblador no se usa tan ampliamente en programación como la mayoría de los otros lenguajes de programación. En las aplicaciones prácticas actuales, generalmente se usa en operaciones de hardware de bajo nivel y situaciones exigentes de optimización de programas. Se requiere lenguaje ensamblador para controladores, sistemas operativos integrados y programas que se ejecutan en tiempo real.

Nombre chino: Lenguaje ensamblador mbth: Lenguaje ensamblador Asunto: Ingeniería de software Año de generación: Década de 1950 Modelo de compilación: Proceso de desarrollo ensamblador, características del lenguaje, características generales, ventajas y desventajas, composición del lenguaje, instrucciones de transmisión de datos, entero e instrucciones de operación lógica, 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 E/S, tecnologías relacionadas, ensamblador, entorno de compilación, perspectivas de desarrollo, aplicaciones prácticas, libros de texto clásicos, procesadores x86, ARM y microcontroladores. Cuando se trata de la creación de lenguaje ensamblador, primero debemos hablar del lenguaje máquina. El lenguaje de máquina es una colección de instrucciones de máquina. Las extensiones de instrucciones de la máquina son comandos que la máquina puede ejecutar correctamente. Las instrucciones de la máquina de una computadora electrónica son una serie de números binarios. La computadora convierte esto en una serie de niveles altos y bajos que impulsan y operan la electrónica de la computadora. 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 nuestra PC común, existe un chip para completar las funciones de la computadora mencionada anteriormente. Este chip es lo que solemos llamar CPU (Unidad Central de Procesamiento). Debido a las diferencias en el diseño del hardware y la estructura interna, cada microprocesador necesita ser controlado por pulsos de diferentes niveles para funcionar. 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. El programador imprime el código del programa numerado 0 y 1 en cinta de papel o tarjeta, se perfora 1 y no se perfora 0, y luego el programa se ingresa en la computadora a través de la máquina de cinta de papel o de tarjeta para realizar el cálculo. Este tipo de lenguaje de máquina consta de 0 y 1 puros, lo cual es muy complejo, incómodo de leer y modificar y propenso a errores. Los programadores descubrieron rápidamente los problemas causados ​​por el uso del lenguaje de máquina, que era difícil de distinguir y recordar, lo que traía obstáculos al desarrollo de toda la industria, por lo que surgió 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 forma en que se expresan las instrucciones. Las instrucciones de montaje son un formato escrito fácil de recordar para las instrucciones de la máquina. Operación: Enviar el contenido del registro BX a la instrucción de máquina AX 100100111011000 mov? Instrucciones de ensamblaje Ax, bx A partir de entonces, los programadores usan instrucciones de ensamblaje para escribir programas fuente. Pero la computadora solo puede leer instrucciones de la máquina, entonces, ¿cómo hacer que la computadora ejecute el programa escrito por el programador usando instrucciones de ensamblaje? En este momento, se necesita un programa de traducción que pueda convertir instrucciones de ensamblaje en instrucciones de máquina. Un programa de este tipo se llama 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. Características de los lenguajes de procesos de trabajo El lenguaje ensamblador es un lenguaje de programación orientado directamente al procesador. El procesador funciona bajo el control de instrucciones y cada instrucción que el procesador puede reconocer se denomina instrucción de máquina. Cada procesador tiene un conjunto de instrucciones que reconoce, llamado conjunto de instrucciones. Cuando el procesador ejecuta instrucciones, toma diferentes acciones según diferentes instrucciones para completar diferentes funciones. No solo puede cambiar su 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 registros o memorias, es decir, trata directamente con registros y memorias. Es por eso que el lenguaje ensamblador se ejecuta más rápido que otros lenguajes, pero al mismo tiempo. También hace que la programación sea más compleja, porque dado que los datos se almacenan en registros o memoria, debe haber un método de direccionamiento para encontrar los datos requeridos. Por ejemplo, en el ejemplo anterior, no podemos usar datos directamente como un lenguaje de alto nivel, sino que primero debemos sacar los datos de los registros correspondientes AX y BX. Esto también aumenta la complejidad de la programación, porque en los lenguajes de alto nivel el direccionamiento lo realiza el sistema de compilación, mientras que en el lenguaje ensamblador lo realiza el propio programador, lo que aumenta la complejidad de la programación y reduce la complejidad del programa. legibilidad. Además, las instrucciones en lenguaje ensamblador son representaciones simbólicas de instrucciones de máquina. Los diferentes tipos de CPU tienen diferentes sistemas de instrucción de máquina, por lo que los programas en lenguaje ensamblador están estrechamente relacionados con las máquinas. Por tanto, además de la portabilidad de los programas en lenguaje ensamblador entre CPU de la misma serie y diferentes modelos, los programas en lenguaje ensamblador no se pueden portar entre otros tipos diferentes de CPU (como minicomputadoras y microcomputadoras, la universalidad del ensamblador). programas de idiomas Menos flexibles y portátiles que los programas de idiomas de alto nivel. Es precisamente debido a las características "relacionadas con la máquina" del lenguaje ensamblador que cuando los programadores escriben programas en lenguaje ensamblador, pueden organizar razonablemente 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 lenguajes de programación más estrechamente relacionados, directos y eficientes en tiempo y espacio. Es uno de los cursos profesionales obligatorios para estudiantes de tecnología de aplicaciones informáticas en colegios y universidades. Desempeña un papel importante en la preparación de los estudiantes para que dominen la tecnología de programación y se familiaricen con el funcionamiento de las computadoras y la tecnología de depuración de programas. Características generales: 1. Dependencias de la máquina Un lenguaje de bajo nivel orientado a la máquina, generalmente diseñado 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, aprovechar al máximo las características de la máquina y obtener programas de alta calidad. 2. El lenguaje ensamblador eficiente y de alta velocidad 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, memoria, CPU, puertos de conexión de E/S, etc. , ocupa menos memoria y es un lenguaje de programación eficiente. 3. Complejidad de la programación y depuración Dado que el hardware se controla directamente, las tareas simples también requieren una gran cantidad de declaraciones en lenguaje ensamblador, por lo que al programar es necesario cubrir todos los aspectos, considerar todos los problemas posibles y asignarlos y utilizarlos de manera racional. diversos recursos de software y hardware. Esto inevitablemente aumentará la carga para los programadores. De manera similar, al depurar un programa, es difícil encontrar si hay algún problema con el funcionamiento del programa. Ventajas 1. Debido a que los programas diseñados en lenguaje ensamblador eventualmente se convierten en instrucciones de máquina, la consistencia del lenguaje de máquina se puede mantener, directa y simple, y varios dispositivos de hardware de la computadora, como discos, memoria, CPU y conexiones de E/S, pueden ser accedidos y controlados como instrucciones de la máquina, puertos, etc. Utilizando lenguaje ensamblador, se 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 utiliza junto con lenguajes de alto nivel para mejorar la velocidad de ejecución y la eficiencia de los programas y compensar las deficiencias de los lenguajes de alto nivel en el control de hardware. Es ampliamente utilizado. Desventajas 1. El lenguaje ensamblador está orientado a la máquina y se encuentra en la base de todo el sistema de lenguaje informático. Por lo tanto, se considera un lenguaje de bajo nivel y generalmente está diseñado para una computadora o serie de computadoras específicas. Diferentes procesadores tienen diferentes sintaxis de lenguaje ensamblador y compiladores, y el programa compilado no se puede ejecutar en diferentes procesadores, por lo que carece de portabilidad. 2. Es difícil comprender la intención de la programación a partir del código en lenguaje ensamblador y la capacidad de mantenimiento es deficiente. Incluso el trabajo simple 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 conocer muy bien un determinado procesador y solo se puede optimizar para una arquitectura y un procesador específicos; Entonces el desarrollo La eficiencia es muy baja y el ciclo es largo y monótono.

Esta parte de las instrucciones de transferencia de datos consta de instrucciones generales de transferencia de datos MOV, instrucciones de transferencia condicional CMOV, instrucciones de operación de pila Push/Pusha/Pushad, instrucciones de intercambio XCHG/XLAT/BSWAP, instrucciones de selección de descriptores de dirección o segmento LEA/LDS/LES/LFS. / Compuesto por 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 utilizan para decidir si se realiza una operación de transferencia específica en función del estado de ciertos bits en el registro EFLAGS. Las instrucciones de operación lógica y entera se utilizan para realizar operaciones aritméticas y lógicas, incluidas las instrucciones de suma ADD/ADC, instrucciones de resta SUB/SBB, instrucciones de suma INC, instrucciones de resta DEC, instrucciones de comparación CMP, instrucciones de multiplicación MUL/IMUL e instrucciones de división DIV/ IDIV, instrucciones de extensión de signos CBW/CWDE/CDQE, instrucciones de ajuste decimal DAA/DAS/AAA/AAS y operaciones lógicas. 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. Esta parte de las instrucciones de operación de bits incluye 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. Instrucción de conjunto condicional Esta no es una instrucción específica, sino un grupo de aproximadamente 30 instrucciones que se utilizan para configurar un registro de 8 bits o un operando de memoria en función del estado de ciertos bits en el registro EFLAGS. Como SETE/Setne/Setgui, etc. Esta parte de las instrucciones de transferencia de control incluye instrucciones de transferencia incondicional JMP, instrucciones de transferencia condicional J/JCXZ, instrucciones de bucle LOOP/LOOPE/LOOPNE, instrucciones de llamada a procedimiento RET, instrucciones de interrupción INTn, INT3, INTO, IRET, etc. Tenga en cuenta que j es un grupo de instrucciones que contiene muchas instrucciones y que se utiliza para decidir si realizar una bifurcación en función de algunos 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 para representar la interrupción; número vectorial. Esta parte de las instrucciones de operación de cadenas se utiliza 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 para guardar cadenas STOS. Opcionalmente, estas instrucciones se pueden operar secuencialmente usando los prefijos REP/REPE/REPZ/REPNE y REPNZ. Comandos de E/S Esta parte de los comandos se utiliza para intercambiar datos con dispositivos periféricos, incluidos los comandos de entrada IN/INS del puerto de conexión y los comandos de salida OUT/OUTS del puerto de conexión. Las instrucciones auxiliares de lenguaje de alto nivel 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 parada HLT, WAIT/MWAIT, la instrucción de escape ESC, la instrucción de bloqueo de bus LOCK, la instrucción de verificación de rango de memoria BOUND, la instrucción de operación de la tabla de descriptores globales LGDT /SGDT y la tabla de descriptores de interrupción Instrucciones de operación LIDT/SIDT, instrucciones de operación de la tabla de descriptores locales LLDT/SLDT, instrucción de carga de valor límite del segmento de descriptor LSR, instrucción de lectura de derecho de acceso al descriptor LAR, instrucción de operación de registro de tarea LTR/STR, ajuste de nivel de privilegio de solicitud instrucción ARPL, instrucción de borrado de bandera de cambio de tarea CLTS, registro de control y registro de depuración instrucción de transferencia de datos MOV, instrucción de control de caché INVD/WBINVD/INNVLPG, instrucciones de lectura y escritura de registros relacionados 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. Las instrucciones de punto flotante y multimedia se utilizan para acelerar la operación de datos de punto flotante, y las instrucciones de datos múltiples de instrucción única (SIMD y su extensión SSEx) se utilizan para acelerar el procesamiento de datos multimedia. Esta parte de los datos de instrucciones es demasiado grande para enumerarla una por una. Consulte el manual de INTEL.

Las instrucciones para las extensiones de máquinas virtuales incluyen invept/invvpid/VM call/VM clear/VM launch/VM resume/vmptrld/vmptrst/VM read/VM write/vmxoff/vmon, etc. Técnicas relacionadas Ensamblador Un ensamblador moderno típico construye código objeto desde mnemónicos hasta códigos de operación y resuelve nombres simbólicos en direcciones de memoria y otras entidades. El uso de referencias simbólicas es una característica importante de los programas ensambladores, que puede eliminar la necesidad de realizar cálculos manuales de direcciones tediosos y que consumen mucho tiempo después de modificar el programa. Básicamente, el código de máquina se reemplaza por algunas letras y luego las letras del comando de entrada se reemplazan por códigos de máquina oscuros durante la 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. Un programa objeto 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. En términos generales, hay muy pocos entornos de depuración de ensambladores y muy 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 completamente funcional debería ser muy cómodo de usar. Por ejemplo, debería poder organizar formatos automáticamente, resaltar la sintaxis, integrar compilación, vinculación y depuración, lo que lo hace conveniente y práctico. Para las computadoras personales más utilizadas, existen MASM, NASM, TASM, GAS, FASM, radar, etc. , pero la mayoría de ellos no tienen capacidades de depuración. Si está aprendiendo lenguaje ensamblador, Easy Assembly 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 y es más fácil de leer, escribir, depurar y modificar que el aburrido código de máquina. Al mismo tiempo, los excelentes diseñadores de lenguaje ensamblador utilizan un diseño inteligente para hacer que el código compilado se ejecute más rápido y ocupe menos espacio de memoria que los lenguajes de alto nivel. Sin embargo, la velocidad de ejecución y la ocupación de espacio del lenguaje ensamblador son específicas de los lenguajes de alto nivel y requieren un diseño inteligente. Además, la eficiencia de ejecución del código compilado de algunos lenguajes de alto nivel también es muy alta, por lo que esta ventaja se debilita gradualmente. . Además, escribir programas complejos tiene limitaciones obvias. El lenguaje ensamblador depende del modelo específico, por lo que no es universal y no se puede trasplantar entre diferentes modelos. La gente suele decir que el lenguaje ensamblador es un lenguaje de bajo nivel, pero esto no significa que deba abandonarse el lenguaje ensamblador. Por el contrario, el lenguaje ensamblador sigue siendo el lenguaje que los programadores de computadoras (o microcomputadoras) de bajo nivel deben comprender. En algunas industrias y campos, el montaje es esencial e inapropiado. Sin embargo, el campo más grande de computadoras en la actualidad es el software de TI, que es lo que a menudo llamamos programación de software de aplicaciones informáticas. En manos de programadores expertos, los programas escritos en lenguaje ensamblador se ejecutan de manera más eficiente y funcionan mejor que los programas escritos en otros lenguajes, pero a costa de un mayor tiempo de optimización. Si la base de los principios y la programación informática no es sólida, aumentará la dificultad del desarrollo y la ganancia superará la pérdida. En comparación con el desarrollo de software antes y después de 2010, se ha convertido en una industria de software orientada al mercado. Sumado a la excelencia y la naturaleza multiplataforma de los lenguajes de alto nivel, es imposible para una empresa tener un equipo que escriba todo en lenguaje ensamblador, lo que llevaría varias veces o incluso docenas de veces más tiempo. Es mejor hacerlo en otros idiomas. Siempre que el resultado final no sea mucho peor que el escrito en lenguaje ensamblador, se puede completar primero. Este es el resultado inevitable de una economía de mercado. Sin embargo, hasta ahora ningún programador se ha atrevido a concluir que no es necesario aprender lenguaje ensamblador. Al mismo tiempo, el lenguaje ensamblador es un lenguaje de programación orientado a máquinas, y algunos programadores ensambladores bien diseñados abandonaron el desarrollo de software y se metieron en la programación de electrónica industrial. Para industrias con funciones relativamente pequeñas pero altos requisitos para el diseño de lenguajes en hardware, como los microcontroladores de 4 bits, los ingenieros electrónicos en esta industria generalmente son responsables de desarrollar y diseñar circuitos y control de software debido a su capacidad y cálculo. El lenguaje de desarrollo principal es el ensamblador y el lenguaje C se usa solo en una pequeña parte. Es difícil encontrar ingenieros de desarrollo electrónico. En algunas empresas industriales, a los ingenieros electrónicos principales se les paga más que a cualquier otro empleado. En comparación, el salario medio de un ingeniero electrónico es más de diez veces mayor que el de un programador. Esta situación se debe a que desde el siglo XXI, aunque mucha gente ha aprendido a ensamblar, no mucha gente realmente puede dominarlo. En comparación con los lenguajes de alto nivel, es difícil de aprender, de usar y tiene un ámbito de aplicación reducido.

Aunque simple, es demasiado flexible. Es mucho más difícil para las personas que han aprendido lenguajes de alto nivel aprender ensamblador que cuando aprenden ensamblador por primera vez, pero es fácil para las personas que han aprendido ensamblador aprender lenguajes de alto nivel. Para un programador que comprende plenamente los principios de la microcomputadora, 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 y permiten a los desarrolladores de software cumplir con los requisitos del desarrollo rápido de software. Sin embargo, debido a su complejidad, los campos de aplicación del lenguaje ensamblador se están reduciendo gradualmente. Pero eso no significa que la compilación sea inútil. Debido a que el ensamblador está más cerca del lenguaje de máquina y puede operar directamente el hardware, el programa generado se ejecuta más rápido que otros lenguajes y ocupa menos memoria. Por lo tanto, se usa ampliamente en algunos programas con altos requisitos de puntualidad y es el módulo central de muchos. Grandes programas. Control industrial, etc. Además, aunque hay muchos lenguajes de programación para elegir, el ensamblaje sigue siendo un curso obligatorio para los estudiantes universitarios en informática, lo que permite a los estudiantes comprender profundamente los principios operativos de las computadoras. Históricamente, el lenguaje ensamblador solía ser 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 kernel 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, ni siquiera el lenguaje C podrá hacer frente a ella, mientras que el lenguaje ensamblador puede explotar sus 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 máquina, que tienen las ventajas de una velocidad de ejecución rápida, alta eficiencia y un tamaño de código pequeño. Es útil en situaciones donde la capacidad de almacenamiento es limitada pero se requiere un eco rápido en tiempo real, como instrumentación, equipos de control industrial, etc. En segundo lugar, el lenguaje ensamblador se puede utilizar en las partes centrales de los programas del sistema y en las partes que a menudo tienen que ver con el hardware del sistema. Por ejemplo, los segmentos de programa central del sistema operativo, el programa de inicialización del circuito de interfaz de E/S, los controladores subyacentes de dispositivos externos, así como las frecuentemente llamadas subrutinas, bibliotecas de enlaces dinámicos, algunos programas de dibujo avanzados, programas de juegos electrónicos, etc. En tercer lugar, el lenguaje ensamblador se puede utilizar para cifrar y descifrar software, analizar y prevenir virus informáticos, depurar programas y analizar errores. Finalmente, al aprender lenguaje ensamblador, puede profundizar su comprensión de los principios informáticos y los sistemas operativos. Al aprender y utilizar el lenguaje ensamblador, puede percibir, experimentar y comprender las funciones lógicas de la máquina, sentando una base técnica y teórica para comprender los principios de varios sistemas de software. Baje para dominar los principios de los sistemas de hardware y sentar las bases para aplicaciones prácticas. Hay muchos libros de texto clásicos sobre lenguaje ensamblador que cubren todo tipo de procesadores. Un recuento aproximado es nada menos que cien. Entre tantos libros de texto, los más utilizados se pueden clasificar 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, dado que estás aprendiendo lenguaje ensamblador, debes programar el hardware directamente en lugar de utilizar inexplicables interrupciones de DOS y llamadas API. Este es un libro interesante. No desperdicia espacio calculando algunos aburridos problemas matemáticos. En cambio, le enseña cómo controlar directamente el hardware, mostrar caracteres, leer datos del disco duro y controlar otro hardware sin 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 protegido de 32 bits desde el modo real, con especial atención al modo protegido de 32 bits. Leer este libro será útil para comprender cómo funcionan las computadoras y los sistemas operativos modernos.

2. "Assembly Language" (segunda edición), editado por Wang Shuang, Tsinghua University Press, 2013-4-1, es un libro de texto ensamblador basado en el procesador INTEL 8086, el compilador MASM y la plataforma DOS, principalmente basado en el procesador 8086. El modo real No involucra los modos comúnmente utilizados de 32 y 64 bits, pero es fácil de entender y ha recibido buena respuesta de los lectores. 3. "Tutorial de programación en lenguaje ensamblador 80x86", editado por Yang Jiwen, 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 Esto último se describe en detalle. Programación en lenguaje ensamblador de 4,32 bits, editado por Qian Xiaojie, Machinery Industry Press, 2011-8-1, libro de texto ensamblador basado en el procesador INTEL x86, el compilador MASM y la plataforma WINDOWS. 5. "Principios del lenguaje ensamblador y la tecnología de interfaz de 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 de 16 bits. microcomputadoras, lenguaje ensamblador y tecnología de interfaz, e introdujo tecnologías relacionadas de sistemas de microcomputadoras de 32 bits. 6. "Intel Assembly Language Programming" (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. Contiene 16 Modo real de bits y modo protegido de 32 bits. 7. "El arte de programar en lenguaje ensamblador (segunda edición)", escrito por Hyde (EE. UU.), Tsinghua University Press, 2011-1 basado en el procesador INTEL x86, utilizando el ensamblador de alto nivel (HLA) de fabricación propia del autor como una herramienta de enseñanza Participe, 8. También hablé sobre ARM y MCU 1. "Programación en lenguaje ensamblador: basada en arquitectura ARM" (segunda edición), editado por Wenquan Gang y otros, Beijing University of Aeronautics and Astronautics Press, 2010-8-1 Los procesadores basados ​​en la arquitectura ARM son libros de texto introductorios para aprender tecnología integrada. 2. Microcontrolador avr de base cero, editado por Xu Yimin, Machinery Industry Press, 2011-1, descripción general del microcontrolador avr, herramientas de desarrollo para el microcontrolador avr, lenguaje C del microcontrolador AVR, estructura básica del microcontrolador atmega16, sistema de instrucciones AVR y sistema de ensamblaje , etc. . 3. "51 Tutorial de simulación de microcontroladores basado en Multisim10" explica las funciones principales de NI Multisim 10 en la simulación de microcontroladores. El libro fue editado por Nie Dian, editor jefe, y publicado por Electronic Industry Press, 2010-2-1. 18 microcontrolador Microcontroladores: arquitectura, programación y diseño de interfaz, por Berry, Tsinghua University Press, abril de 2009-1 Los microcontroladores se utilizan ampliamente en muchos campos, como automóviles, electrodomésticos, control industrial y equipos médicos. Este libro toma como ejemplo los microcontroladores de la serie PIC18 de Microchip para explicar de manera integral cómo programar microcontroladores usando lenguaje C y lenguaje ensamblador. 5. "Programación en lenguaje ensamblador" Compilado por Zhao, China Electric Power Press, 2002-10-1 El lenguaje ensamblador es un componente requerido del Examen de calificación técnica profesional de software informático de China y del Examen de nivel de programador senior. Este libro es una monografía sobre la programación en lenguaje ensamblador CASL.