Programa en lenguaje ensamblador para encontrar el rango de bytes

Problema: escriba un programa en lenguaje ensamblador que, si un número de entrada BYTE1 se encuentra entre 50H y 80H, lo muestre en la salida PORT2 . Si BYTE1 es inferior a 50H, simplemente imprima 00H en la salida PORT1 . Ejemplos:

Input:  64H
Output: output at PORT2 -->64H
Input:  40H
Output: output at PORT1 -->00H 

Algoritmo –

  1. Cargue el BYTE1 en el acumulador A.
  2. Copie los datos del acumulador al registro B.
  3. Reste los 50H del acumulador (BYTE).
  4. Salta si la resta es negativa.
  5. Si la condición de salto es verdadera, simplemente imprimirá 00H en PORT1.
  6. Si la condición de salto es falsa, BYTE1 será mayor que 50H y, en instrucciones posteriores, también verificará el límite superior 80H de BYTE1 para que todos los números se encuentren entre 50H y 80H y se imprimirán en el PUERTO2.

Programa –

DIRECCIÓN DE MEMORIA MNEMOTÉCNICA COMENTARIO
2000 2002 2003 2004 2007 2008 2009 200A 200B 200C 200D 200E 200F MVI A, BYTE1 MOV B, A SUI 50H JC ELIMINAR MOV A, B SUI 80H JC PANTALLA ELIMINAR:XRA A SALIDA PUERTO1 HLT PANTALLA:MOV A, B SALIDA PUERTO2 HLT [A]<–[BYTE1] [B]<–[A] [A]<–[A-50]H Saltar a ELIMINAR, si CY=1 [A]<–[B] [A]<–[A -80]H Salto a DISPLAY, si CY=1 [A]<–[A Exclusivo O A] muestra el contenido del acumulador en el programa PORT1 Terminación [A]<–[B] muestra el contenido del acumulador en el programa PORT2 terminación
     

Explicación –

  1. MVI A, BYTE1: carga el acumulador A desde BYTE1.
  2. MOV B, A: copia el contenido del acumulador al registro B.
  3. < SUI 50H: > reste 50H del contenido del acumulador (BYTE1) y cárguelo en el acumulador.
  4. JC DELETE: aquí JC es una instrucción de salto con condición de verificación de bandera de acarreo, la bandera de acarreo será 1 si la resta es negativa si la resta es positiva entonces la bandera de acarreo será 0. SUI 50H será positivo si el contenido del acumulador (BYTE1) será mayor o igual a 50H. si CY=0 el resultado es positivo y no se realizará ningún salto.
  5. MOV A, B: copia el contenido del registro B (BYTE1) al acumulador.
  6. SUI 80H: resta el 80H del acumulador. Si el contenido del acumulador será inferior a 80H, el resultado será positivo y saltará a la etiqueta MOSTRAR y mostrará el BYTE en el PUERTO 2 si el número estará en el rango de 50H a 7FH.
  7. Si en el paso 4, JC DELETE verdadero significa que el resultado de la resta será positivo, saltará para eliminar y borrar el contenido del acumulador y mostrar 00H en la salida PORT1.

Publicación traducida automáticamente

Artículo escrito por SURENDRA_GANGWAR y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *