Practica 2 Informatica Basica

download Practica 2 Informatica Basica

of 15

Transcript of Practica 2 Informatica Basica

  • 7/28/2019 Practica 2 Informatica Basica

    1/15

  • 7/28/2019 Practica 2 Informatica Basica

    2/15

    PRCTICA NO. 2

    ARITMETICA PARA BCD Y ASCII

    OBJETIVO:

    Realizar ajustes en operaciones bsicas para formatos en BCD y ASCII en Ensamblador 8086

    RECURSOS:

    Para implementar los ejercicios de programacin en lenguaje ensamblador se utilizarn las siguientes

    herramientas de software:

    Editor: Block de notas, EDIT / NE / cualquier otro que genere archivos ASCII.

    Ensamblador: TASM.EXE

    Enlazador: TLINK.EXESoftware IDE: emu8086.exe

    TEORIA.

    AAA

    Aritmtica

    ASCII Adjust for Addition

    (Ajuste ASCII para suma): AAA cambia el contenido de AL a un nmero decimal no empacado valido con elnibble de alto orden en ceros.

    Banderas afectadas

    AF, CF, OF(no definida), SF(no definida), ZF(no definida), PF(no definida).

    AAD

    Aritmtica

    ASCII Adjust for Divisin

    (Ajuste ASCII para divisin): AAD multiplica el contenido de AH por 10, aade el resultado al contenido del AL yubica dicho resultado en AL.

    Luego, la instruccin pone AH en 0. Esta instruccin se usa antes de dividir nmeros decimales no empacados.

    Banderas afectadas:

    SF, ZF, PF, OF(no definida), AF(no definida), CF(no definida).

  • 7/28/2019 Practica 2 Informatica Basica

    3/15

    AAM

    Aritmtica

    ASCII Adjust for Multiplication

    (Ajuste ASCII para multiplicacin): Despus de multiplicar dos nmeros decimales no empacados, se utiliza

    AAM a fin de corregir el resultado para un nmero decimal no empacado. Para que la instruccin trabaje

    adecuadamente, los nibbles de alto orden de cada nmero multiplicado deben ponerse en 0.

    Banderas afectadas

    SF, ZF, PF, OF(no definida),

    AF (no definida),

    CF (no definida).

    AAS

    Aritmtica

    ASCII Adjust for Subtraction

    (Ajuste ASCII para resta): AAS corrige el resultado de una resta decimal no empacada anterior, de tal forma que

    el valor en AL es un verdadero nmero decimal no empacado.

    Banderas afectadas

    AF, CF, OF(no definida), SF(no definida), ZF(no definida), PF(no definida).

  • 7/28/2019 Practica 2 Informatica Basica

    4/15

    DESARROLLO DE EJERCICIOS.

    1) Abra el emu8086.

    2) Revise la sintaxis de las instrucciones AAA, AAS y DAA en el simulador pulsando la tecla F1 y dando clic en el

    ttulo 8086Instruction set.

    Instruction Operands Description

    AAANooperands

    ASCII Adjust after Addition.Corrects result in AH and AL after addition when working with BCDvalues.

    It works according to the following Algorithm:

    if low nibble of AL > 9 or AF = 1 then:AL = AL + 6AH = AH + 1AF = 1CF = 1elseAF = 0CF = 0in both cases:clear the high nibble of AL.

    Example:MOV AX, 15 ; AH = 00, AL = 0FhAAA ; AH = 01, AL = 05RET

    C Z S O P A

    r ? ? ? ? r

  • 7/28/2019 Practica 2 Informatica Basica

    5/15

    AASNooperands

    ASCII Adjust after Subtraction.Corrects result in AH and AL after subtraction when working with BCDvalues.

    Algorithm:

    if low nibble of AL > 9 or AF = 1 then:

    AL = AL - 6AH = AH - 1AF = 1CF = 1elseAF = 0CF = 0in both cases:clear the high nibble of AL.

    Example:MOV AX, 02FFh ; AH = 02, AL = 0FFhAAS ; AH = 01, AL = 09RET

    C Z S O P A

    r ? ? ? ? r

    DAANooperands

    Decimal adjust After Addition.Corrects the result of addition of two packed BCD values.

    Algorithm:

    if low nibble of AL > 9 or AF = 1 then:AL = AL + 6AF = 1if AL > 9Fh or CF = 1 then:AL = AL + 60hCF = 1

    Example:MOV AL, 0Fh ; AL = 0Fh (15)DAA ; AL = 15hRET

    C Z S O P A

    r r r r r r

  • 7/28/2019 Practica 2 Informatica Basica

    6/15

    3) Minimice la ventana y regrese al emulador, en la barra de men seleccione ascii codes e identifique en la

    tabla de caracteres ASCII los nmeros en ASCII hexadecimal que les corresponde a los nmeros del 0 al 9 y

    antelos a continuacin (al dar clic en cualquier parte de la ventana puede intercambiar entre ver los datos

    ASCII en su correspondiente decimal o hexadecimal):

    4) Digite el PROGRAMA 1 en el simulador: este es un ejemplo de uso de AAA

    PROGRAMA 1

    .model small

    .stack

    .data

    operando1 db 39h

    ; 39h codigo ascii del 9 decimal

    operando2 db 39h

    resultadoascii db 2 dup (?) ;reserva dos byte para el resultado

    .code

    Inicio:

    mov ax, @DATA

    ;indica donde estan los datos que se van a operar

    mov ds, ax

    mov ax,0

    mov al,operando1

    add al,operando2

    aaa ;ajuste ascii despues de sumar 2 bytes ascii

    add ax,3030h

  • 7/28/2019 Practica 2 Informatica Basica

    7/15

    mov resultadoascii, ah

    mov resultadoascii+1,al

    ;----------------------------

    mov dl,resultadoascii

    mov ah,02h

    int 21h

    mov dl,resultadoascii+1

    mov ah,02h

    int 21h

    ;----------------------------

    mov ax,4c00h

    int 21h

    end inicio

    5) D clic sobre EMULATE y abra la ventana de variables (en el botn vars), debera visualizar 3 elementos:

    operando1, operando2 y resultadoascii, seleccione en las opciones de Show as de cada variable, la

    visualizacin ASCII, en lavariable resultadoascii tambin cambie elements a 2.

  • 7/28/2019 Practica 2 Informatica Basica

    8/15

  • 7/28/2019 Practica 2 Informatica Basica

    9/15

    8) Ejecute todo el programa

    9) Observe el contenido de la variable resultadoascii

    10) Modifique el programa anterior poniendo como operandos los nmeros 34h y 32h

    11) Repita el procedimiento de los pasos 5 al 9 y describa las diferencias en los estados del acumulador y lasbanderas AF y CF: en el primer caso ax es 74 y en el 2 es 34, los correspondientes en ascci a los resultados,

    mientras que en AF en el primero es 1 y en el segundo es 0

  • 7/28/2019 Practica 2 Informatica Basica

    10/15

    12) Copie el PROGRAMA 2 que es una aplicacin del ajuste AAS

    PROGRAMA 2

    .model small

    .stack

    .data

    operando1 db 36h ; 36h codigo ascii del 6 decimal

    operando2 db 32h

    resultadoascii db 2 dup (?) ;reserva dos byte para el resultado

    .code

    inicio:

    mov ax, @DATA ;indica donde estan los datos que se van a operar

  • 7/28/2019 Practica 2 Informatica Basica

    11/15

  • 7/28/2019 Practica 2 Informatica Basica

    12/15

    14) Corra el programa paso a paso hasta antes de ejecutar la operacin AAS, observe el estado del acumulador

    y de las banderas, especialmente AF y CF

    15) Ejecute la instruccin de ajuste y observe el estado del acumulador y las banderas en este momento

    especialmente CF y AF

    16) Ejecute todo el programa

  • 7/28/2019 Practica 2 Informatica Basica

    13/15

  • 7/28/2019 Practica 2 Informatica Basica

    14/15

    Investigacin Complementaria

    Investigue Sobre las otras instrucciones de ajuste que tiene el microprocesador 8086: DAS, AAD y AAM

    ADD

    REG, memorymemory, REG

    REG, REG

    memory,

    immediateREG, immediate

    Add.

    Algorithm:

    operand1 = operand1 + operand2

    Example:MOV AL, 5 ; AL = 5

    ADD AL, -3 ; AL = 2

    RETC Z S O P A

    r r r r r r

    DAS No operands

    Decimal adjust After Subtraction.

    Corrects the result of subtraction of two packed BCDvalues.

    Algorithm:

    if low nibble of AL > 9 or AF = 1 then:

    AL = AL - 6 AF = 1

    if AL > 9Fh or CF = 1 then:

    AL = AL - 60h CF = 1

    Example:MOV AL, 0FFh ; AL = 0FFh (-1)

    DAS ; AL = 99h, CF = 1RET

    C Z S O P A

    r r r r r r

  • 7/28/2019 Practica 2 Informatica Basica

    15/15