Programa 9:
COLORES LETRAS
Código:
CR EQU 13 LF EQU 10 BIOS EQU 10H DOS EQU 21H TEXTO EQU 3 FIN EQU 4C00H DATOS SEGMENT TITULO DB 'GRIS_MO_XD' COLORES DB 01001110B DB 01101111B DB 00110001B DB 01011100B DB 00110001B DB 01011111B DB 01101011B DB 01011100B DB 01101111B DB 01001110B DB 00110001B DATOS ENDS PILA SEGMENT STACK DB 64 DUP('PILA') PILA ENDS CODIGO SEGMENT COLO PROC FAR ASSUME CS: CODIGO, DS: DATOS, SS:PILA MOV AX, DATOS MOV DS, AX MOV AX, TEXTO INT BIOS MOV CX, 11 XOR SI, SI BUCLE: PUSH CX MOV DX, SI ADD DX, 35 MOV DH, 12 CALL COLOCA MOV AL, [SI+OFFSET TITULO] MOV BL, [SI+OFFSET COLORES] CALL COLOR POP CX INC SI LOOPNZ BUCLE MOV AH, 8 INT DOS XOR DX, DX CALL COLOCA MOV AX, FIN INT DOS COLO ENDP COLOR PROC MOV AH, 9 XOR BH, BH INT BIOS RET COLOR ENDP COLOCA PROC MOV AH, 2 XOR BX, BX INT BIOS RET COLOCA ENDP CODIGO ENDS END COLO
Resultado:
Programa 10:
IMPRIME UN VALOR BINARIO
Código:
CR EQU 13 LF EQU 10 IMPRIMIR EQU 9 FIN EQU 4CH DOS EQU 21H TAB EQU 09H BELL EQU 07H DATOS SEGMENT ENCABEZADO DB 13,10,13, TAB, TAB, '=======================' DB 13,10,13, TAB, TAB, 'PROGRAMA QUE IMPRIME UN VALOR BINARIO' DB 13,10,13, TAB, TAB, '========================', 13, 10, '$' VALOR_ASCII DB '010101010101', '$' DATOS ENDS PILA SEGMENT DB 64 DUP('0') PILA ENDS CODIGO SEGMENT ASCI PROC NEAR ASSUME CS:CODIGO, DS:DATOS, SS:PILA MOV AX, DATOS MOV DS, AX LEA DX, ENCABEZADO CALL ESCRIBE LEA DX, VALOR_ASCII CALL ESCRIBE CALL SALIR ASCI ENDP ESCRIBE PROC MOV AH, 9 INT 21H RET ESCRIBE ENDP SALIR PROC NEAR MOV AH, FIN INT DOS RET SALIR ENDP CODIGO ENDS END ASCI
Resultado:
Programa 11:
IMPRIME NÚMEROS
Código:
CR EQU 13 LF EQU 10 IMPRIMIR EQU 9 FIN EQU 4C00H DOS EQU 21H TAB EQU 09H BELL EQU 07H DATOS SEGMENT ENCABEZADO DB 13,10,13, TAB, TAB, '=====================' DB 13,10,13, TAB, TAB, 'PROGRAMA QUE IMPRIME VALORES NUMERICOS DEC Y HEXA 91.3 ;)' DB 13,10,13, TAB, TAB, '======================================', 13,10,'$' VALOR_1 DW 41D, '$' VALOR_2 DW 42D, '$' VALOR_3 DW 43D, '$' VALOR_4 DW 44D, '$' VALOR_5 DW 45D, '$' VALOR_6 DW 46, '$' VALOR_7 DW 47, '$' VALOR_8 DW 48, '$' VALOR_9 DW 49, '$' VALOR_10 DW 50, '$' VALOR_11 DW 31H, '$' VALOR_12 DW 32H, '$' VALOR_13 DW 33H, '$' VALOR_14 DW 34H, '$' VALOR_15 DW 35H, '$' VALOR_16 DW 36H, '$' VALOR_17 DW 37H, '$' VALOR_18 DW 38H, '$' VALOR_19 DW 39H, '$' VALOR_20 DW 40H, '$' DATOS ENDS PILA SEGMENT STACK DB 64 DUP('0') PILA ENDS CODIGO SEGMENT EXA PROC NEAR ASSUME CS:CODIGO, DS:DATOS, SS:PILA MOV AX, DATOS MOV DS, AX LEA DX, ENCABEZADO CALL ESCRIBE LEA DX, VALOR_1 CALL ESCRIBE LEA DX, VALOR_2 CALL ESCRIBE LEA DX, VALOR_3 CALL ESCRIBE LEA DX, VALOR_4 CALL ESCRIBE LEA DX, VALOR_5 CALL ESCRIBE LEA DX, VALOR_6 CALL ESCRIBE LEA DX, VALOR_7 CALL ESCRIBE LEA DX, VALOR_8 CALL ESCRIBE LEA DX, VALOR_9 CALL ESCRIBE LEA DX, VALOR_10 CALL ESCRIBE LEA DX, VALOR_11 CALL ESCRIBE LEA DX, VALOR_12 CALL ESCRIBE LEA DX, VALOR_13 CALL ESCRIBE LEA DX, VALOR_14 CALL ESCRIBE LEA DX, VALOR_15 CALL ESCRIBE LEA DX, VALOR_16 CALL ESCRIBE LEA DX, VALOR_17 CALL ESCRIBE LEA DX, VALOR_18 CALL ESCRIBE LEA DX, VALOR_19 CALL ESCRIBE LEA DX, VALOR_20 CALL ESCRIBE CALL SALIR EXA ENDP ESCRIBE PROC MOV AH, 9 INT 21H RET ESCRIBE ENDP SALIR PROC NEAR MOV AX, FIN INT DOS RET SALIR ENDP CODIGO ENDS END EXA
Resultado:
Programa 12:
CONVERSIÓN ASCII - BINARIOS
Código:
CR EQU 13 LF EQU 10 IMPRIMIR EQU 9 FIN EQU 4CH DOS EQU 21H TAB EQU 09H DATOS SEGMENT ASCII DB 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H' ESPACIO DB CR, LF, '$' BINARIO DB 64 DUP(?), '$' MENSAJE1 DB CR, LF, TAB, 'ANTES DE LA CONVERSION: ', '$' MENSAJE2 DB CR, LF, TAB, 'DESPUES DE LA CONVERSION:', '$' DATOS ENDS PILA SEGMENT STACK 'STACK' DW 128 DUP('P') PILA ENDS CODIGO SEGMENT CONV PROC FAR ASSUME CS:CODIGO, DS:DATOS, SS:PILA MOV AX, DATOS MOV DS, AX LEA DX, MENSAJE1 CALL ESCRIBE LEA DX, ESPACIO CALL ESCRIBE LEA DX, ASCII CALL ESCRIBE LEA DX, ESPACIO CALL ESCRIBE LEA DX, BINARIO CALL ESCRIBE LEA DX, ESPACIO CALL ESCRIBE LEA SI, ASCII LEA DI, BINARIO CALL ASCII2BIN LEA DX, MENSAJE2 CALL ESCRIBE LEA DX, ESPACIO CALL ESCRIBE LEA DX, ASCII CALL ESCRIBE LEA DX, ESPACIO CALL ESCRIBE LEA DX, BINARIO CALL ESCRIBE LEA DX, ESPACIO CALL ESCRIBE CALL SALIR CONV ENDP ASCII2BIN PROC NEAR XOR AX, AX MOV CX, 8 ASCII1: MOV AL, [SI] PUSH CX MOV CX, 8 LOOP_SHIFT: SHL AL, 1 JC BIN_UNO MOV [DI], BYTE PTR '0' JMP CICLO_SHIFT BIN_UNO: MOV[DI], BYTE PTR '1' CICLO_SHIFT: INC DI LOOP LOOP_SHIFT POP CX INC SI LOOP ASCII1 RET ASCII2BIN ENDP ESCRIBE PROC MOV AH, IMPRIMIR INT DOS RET ESCRIBE ENDP SALIR PROC NEAR MOV AH, FIN INT DOS SALIR ENDP CODIGO ENDS END CONVResultado:
Programa 13:
NÚMEROS EN HEXADECIMAL
Código:
CR EQU 13 LF EQU 10 IMPRIMIR EQU 9 FIN EQU 4C00H DOS EQU 21H TAB EQU 09H DATOS SEGMENT ENCABEZADO DB 13, 10, 13, 10, TAB, TAB, '===============================================' DB 13, 10, 13, TAB, TAB, 'PROGRAMA QUE IMPRIME NUMEROS EN HEXADECIMAL' DB 13, 10, 13, TAB, TAB, '=========================================', 13,10,13,10, '$' DATOS ENDS PILA SEGMENT STACK 'STACK' DB 64 DUP ('0') PILA ENDS CODIGO SEGMENT CEXA PROC NEAR ASSUME CS:CODIGO, SS:PILA, DS:DATOS ORG 100H MOV AX, DATOS MOV DS, AX LEA DX, ENCABEZADO CALL ESCRIBE MOV CX, 200H XOR DX, DX CICLO: CALL ESCRIBE_HEX CALL ESCRIBE_CRLF INC DX LOOP CICLO CALL SALIR CEXA ENDP ESCRIBE_HEX PROC NEAR PUSH AX PUSH CX PUSH DX OTRO_DIGITO: PUSH CX MOV CL, 4 ROL DX, CL CALL ESCRIBE_DIGITO_HEX POP CX LOOP OTRO_DIGITO POP DX POP CX POP AX RET ESCRIBE_HEX ENDP ESCRIBE_DIGITO_HEX PROC NEAR PUSH AX PUSH DX AND DX, 0FH CMP DL, 10 JAE ES_MAYOR_A_10 ADD DL, 48 JMP IMPRIME_DIGITO ES_MAYOR_A_10: ADD DL, 55 IMPRIME_DIGITO: MOV AX, 2 INT 21H POP DX POP AX RET ESCRIBE_DIGITO_HEX ENDP ESCRIBE_CRLF PROC NEAR PUSH AX PUSH DX MOV AH, 2 MOV DL, 13 INT 21H MOV DL,10 INT 21H POP DX POP AX RET ESCRIBE_CRLF ENDP ESCRIBE PROC MOV AH, 9 INT 21H RET ESCRIBE ENDP SALIR PROC NEAR MOV AX, FIN INT DOS RET SALIR ENDP CODIGO ENDS END CEXAResultado:
Programa 14:
POTENCIA BINARIO (ASCII - BINARIO)
Código:
CR EQU 13 LF EQU 10 IMPRIMIR EQU 9 FIN EQU 4C00H DOS EQU 21H TAB EQU 09H BELL EQU 07H DATOS SEGMENT ENCABEZADO DB 13, 10, 13, 10, TAB, TAB, '=====================================' DB 13,10,13, TAB, TAB, 'PROGRAMA QUE CONVIERTE UN NUMERO ASCII A BINARIO' DB 13,10,13, TAB, TAB, '===============================================',13,10,'$' VALOR_ASCII DB '33', '$' VALOR_BINARIO DW 0, '$' LONGITUD_ASCII DW 2, '$' POTENCIA_10 DW 00000001B, '$' DATOS ENDS PILA SEGMENT STACK DB 64 DUP('0') PILA ENDS CODIGO SEGMENT POTE PROC NEAR ASSUME CS:CODIGO, DS:DATOS, SS:PILA MOV AX, DATOS MOV DS, AX LEA DX, VALOR_ASCII CALL ESCRIBE MOV BX, 00001010B MOV CX, LONGITUD_ASCII LEA SI, VALOR_ASCII+1 ETIQUETA_1: MOV AL, [SI] AND AX, 000FH MUL POTENCIA_10 ADD VALOR_BINARIO, AX MOV AX, POTENCIA_10 MUL BX MOV POTENCIA_10, AX DEC SI LOOP ETIQUETA_1 LEA DX, ENCABEZADO CALL ESCRIBE LEA DX, VALOR_BINARIO CALL ESCRIBE CALL SALIR POTE ENDP ESCRIBE PROC MOV AH, 9 INT 21H RET ESCRIBE ENDP SALIR PROC NEAR MOV AX, FIN INT DOS RET SALIR ENDP CODIGO ENDS END POTE
Resultado:
Programa 15:
NÚMERO ASCII
Código:
CR EQU 13 LF EQU 10 IMPRIMIR EQU 9 FIN EQU 4C00H DOS EQU 21H TAB EQU 09H BELL EQU 07H TECLADO EQU 8 DATOS SEGMENT NUMERO_BINARIO DW 0, '$' NUMERO_ASCII DB 6, 0, 6 DUP (?), '$' M_ENCABEZADO DB 13,10,13, TAB, '=============================================' DB 13,10,13, TAB, 'PROGRAMA QUE CONVIERTE UN NUMERO ASCII (CAPTURADO) A BINARIO' DB 13,10,13, TAB, '=======================================================', 13, 10,'$' M_ESPACIO DB 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, '$' M_ASCII_ASCII DB 13, 10, 13, 10, 'NUMERO ASCII IMPRESO NORMALMENTE COMO LO HACE UNA PC(EN ASCII)', 13,10,'$' M_BINARIO_ASCII DB 13, 10, 13, 10, 'NUMERO BINARIO (YA CONVERTIDO), ',13,10,' IMPRESO NORMALMENTE COMO LO HACE UNA PC (EN ASCII):', '$' POTENCIA DW 001H, 000AH, 0064H, 03E8H, 2710H, '$' DATOS ENDS PILA SEGMENT STACK 'STACK' DW 128 DUP ('P') PILA ENDS CODIGO SEGMENT CAPT PROC NEAR ASSUME CS:CODIGO, SS:PILA ,DS:DATOS MOV AX, DATOS MOV DS, AX MOV AH, 0AH MOV DX, OFFSET NUMERO_ASCII INT 21H MOV DI, OFFSET NUMERO_ASCII + 1 MOV CX, [DI] MOV SI, OFFSET NUMERO_ASCII + 2 XOR CH, CH MOV DI, OFFSET POTENCIA DEC SI ADD SI, CX XOR BX, BX STD CICLO: LODSB SUB AL, 30H CBW MOV DX, [DI] MUL DX ADD DI, 2 ADD BX, AX LOOP CICLO MOV NUMERO_BINARIO, BX LEA DX, M_ENCABEZADO CALL ESCRIBE LEA DX, M_ASCII_ASCII CALL ESCRIBE LEA DX, NUMERO_ASCII -1 CALL ESCRIBE LEA DX, M_BINARIO_ASCII CALL ESCRIBE LEA DX, NUMERO_BINARIO CALL ESCRIBE LEA DX, M_ESPACIO CALL ESCRIBE CALL SALIR CAPT ENDP ESCRIBE PROC MOV AH, IMPRIMIR INT DOS RET ESCRIBE ENDP SALIR PROC NEAR MOV AX, FIN INT DOS SALIR ENDP CODIGO ENDS END CAPT
Resultado:
Referencia:
No hay comentarios:
Publicar un comentario