1- Hola mundo
CR EQU 13 LF EQU 0Ah DATOS SEGMENT MENSAJE DB CR,LF,'HOLA MUNDO',CR,LF,'$' DATOS ENDS PILA SEGMENT STACK DB 64 DUP('PILA') PILA ENDS CODIGO SEGMENT HM PROC FAR ASSUME CS: CODIGO,DS:DATOS,SS:PILA MOV AX,DATOS MOV DS,AX LEA DX,MENSAJE MOV AH,9 INT 21H MOV AX, 4C00H INT 21H HM ENDP CODIGO ENDS END HM
Captura de resultado:
2- Uso de constantes
CR EQU 13 LF EQU 10 IMPRIMIR EQU 9 FIN EQU 4C00H DOS EQU 21H DATOS SEGMENT TEXTO DB 'EJEMPLO DEL USO DE CONSTANTES',CR,LF,'$' DATOS ENDS PILA SEGMENT STACK DB 64 DUP ('PILA') PILA ENDS CODIGO SEGMENT ASSUME CS:CODIGO,DS:DATOS,SS:PILA INICIO: MOV AX,DATOS MOV DS,AX MOV DX,OFFSET TEXTO MOV AH,IMPRIMIR INT DOS MOV AX,FIN INT DOS CODIGO ENDS END INICIO
Captura de resultado:
3- Hola mundo con función
CR EQU 13 LF EQU 10 DATOS SEGMENT MENSAJE DB CR,LF,'HOLA MUNDO',CR,LF,'$' DATOS ENDS PILA SEGMENT STACK DB 64 DUP ('PILA') PILA ENDS CODIGO SEGMENT HMF PROC FAR ASSUME CS:CODIGO,DS:DATOS,SS:PILA MOV AX,DATOS MOV DS,AX LEA DX,MENSAJE CALL ESCRIBE MOV AX,4C00H INT 21H HMF ENDP ESCRIBE PROC MOV AH,9 INT 21H RET ESCRIBE ENDP CODIGO ENDS END HMF
Captura de resultado:
4- Lineas en pantalla con procedimiento
CR EQU 13 LF EQU 10 DATOS SEGMENT LINEA1 DB CR,LF,'MANUEL RAMIREZ BONILLA',CR,LF,'$' LINEA2 DB 'TECNOLOGICO DE MATAMOROS',CR,LF,'$' LINEA3 DB 'INGENIERIA EN SISTEMAS COMPUTACIONALES',CR,LF,'$' LINEA4 DB 'SOLTERO :(',CR,LF,'$' DATOS ENDS PILA SEGMENT STACK DB 64 DUP ('PILA') PILA ENDS CODIGO SEGMENT LN PROC FAR ASSUME CS:CODIGO,DS:DATOS,SS:PILA MOV AX,DATOS MOV DS,AX LEA DX,LINEA1 CALL ESCRIBE LEA DX,LINEA2 CALL ESCRIBE LEA DX,LINEA3 CALL ESCRIBE LEA DX,LINEA4 CALL ESCRIBE MOV AX,4C00H INT 21H LN ENDP ESCRIBE PROC MOV AH,9 INT 21H RET ESCRIBE ENDP CODIGO ENDS END LN
Captura de resultado:
5- Programa que limpia pantalla
FIN_4C00H EQU 4C00H DOS_21H EQU 21H BIOS_10H EQU 10H PILA SEGMENT STACK DW 100 DUP('0') PILA ENDS CODIGO SEGMENT CLS PROC FAR ASSUME CS:CODIGO,SS:PILA CALL LIMPIA_PANTALLA MOV AX,FIN_4C00H INT DOS_21H CLS ENDP LIMPIA_PANTALLA PROC NEAR MOV AX,0600H MOV BH,0AH MOV CX,000H INT BIOS_10H RET LIMPIA_PANTALLA ENDP CODIGO ENDS END CLS
Captura de resultado:
6- Programa que controla la posición del cursor
CR EQU 13 LF EQU 10 TECLADO_8 EQU 8 IMPRIMIR_9 EQU 9 FIN_4C00H EQU 4C00H DOS_21H EQU 21H BIOS_10H EQU 10H TAB EQU 09H BELL EQU 07H DATOS SEGMENT RENGLON DB 0 COLUMNA DB 0 MENSAJE DB CR,LF,'POSICION (X,Y), DEL MENSAJE: MANUEL RAMIREZ',CR,LF,'$' DATOS ENDS PILA SEGMENT STACK DW 100 DUP('0') PILA ENDS CODIGO SEGMENT PC PROC FAR ASSUME CS:CODIGO,DS:DATOS,SS:PILA MOV AX,DATOS MOV DS,AX LEA DX,MENSAJE CALL POSICIONA_CURSOR MOV AH,IMPRIMIR_9 INT DOS_21H MOV AX,FIN_4C00H INT DOS_21H PC ENDP POSICIONA_CURSOR PROC NEAR MOV AH,02 MOV BH,00 MOV DH,RENGLON MOV DL,COLUMNA INT BIOS_10H RET POSICIONA_CURSOR ENDP CODIGO ENDS END PC
Captura de resultado:
7- Programa que borra pantalla y posiciona cursor
CR Equ 13 LF EQU 10 TECLADO_8 EQU 8 IMPRIMIR_9 EQU 9 FIN_4C00H EQU 4C00H DOS_21H EQU 21H BIOS_10H EQU 10H TAB EQU 09H BELL EQU 07H DATOS SEGMENT RENGLON DB 0 COLUMNA DB 0 MENSAJE DB CR,LF,"POSICION (X,Y), DEL MENSAJE: Manuel Ramirez" DB "DESPUES DE BORRAR PANTALLA",CR,LF,"$" DATOS ENDS PILA SEGMENT STACK DW 100 DUP("0") PILA ENDS CODIGO SEGMENT CLSP PROC FAR ASSUME CS:CODIGO, DS:DATOS, SS:PILA MOV AX,DATOS MOV DS,AX LEA DX,MENSAJE CALL LIMPIA_PANTALLA CALL POSICIONA_CURSOR MOV AH,IMPRIMIR_9 INT DOS_21H MOV AX,FIN_4C00H INT DOS_21H CLSP ENDP LIMPIA_PANTALLA PROC NEAR MOV AX,0600H MOV BH,0AH MOV CX,000H MOV DX,484FH INT BIOS_10H RET LIMPIA_PANTALLA ENDP POSICIONA_CURSOR PROC NEAR MOV AH,01 MOV BH,00 MOV DH,RENGLON MOV DL,COLUMNA INT BIOS_10H RET POSICIONA_CURSOR ENDP CODIGO ENDS END CLSP
Captura de resultado:
8- Programa que pide 3 cadenas y las muestra en pantalla
TECLADO EQU 8 IMPRIMIR EQU 9 FIN EQU 4C00H DOS EQU 21H BIOS EQU 10H TAB EQU 09H BELL EQU 07H CR EQU 13 LF EQU 10 DATOS SEGMENT NOMBRE DB 30 DUP(32),"$" DIR DB 30 DUP(32),"$" TLF DB 15 DUP(32),"$" MENS1 DB "NOMBRE: $" MENS2 DB "DIRECCION: $" MENS3 DB "TELEFONO: $" ENTERR DB CR,LF,"$" DATOS ENDS PILA SEGMENT STACK DB 64 DUP("PILA") PILA ENDS CODIGO SEGMENT ASSUME CS:CODIGO, DS:DATOS, SS:PILA INICIO: MOV AX,DATOS MOV DS,AX CALL MODO_DE_VIDEO MOV DX,OFFSET MENS1 CALL ESCRIBE MOV SI,OFFSET NOMBRE MOV CX,8 CALL PEDIR CALL SALTO_DE_LINEA MOV DX,OFFSET MENS2 CALL ESCRIBE MOV SI,OFFSET DIR MOV CX,8 CALL PEDIR CALL SALTO_DE_LINEA MOV DX,OFFSET MENS3 CALL ESCRIBE MOV SI,OFFSET TLF MOV CX,10 CALL PEDIR CALL SALTO_DE_LINEA CALL ESCRIBE CALL ESCRIBE CALL ESCRIBE MOV DX,OFFSET NOMBRE CALL ESCRIBE CALL SALTO_DE_LINEA MOV DX,OFFSET DIR CALL ESCRIBE CALL SALTO_DE_LINEA MOV DX,OFFSET TLF CALL ESCRIBE CALL SALTO_DE_LINEA CALL SALIR PEDIR PROC NEAR BUCLE: MOV AH,TECLADO INT DOS MOV[SI],AL MOV AH,2 MOV DL,AL INT DOS INC SI LOOPNZ BUCLE RET PEDIR ENDP ESCRIBE PROC NEAR MOV AH,IMPRIMIR INT DOS RET ESCRIBE ENDP SALTO_DE_LINEA PROC NEAR MOV DX,OFFSET ENTERR CALL ESCRIBE RET SALTO_DE_LINEA ENDP MODO_DE_VIDEO PROC NEAR MOV AX,3 INT BIOS RET MODO_DE_VIDEO ENDP SALIR PROC NEAR MOV AX,FIN INT DOS RET SALIR ENDP CODIGO ENDS END INICIO
Captura de resultado:
9- Programa que cambia los colores del texto y su fondo
CR EQU 13 LF EQU 10 BIOS EQU 10H DOS EQU 21H TEXTO EQU 3 FIN EQU 4C00H DATOS SEGMENT TITULO DB "JUENITO_XD" COLORES DB 01001110B DB 11101111B DB 10110001B 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
Captura de resultado:
10- Muestra un valor binario
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 UN VALOR BINARIO" DB 13,10,13,TAB,TAB,"==================================",13,10,"$" VALOR_ASCII DB "0101010110","$" DATOS ENDS PILA SEGMENT STACK 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 AX,FIN INT DOS RET SALIR ENDS CODIGO ENDS END ASCI
Captura de resultado:
11- Muestra valores numéricos en decimal y hexadecimal
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 EXA 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
Captura de resultado:
12- Conversión de letras a binario
CR EQU 13 LF EQU 10 IMPRIMIR EQU 9 FIN EQU 4C00H 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 AX, FIN INT DOS SALIR ENDP CODIGO ENDS END CONV
Captura de resultado:
13- Números en hexadecimal
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,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 DB 64 DUP('0') PILA ENDS CODIGO SEGMENT CEXA PROC NEAR ASSUME CS:CODIGO,DS:DATOS,SS:PILA 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 AH,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 CEXA
Captura de resultado:
14- Convierte numero ASCII a binario
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 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 BX, 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
Captura de resultado:
15- Convierte numero ASCII a binario (ingresando el numero)
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 DW 6,0,6 DUP (?),"$" M_ENCABEZADO DB 13,10,13,10,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, 0064, 03E8H, 2710H,"$" DATOS ENDS PILA SEGMENT STACK DB 64 DUP('0') PILA ENDS CODIGO SEGMENT CAPT PROC NEAR ASSUME CS:CODIGO,DS:DATOS,SS:PILA 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
Captura de resultado:
Comentarios
Publicar un comentario