Programa 1: Hola mundo
Resultado:
Programa 2: uso de constantes:
Resultado:
Programa 3: Hola mundo con función
Resultado:
Programa 4: Lineas en pantalla con procedimientos
Resultado:
Programa 5: Programa que limpia pantalla
CR EQU 13 LF EQU 0AH DATOS SEGMENT MENSAJE DB CR, LF, "HOLA MUNDO$" 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
Resultado:
Programa 2: uso de constantes:
CR EQU 13 LF EQU 10 IMPRIMIR EQU 9 FIN EQU 4C00H DOS EQU 21H DATOS SEGMENT TEXTO DB CR, LF, "USO DE CONSTANTES$" 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
Resultado:
Programa 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
Resultado:
Programa 4: Lineas en pantalla con procedimientos
CR EQU 13 LF EQU 10 DATOS SEGMENT LINEA1 DB CR,LF,"AMBROCIO ISAIAS LAUREANO CASTRO",CR,LF,"$" LINEA2 DB "TECNOLOGICO DE MATAMOROS",CR,LF,"$" LINEA3 DB "ING. SISTEMAS COMPUTACIONALES",CR,LF,"$" LINEA4 DB "PREFIERO NO DECIR XD;-;",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
Resultado:
Programa 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
Resultado:
Programa 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",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
Resultado:
Programa 7: Programa que borra pantalla y posiciona el 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: IN THE MORNING" 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
Programa 8: Programa que pide 3 cadenas y las imprime
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
Resultado:
Programa 9: Programa que cambia los colores del texto y de 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
Programa 10:
Programa que imprime una cadena binaria en pantalla
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
Resultado:
Programa 11: Imprime Numeros
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 HEX 91.3 ;" DB 13,10,13,TAB,TAB,"==============================================",13,10,"$" VALOR1 DW 41D,"$" VALOR2 DW 42D,"$" VALOR3 DW 43D,"$" VALOR4 DW 44D,"$" VALOR5 DW 45D,"$" VALOR6 DW 46,"$" VALOR7 DW 47,"$" VALOR8 DW 48,"$" VALOR9 DW 49,"$" VALOR10 DW 50,"$" VALOR11 DW 31H,"$" VALOR12 DW 32H,"$" VALOR13 DW 33H,"$" VALOR14 DW 34H,"$" VALOR15 DW 35H,"$" VALOR16 DW 36H,"$" VALOR17 DW 37H,"$" VALOR18 DW 38H,"$" VALOR19 DW 39H,"$" VALOR20 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,VALOR1 CALL ESCRIBE LEA DX,VALOR2 CALL ESCRIBE LEA DX,VALOR3 CALL ESCRIBE LEA DX,VALOR4 CALL ESCRIBE LEA DX,VALOR5 CALL ESCRIBE LEA DX,VALOR6 CALL ESCRIBE LEA DX,VALOR7 CALL ESCRIBE LEA DX,VALOR8 CALL ESCRIBE LEA DX,VALOR9 CALL ESCRIBE LEA DX,VALOR10 CALL ESCRIBE LEA DX,VALOR11 CALL ESCRIBE LEA DX,VALOR12 CALL ESCRIBE LEA DX,VALOR13 CALL ESCRIBE LEA DX,VALOR14 CALL ESCRIBE LEA DX,VALOR15 CALL ESCRIBE LEA DX,VALOR16 CALL ESCRIBE LEA DX,VALOR17 CALL ESCRIBE LEA DX,VALOR18 CALL ESCRIBE LEA DX,VALOR19 CALL ESCRIBE LEA DX,VALOR20 CALL ESCRIBE CALL SALIR EXA ENDP ESCRIBE PROC MOV AH,09 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
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,SS:PILA,DS:DATOS 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
Resultado:
Programa 13: Números Hexadecimales
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 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
Resultado:
Programa 14: Potencia Binaria
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: Numeros ASCII
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,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 ADCII IMPRESO NOMRALMENTE 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,03E9H,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 CODGIO ENDS END CAPT
Resultado:
Comentarios
Publicar un comentario