Skip to content

Instantly share code, notes, and snippets.

@dutchand
Created February 13, 2021 19:31
Show Gist options
  • Save dutchand/c8fa187786d0b6cb7717c1f31310c331 to your computer and use it in GitHub Desktop.
Save dutchand/c8fa187786d0b6cb7717c1f31310c331 to your computer and use it in GitHub Desktop.
STACK SEGMENT PARA STACK 'STACK'
DB 256 DUP(00H)
STACK ENDS
DATA SEGMENT PARA PUBLIC 'DATA'
ENTRADANUM DB 'ENTRE 20 N',163,'MEROS DE DOS CIFRAS: $'
SALIDAMAYOR DB 'LA MAYOR N',163,'MEROS DE DOS CIFRAS: $'
SALIDAMENOR DB 'LA MENOR N',163,'MEROS DE DOS CIFRAS: $'
SALIDADIF DB 'LA DIFERENCIA ES: $'
CANTNUM EQU 20
ARREGLO DB CANTNUM DUP(?)
MAYOR DB 00H
MENOR DB 00H
NEWLINE DB 0DH,0AH, '$'
;Esta MACRO visualiza en el display una CADENA finaliza en '$'
DISPLAY_CADENA MACRO STRING
PUSH AX
PUSH DX
MOV AH, 09H
MOV DX, OFFSET STRING
INT 21H
POP DX
POP AX
ENDM
;Esta MACRO visualiza en el display un CARACTER
DISPLAY_CHAR MACRO CHAR
PUSH AX
PUSH DX
MOV AH, 02H
MOV DL, CHAR
INT 21H
POP DX
POP AX
ENDM
;Esta MACRO obtiene un CARACTER del teclado y lo visualiza en el display
GET_CHAR MACRO
MOV AH, 01H
INT 21H
ENDM
;Esta MACRO inicializa el SEGMENTO de datos
INICIAR MACRO
MOV AX, DATA
MOV DS, AX
MOV ES, AX
ENDM
;Esta MACRO sale al DOS con codigo de error cero
EXIT MACRO
MOV AX, 4C00H
INT 21H
ENDM
DATA ENDS
CODE SEGMENT PARA PUBLIC 'CODE'
MAIN PROC FAR
ASSUME CS:CODE
INICIAR
ASSUME DS:DATA
ASSUME ES:STACK
DISPLAY_CADENA NEWLINE
DISPLAY_CADENA ENTRADANUM
MOV DI, OFFSET ARREGLO
CLD
MOV CX, CANTNUM
;LLenar EL ARREGLO
CONT:
GET_CHAR
DISPLAY_CHAR' '
STOSB
LOOP CONT
CALL MAYORP
MOV MAYOR, AL
CALL MENORP
MOV MENOR, AL
DISPLAY_CADENA NEWLINE
DISPLAY_CADENA SALIDAMAYOR
;Imprimir la mayor
MOV AH, 02H
MOV DL, MAYOR
INT 21H
DISPLAY_CADENA NEWLINE
DISPLAY_CADENA SALIDAMENOR
;Imprimir la menor
MOV DL, MENOR
INT 21H
DISPLAY_CADENA NEWLINE
DISPLAY_CADENA SALIDADIF
;imprimir la dif.
MOV AL, MAYOR
SUB AL, MENOR
ADD AL, 30H
MOV DL, AL
INT 21H
EXIT
MAIN ENDP
MAYORP PROC NEAR
push cx
push si
mov cx, 20
mov si, offset ARREGLO
mov al, [si]
inc si
Do: cmp al, [si]
jl sw
inc si
loop Do
jmp fin
sw: mov al, [si]
inc si
loop Do
fin: pop si
pop cx
ret
mayorp endp
MENORP PROC NEAR
push cx
push si
mov cx, 20
mov si, offset ARREGLO
mov al, [si]
inc si
Do1:cmp al, [si]
jg sw2
inc si
loop Do1
jmp fin2
sw2: mov al, [si]
inc si
loop Do1
fin2:pop si
pop cx
ret
menorp endp
CODE ENDS
END MAIN
STACK SEGMENT PARA STACK 'STACK'
DB 1024 DUP(00H)
STACK ENDS
DATA SEGMENT PARA PUBLIC 'DATA'
MSG1 DB 'ESTA ACTUANDO AHORA LA INTERRUPCION$'
DATA ENDS
CODE SEGMENT PARA PUBLIC 'CODE'
TRABAJO PROC FAR
ASSUME CS:CODE
MOV AX,DATA
MOV DS,AX
ASSUME DS:DATA
;**** INICIO DEL PROGRAMA ***
CALL INICINT
CALL PRINCIPAL
MOV AH,4CH
INT 21H
TRABAJO ENDP
;Inicio del las subrutinas
;;;;;;;;;;;;;;;;;;;;
INICINT PROC NEAR
MOV AL,1BH;ICW1
OUT 20H,AL
MOV AL,09H;ICW2
OUT 21H,AL
MOV AL,0DH;ICW4
OUT 21H,AL
RET
INICINT ENDP
;;;;;;;;;;;;;;;;;;;;
ATENTING3 PROC NEAR
PUSH DX
PUSH AX
push bx
push cx
MOV AH,9
MOV DX,OFFSET MSG1
INT 21H
MOV AL,20H
OUT 20H,AL
pop cx
pop bx
POP AX
POP DX
IRET
ATENTING3 ENDP
;;;;;;;;;;;;;;;;;;;;
PRINCIPAL PROC NEAR
CLI
MOV AH,35H
MOV AL,09H
INT 21H
PUSH ES
PUSH BX
MOV DX,OFFSET ATENTING3
MOV BX,SEG ATENTING3
MOV DS,BX
MOV AH,25H
MOV AL,09H
INT 21H
STI
N2:IN AL,60H
CMP AL,1CH
JNZ N2
FIN:
IN AL,61H
OR AL,80H
OUT 61H,AL
AND AL,7FH
OUT 61H,AL
POP DX
POP DS
MOV AH,25H
MOV AL,09H
INT 21H
RET
PRINCIPAL ENDP
CODE ENDS
END TRABAJO
@dutchand
Copy link
Author

Slide1
Slide2
Slide3
Slide4
Slide5
Slide6
Slide7
Slide8
Slide9
Slide10
Slide11
Slide12
Slide13
Slide14
Slide15
Slide16

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment