Instrucciones Para Obtener Direcciones

download Instrucciones Para Obtener Direcciones

of 29

Transcript of Instrucciones Para Obtener Direcciones

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    1/29

    LENGUAJE ENSAMBLADOR

    El nico lenguaje que entienden los microprocesadores es el cdigomquina formado por ceros y unos del sistema binario.

    El lenguaje ensamblador expresa las instrucciones de una forma msnatural al hombre a la vez que muy cercana al microprocesador ya quecada una de esas instrucciones se corresponde con otra en cdigomquina.

    El lenguaje ensamblador trabaja con nemnicos que son grupos decaracteres alfanum!ricos que simbolizan las rdenes o tareas a realizar.

    "a traduccin de los nemnicos a cdigo mquina entendible por elmicroprocesador la lleva a cabo un programa ensamblador.

    El programa escrito en lenguaje ensamblador se denomina cdigo fuente#$.asm%. El programa ensamblador proporciona a partir de este &chero elcorrespondiente cdigo mquina que suele tener la extensin $.hex.

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    2/29

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    3/29

    E l f o r m a t o b s i c o d e u n as e n t e n c ia e n l e n g u a j e n s a m b l a d o r e s '

    etiqueta operacin operandocomentario

    (El campo comentario se utiliza para propsitos de documentacin y es opcional.()ampo etiqueta' *na etiqueta debe comenzar con un carcter alfab!tico y puede contener

    hasta 31 caracteres incluyendo'

    "etras de laA a laZ

    +meros del 0 al 9

    "os s,mbolos especiales' - $ . @ %

    +o se puede utilizar un nombre que coincida con una palabra reservada o

    directiva del ensamblador. -i el nombre incluye unpunto entonces elpunto debe ser el primercarcter.

    ()ampo operacin' )ontiene el nemotcnico de la instruccin que es de 2 a 6 caracteres.()ampo operando' )ontiene la posicin o posiciones donde estn los datos que van a ser manipulados(por la instruccin.()ampo comentario' -e utiliza para documentar el cdigo fuente del ensamblador. ebe separarse(del ltimo campo por al menos un espacio e iniciar con ;.

    )uando inicia un comentario en una l,nea !sta deber tener en la primera columna el carcter ;.

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    4/29

    E/E01"( E 12(32404

    .MODEL M!LL

    ."ODE

    #&' (A_) #O"MO* DL+ ,! 5 inicia con el carcter !

    MO* "+ 1/ 5 imprime 67 caracteres

    #&' (LOO#0

    "!LL 'E ("! 5 imprime carcter

    &" DL 5 siguiente carcter del alfabeto

    LOO# #&' (LOO# 5 continua

    MO* !+ !" 5 retorna al DOS

    &' 21

    #&' (!() E&D#

    'E ("! #O"

    MO* !+ /2 5 activa el cdigo de la funcin para sacar "!

    &' 21 5 imprime el carcter que est en DL

    E' ' retorna de este procedimiento

    'E ("! E&D#

    E&D #&' (!()

    PROC y ENDP son directivas para de&nir procedimientos. PROC de&ne el inicio yENDP de&ne el &nal.

    En este ejemplo tenemos 2 procedimientos5 por lo tanto necesitamos indicarle al ensambladorcul debe usar como el procedimiento principal #donde debe el microprocesador iniciar la ejecucinde nuestro programa% "a directiva END indica al ensamblador cual es el procedimiento principal. Elprocedimiento principal puede estar en cualquier lugar del programa.

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    5/29

    INSTRUCCIONES PARAOBTENER DIRECCIONES

    LE!destinoorigen#"oad E9ective 4ddress cargardireccin efectiva%

    )arga la direccin efectiva deloperando origenen destino.

    "E4 4:;=?@ calcular,a la suma =? eintroducir,a el resultado en 4: #y no el contenidode ladireccin apuntada por =? pues eso ser,a un0(A%.

    )omo destino no se puede usar un registro de segmento.

    -i el destino es de B? bits el o9set que se carga es deeste tipo. En modo protegido slo usaremos este ltimopues o9sets de 6C bits carecern de sentido.

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    6/29

    LDdestinoorigen #"oad pointer using - cargarpuntero usando -%Esta instruccin y sus variantes ahorran mucho tiempo einstrucciones en la carga de punteros. origen ser

    siempre memoria conteniendo un puntero es decir unsegmento y un desplazamiento. "a primera palabracorresponde al o9set y la segunda al segmento. El o9setse carga en destino y el segmento en -. -i estamostrabajando en un modo de B? bits el desplazamientoser de B? bits y el segmento de 6C. Existen msinstrucciones una por cada registro de segmento'"E-"D-"3- y "-- #esta ultima se debe de tratar conmucho cuidado%

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    7/29

    "oade9ective address

    instructions

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    8/29

    -F2>+3 4F4 F24+-DE2-

    Gay cinco instrucciones detransferencia de datos de cadena'

    -LOD 5LOaD trin7-'O

    -MO*

    -&

    -O8'

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    9/29

    "(- 5LOaD trin7

    "a instruccin "(- #"(a -tring% en sus versiones"(-< y "(-H se usa para cargar un byte o palabradesde la direccin indicada por -'-> en 4" o 4:. -i elIag de direccin se encuentra a cero -> se incrementaen 6 o ? y si est a 6 se decrementa en 6o ?. e esta forma puede recorrerse la memoria en unou otro sentido.

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    10/29

    1ara poder utilizar "(- es necesario comprender el9a de direccin.-i el DJ7 -> se incrementa en uno para "(-< y dos

    para "(-H #apunta al siguiente byteKpalabra%.-i DJ6 se lee el array en direccin inversa es decir ->se decrementa.4s, por ejemplo podemos ir cargando en el acumuladorel contenido de un array a lo largo de un ciclo paraoperar con !l.

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    11/29

    Dorms of the

    "(- instruction.

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    12/29

    'O #-F(re -tring%

    'O:y 'O#-F(re -tring

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    13/29

    Dorms of the

    -F(- instruction.

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    14/29

    0(A- #0(A -tring%MO*:y MO*#0(A -tring . Aemos ahoraque -> es el Source Indexo ,ndice fuente y >

    el Destination Indexo ,ndice destino. Fras el movimientode datos -> y > son incrementados o decrementadossiguiendo la lgica descrita para "(-. Es admisibleadems la instruccin 0(A- destinoorigen#ambosoperandos en memoria%. El ensamblador emplea losoperandos para determinar si se trata de un 0(A-< o

    0(A-H al codi&car la instruccin correspondiente5adems el operando origen puede llevar un pre&jo desegmento #no as, el destino% en cuyo caso se emplea !seregistro de segmento como origen

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    15/29

    >+- #>nput -tring%>nstruccin no disponible en los microprocesadoresL7LCKL7LL trans&ere un byte palabra o doble

    palabra de datos de un dispositivo de E K - en laposicin de memoria del segmento extra abordadopor el registro >. "a direccin de E K - estcontenida en el registro :. Esta instruccin es tilpara la introduccin de un bloque de datos desdeun dispositivo de E K - externa directamente en la

    memoria

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    16/29

    Dorms of the

    >+- instruction.

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    17/29

    (*F- #(*Fput -tring%>nstruccin no disponible en los microprocesadoresL7LCKL7LL hace transferencias de un byte palabrao doble palabra de datos de la direccin de

    ubicacin de memoria del segmento de datos por el-> a un dispositivo de E K -. El dispositivo de E K -est dirigida por el registro : como lo es con lainstruccin >+-.

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    18/29

    Dorms of the

    (*F- instruction.

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    19/29

    M.N A42>4- >+-F2*))>(+E- E

    F24+-DE2E+)>4 E 4F(- ntruccin ntercam

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    20/29

    ntruccione L!? and !?0 "as instrucciones"4GD y -4GD rara vez se utilizan ya que se handiseOado como puente de instrucciones. Estasinstrucciones permiten al L7LN #y anteriores% seatraducido en softPare L7LC por un programa detraduccin.

    "a instruccin "4GD trans&ere los L bits de la derechade la bandera de registro en el registro 4G.

    "a instruccin -4GD trans&ere el registro 4G en los Lbits de la derecha de la bandera de registro.

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    21/29

    ntruccin 'raducir 5'ranate7-L!'0 )onvierte

    el contenido del registro 4" en un nmero guardadoen una tabla de memoria. Esta instruccin realiza lat!cnica de tabla de consulta directa a menudo seutiliza para convertir un cdigo a otro.

    *na instruccin :"4F aOade primero el contenido de

    4" a

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    22/29

    ntruccin & and O8'0 4 menudo la instruccin que

    se almacena en 2(0 tiene su nmero de puerto &jo de formapermanente debido a la naturaleza de la memoria de slolectura. *na direccin de puerto &jo almacenado en lamemoria 240 se puede modi&car pero tal modi&cacin no seajusta a las buenas prcticas de programacin.

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    23/29

    ntruccin MO* and MO*A0 0(A-: #move and signextend% and 0(AQ: #move and zeroextend%. Estas instruccionesmueven datos y al mismo tiempo lo extienden ya sea signo o cero.

    )uando se extiende cero un nmero la parte ms signi&cativa se llena conceros. 1or ejemplo si un BMG Lbit es cero extendien un nmero de 6Cbits se convierte en 77BMG. Qeroextensin se utiliza a menudo paraconvertir nmeros sin signo de L 6C bits en nmeros sin signo de 6C o B?bits mediante la instruccin 0(AQ:.

    *n nmero es signo extendido cuando su bit de signo se copia en la parte

    ms signi&cativa. si un LMG de L bits se extendi &rmaren un nmero de 6Cbits se hace DDLMG. El bit de signo de un LMG es un 6 que se copia en laparte ms signi&cativa del resultado de signo extendido. Extensin del signoes la ms utilizada para convertir de L 6C bits nmeros con signo a 6C oB? bits con signo nmeros mediante la instruccin 0(A-:.

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    24/29

    ntruccin :!#0 #

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    25/29

    ntruccin "MO*0 #)onditional move% "a clase de

    instruccin )0(A #movimiento condicional% es nuevapara los conjuntos de instrucciones 1entium 1ro)ore?.Gay muchas variaciones de la instruccin )0(A.

    Estas instrucciones mueven los datos slo si lacondicin es verdadera.

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    26/29

    ebido a que esta es una nueva instruccin no sepuede utilizar con el ensamblador a menos que elsPitch .CLC se aOada al programa

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    27/29

    M.C 1re&jo reemplazo de

    segmento #override pre&x%

    Rue puede aOadirse a casi cualquier instruccin encualquier modo de direccionamiento de memoria permite

    que el programador se desv,e del segmentopredeterminado.

    Es un byte adicional que aOade la parte delantera de unainstruccin para seleccionar un registro de segmentoalternativo. 4cerca de las nicas instrucciones que no

    pueden tener el pre&jo son las instrucciones de salto y dellamadas que deben utilizar el registro de segmento decdigo para la generacin de direcciones. El reemplazo desegmento tambi!n se utiliza para seleccionar lossegmentos D- y 3- en el L7 BLC a trav!s de losmicroprocesadores )ore?.

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    28/29

    1reguntas( S)uales son las M partes que integran una

    instruccin en lenjuage ensambladorT

    ( S-e pueden usar palabras reservadas en el campoetiquetaT

    ( S)mo inIuye en D #irection Dlag% en lasinstrucciones de transferencia de cadenasT

    ( S)ul es la funcin de la instruccin de intercambio#:)G3%T

    ( SRu! sucede si las condiciones son falsas en )0(AT

    ( SRu! realiza la instruccin

  • 7/25/2019 Instrucciones Para Obtener Direcciones

    29/29