Saltar al contenido principal
LibreTexts Español

2.1: ¿Qué es el lenguaje ensamblador?

  • Page ID
    80636
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)

    El lenguaje ensamblador es un lenguaje de muy bajo nivel, legible por humanos y programable, donde cada instrucción de lenguaje ensamblador corresponde a una instrucción de código de máquina de computadoras. Los programas de lenguaje de ensamblaje se traducen directamente en instrucciones de código de máquina, y cada instrucción de ensamblaje se traduce en una sola instrucción de código de máquina 1.

    Después de haber elegido un formato de dirección básico para la arquitectura, se define el formato del lenguaje ensamblador, denominado Arquitectura de Conjunto de Instrucción (ISA). El siguiente paso es diseñar todo el lenguaje ensamblador que se traducirá y ejecutará en la CPU.

    Los siguientes son los pasos en el diseño de la CPU.

    1. En primer lugar, se diseña el lenguaje ensamblador que se puede utilizar para escribir programas para esta CPU. Este lenguaje se prueba mediante la implementación de programas simples en el lenguaje ensamblador.
    2. Se escribirá una representación de código de máquina para el lenguaje ensamblador. La CPU solo tiene la capacidad de interpretar información que son datos binarios, por lo que el lenguaje ensamblador necesita ser traducido a datos binarios que serán entendidos por la CPU.
    3. La CPU se diseña entonces para ejecutar las instrucciones del código de la máquina.

    Este proceso de diseño del lenguaje, creación del código de máquina para el lenguaje e implementación de la CPU es normalmente iterativo, pero el único producto final de estos pasos se incluirá en esta monografía.

    El primer paso, la creación del lenguaje ensamblador, es el tema de este capítulo.

    Para crear un lenguaje ensamblador existen tres grandes limitaciones al lenguaje que deben definirse.

    1. Es necesario definir la definición de los datos que se tratarán en esta CPU. En lenguajes de nivel superior esto serían tipos, como integer, float o string. En una CPU, los tipos no existen. En cambio, la CPU se ocupa de cuestiones como el tamaño de una palabra en la computadora y cómo se usarán las direcciones de memoria para recuperar datos.
    2. Un conjunto de directivas de ensamblador para controlar el programa ensamblador a medida que se ejecuta. Directivas para definir temas como el tipo de memoria a la que se accede (texto o datos), etiquetas para especificar direcciones en el programa, cómo asignar y almacenar datos del programa y cómo se definen los comentarios.
    3. Se debe definir un conjunto completo de instrucciones del ensamblador.

    La siguiente sección de este capítulo dará algunas advertencias a los programadores provenientes de un lenguaje de nivel superior sobre temas que deben considerar al programar en lenguaje ensamblador. Las 3 secciones posteriores definirán los datos utilizados en el ensamblador, las directivas del ensamblador y las instrucciones del ensamblador.


    1 Normalmente se elimina esta correspondencia uno a uno entre las instrucciones del lenguaje de montaje y las instrucciones del código de máquina. Los lenguajes de ensamblaje definirán pseudo instrucciones que se traducen en múltiples instrucciones de código de máquina. Estas pseudo instrucciones están diseñadas para facilitar la escritura de programas en lenguaje ensamblador. Esta monografía está diseñada para mostrar al lector cómo funciona la CPU, y así cada instrucción en lenguaje ensamblador corresponderá a una sola instrucción de lenguaje de máquina.


    This page titled 2.1: ¿Qué es el lenguaje ensamblador? is shared under a CC BY 4.0 license and was authored, remixed, and/or curated by Charles W. Kann III via source content that was edited to the style and standards of the LibreTexts platform.