EJEMPLO DE CÓDIGO DIVIDIR RESTAR MODO TEXTO
Este código no esta en modo gráfico, está en modo texto, este te permite dividir números hasta de dos dígito, en caso de no tener división exacta, te muestra el cociente y el residuo. Tambien este código te permite restar numeros hasta de dos dígitos, para entender mejor de que se trata el código les dejo un video a continuación.
MACRO CURSOR F,C,texto
PUSH AX
PUSH DX
MOV AH,02H
MOV DH,F
MOV DL,C
INT 10H
mov dx,offset texto
mov ah,09h
int 21h
POP DX
POP AX
ENDM
MACRO COLOR W,X,Y,Z,C
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AX,0600H
MOV BH,C ;color de fondo y letra despues de borrar
MOV CH,W ;inicio de borrar(W,X)
MOV CL,X
MOV DH,Y ;fin de borrar(Y,Z)
MOV DL,Z
INT 10H
POP DX
POP CX
POP BX
POP AX
ENDM
MACRO BORRAR W,X,Y,Z,C
MOV AX,0600H
MOV BH,C ;color de fondo y letra despues de borrar
MOV CH,W ;inicio de borrar(W,X)
MOV CL,X
MOV DH,Y ;fin de borrar(Y,Z)
MOV DL,Z
INT 10H
MOV AH,02H ;posicionar el cursor
MOV DH,W
MOV DL,X
MOV BH,00H ;Pagina 0
INT 10H
ENDM
DATOS SEGMENT
TEXTOM DB " ---------------------------------------------- $"
TEXTOO DB "| |$"
TEXTO1 DB "| UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO |$"
TEXTO2 DB "| ESCUELA PROFESIONAL: INGENIERIA ELECTRONICA |$"
TEXTO3 DB "| CURSO : SISTEMAS DIGITALES I |$"
TEXTO4 DB "| ALUMNO : JOSELITO CALDERON PEREZ |$"
TEXTON DB " ---------------------------------------------- $"
TEXTO5 DB "Presione s para salir o c para continuar:$"
TEXTO6 DB "INGRESE PRIMER NUMERO:$"
TEXTO7 DB "INGRESE SEGUNDO NUMERO:$"
TEXTO8 DB " MENU $"
TEXTOA DB "1) DIVIDIR $"
TEXTOB DB "2) RESTAR $"
TEXTOC DB "3) SALIR $"
TEXTO9 DB "El cociente es:$"
TEXTOX DB "El residuo es :$"
TEXTO10 DB "La resta es:$"
TEXTO11 DB "INGRESE OPCION:$"
TEXTO12 DB " FIN DEL PROGRAMA$"
residuo dB ?
cocien dB ?
NUM1 DB ?
NUM2 DB ?
VAR DB ?
ENDS
PROGRAMA SEGMENT
ASSUME CS:CODIGO, DS:DATOS
INICIO:
MOV AX,DATOS
MOV DS,AX
BORRAR 0,0,19h,54h,9CH
COLOR 13,3,22,50,7CH
CURSOR 13,2,TEXTOM
CURSOR 14,3,TEXTO1 ; MENU1
CURSOR 15,3,TEXTOO
CURSOR 16,3,TEXTOO
CURSOR 17,3,TEXTO2
CURSOR 18,3,TEXTOO
CURSOR 19,3,TEXTO3
CURSOR 20,3,TEXTOO
CURSOR 21,3,TEXTO4
CURSOR 22,2,TEXTON
CURSOR 5,25,TEXTO5
CONTSN:MOV AH,01H
INT 21H
CMP AL,43H
JE INGRESO
CMP AL,53H
JE FIN
CMP AL,44H
JAE FIN ;si es mayo igual salta a fin
CMP AL,42H
JBE FIN ;menor igual salta a fin
CONTSN1:MOV AH,07H
INT 21H
CMP AL,31H
JE DIVISION1
CMP AL,32H
JE RESTA
CMP AL,33H
JE FIN
CMP AL,34H
JAE CONTSN1 ;si es mayo igual salta a fin
CMP AL,30H
JBE CONTSN1 ;menor igual salta a fin
INGRESO:BORRAR 0,0,19h,54h,27H
CURSOR 14,47,TEXTO8 ;MENU 2
CURSOR 16,45,TEXTOA
CURSOR 18,45,TEXTOB
CURSOR 20,45,TEXTOC
CURSOR 4,2,TEXTO11
JMP CONTSN1
DIVISION1:MOV BL,00H
MOV VAR,BL
DIVISION:BORRAR 0,0,19h,54h,27H
CURSOR 12,29,TEXTO6
MOV AH,01H
INT 21H
SUB AL,30H
MOV BH,AL ; primer numero en hexa
MOV AH,01H
INT 21H
SUB AL,30H ;
MOV BL,AL
PUSH BX
MOV BX,00H
CURSOR 14,29,TEXTO7
MOV AH,01H
INT 21H
SUB AL,30H
MOV CH,AL ; segundo numero en hexa
MOV AH,01H
INT 21H
SUB AL,30H
MOV CL,AL ;
POP BX
CMP CX,BX
JA DIVISION
MOV AL,0AH ;MULTIPLICAR POR 10 AL SEGMENTO CH Y SE GUARDA EN EL SEGMENTO AL
MUL BH
ADD BL,AL
MOV NUM1,BL ; NUMERO EN DECIMAL
MOV AL,0AH ;MULTIPLICAR POR 10 AL SEGMENTO CH Y SE GUARDA EN EL SEGMENTO AL
MUL CH
ADD CL,AL
MOV NUM2,CL ; NUMERO EN DECIMAL
MOV AL,VAR
CMP AL,32H
JE SEGUIR
MOV AL,NUM1
MOV CL,NUM2
MOV DX,00H
div CL
mov residuo,AH
MOV cocien,AL
CMP AH,0AH
JAE ACARREO
MOV BX,00H
COLOR 16,28,19,45,4FH
CURSOR 16,29,TEXTOX
MOV DL,residuo
ADD DL,30H
MOV AH,02h ;muestras el numero guardado en memoria,"dl"
INT 21h
MOV BX,00H
COCIENTE:CURSOR 18,29,TEXTO9
MOV DL,cocien
ADD DL,30H
MOV AH,02h ;muestras el numero guardado en memoria,"dl"
INT 21h
MOV AH,07H
INT 21H
JMP INGRESO
ACARREO: MOV AL,AH
MOV AH,00H
AAM
ADD AH,30H
ADD AL,30H
PUSH AX
MOV BX,00H
COLOR 16,28,19,45,4FH
CURSOR 16,29,TEXTOX
POP AX
PUSH AX
MOV DL,AH
MOV AH,02H
INT 21H
POP AX
MOV DL,AL
MOV AH,02H
INT 21H
JMP COCIENTE
RESTA:MOV VAR,32H
JMP DIVISION
SEGUIR:MOV BH,NUM1
MOV CH,NUM2
SUB BH,CH
MOV AX,00H
MOV AL,BH
AAM
PUSH AX
MOV BX,00H
COLOR 17,28,19,43,4FH
CURSOR 18,29,TEXTO10
POP AX
PUSH AX
ADD AH,30H
MOV DL,AH
MOV AH,02H
INT 21H
POP AX
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV AH,07H
INT 21H
JMP INGRESO
FIN: BORRAR 0,0,19H,54h,6FH
CURSOR 12,29,TEXTO12 ;CURSOR EN EL CENTRO
MOV AH,07H
INT 21H
MOV AH,4CH
INT 21H
ENDS
END INICIO
0 Comentarios
Dejame tus dudas o saludame!