Red de conocimiento informático - Conocimiento del nombre de dominio - Solicitud urgente: escriba un programa de adición BCD no comprimido de varios bytes en lenguaje ensamblador. ¡Muchas gracias! ! ! ¡Extremadamente urgente! ! !

Solicitud urgente: escriba un programa de adición BCD no comprimido de varios bytes en lenguaje ensamblador. ¡Muchas gracias! ! ! ¡Extremadamente urgente! ! !

Ajuste según el código del primer piso para satisfacer plenamente sus necesidades.

¿CÓDIGO?SUPUESTOS DEL SEGMENTO:CÓDIGO

X?DB7H, 8H, 9H

Y?DB9H, 8H, 7H

N? EQU$-Y

Z?DBN 1?DUP(0) START:?PUSH?CS POPDS PUSH?CS POPES?;?Realizar el segmento de datos, segmento adicional y código en el mismo segmento MOVCX, N ?El número de bytes se establece en cx MOVBX, 0; ?El registro de dirección base se establece en 0 MOVAH, 0; ?¿Borrar el indicador de préstamo de acarreo? (ASCII? Instrucción de ajuste, el acarreo se almacena en ah) CLC @0: MOVAL, ?Mover el byte bajo del sumando a al ADDAL, Y[BX];?Agregar el byte bajo del sumando ADDAL, AH;?Agregar acarreo MOVAH, 0;?Borrar acarreo CMPAL, 9 JBE@001 ADDAL, 6 ANDAL , 0FH MOVAH, 1;? ¿Código ASCii? Ajuste de suma

@001: MOVZ[BX], AL;?Mover el resultado al byte bajo de la suma INCBX?;?Agregar 1 a la base. registro de dirección LOOP?@ 0?;?Loop ADDBYTE?PTR?Z[BX],AH;?Procesar el bit más alto

@01: LEASI,Z;?Colocar la primera dirección de la suma en? si MOVCX,N 1?; ?Coloque el número de bytes en ?cx CLD @1: LODSB?;?Cargue el byte bajo de la suma en?al CALL?DSPAL;?Llame a la subrutina y muéstrela en forma hexadecimal (en realidad muestra el número bcd) LOOP?@ 1?;?Ciclo MOVAH, 4CH INT21H

=========================== ===

DSPAL?PROC?NEAR PUSH?AX PUSH?BX PUSH?CX PUSH?DX PUSHF MOVCX, 2;?Un byte tiene sólo 2 dígitos del número hexadecimal MOVBX, AX;?Save al? to?bl? Middle

@DSPAL1: RORBL, 1;? ¿Bucle para desplazar bl? hacia la derecha 4 veces?, es decir, mover el bit alto hacia la derecha. , 1 MOVDL, BL;? Colóquelo en ?dl ?MEDIO ANDDL, 0FH?;?Borrar??Bit alto CMPDL,9;?Comparar JA@DSPAL2??Es mayor que?Es decir, ADDDL,30H ? entre?A~F?;?De lo contrario es?0~9, agregue 30H para convertirse en el código ASCii JMP@DSPAL3

@DSPAL2: ADDDL, 37H para convertirse en el código ASCii de A; ~F

@DSPAL3: ¿MOVAH, 2 INT21H LOOP? @DSPAL1?;? ¿Salida de bucle? ¿Mostrar espacio INT21H? POPF POPDX POPCX POPBX POPAX RET

DSPAL?ENDP

CÓDIGO?ENDS ENDSTART