lunes, 17 de junio de 2013

CALCULADORA SIMUPROC

#SimuProc 1.4.3.0
#El siguiente código corresponde a una calculadora que realiza las cuatro operaciones con comas flotantes ejecutada en simuproc.

MSG 'CALCULADORA COMA FLOTANTE': ;Imprimimos menu
MSG '****  MENU  ****'
MSG '1 = SUMA'
MSG '2 = RESTA'
MSG '3 = MULTIPLICACIÓN'
MSG '4 = DIVISIÓN'
MSG
  LDT 'INGRESE SELECCIÓN'; Capturamos por teclado el numero acorde a operacion.
  CMP 80 ;Comparamos  con el # preestablecido en memoria 80, que es 1.
  JEQ 40 ;Si son iguales salte a la memoria 40 ejecute a partir de hay.
         ; de lo contrario ...
  CMP 81 ;Comparamos  con el numero preestablecido en memoria 81, que es 1.
  JEQ 50  ;Si son iguales salte a la memoria 50 ejecute a partir de hay.
        ; de lo contrario ...
  CMP 82  ;Comparamos  con el numero preestablecido en memoria 82, que es 1.
  JEQ 60  ;Si son iguales salte a la memoria 60 ejecute a partir de hay.
        ; de lo contrario ...
  CMP 83  ;Comparamos con el numero preestablecido en memoria 83, que es 1.
  JEQ 70  ;Si son iguales salte a la memoria 70 ejecute a partir de hay.
  ; de lo contrario ...
  MSG 'ERROR DE DIGITACION INTENTELO DE NUEVO';Imprima mensaje de errror
  JMP 0 ;Salta incondicionalmente y presenta nuevamente el menu seleccion,

  ;MENU DE SUMA
#40
MSG 'SUMA'
MSG 'Ingrese numero'
IN AX,1  ; Lee de puerto 1 el teclado y permite que sean numeros flotantes)
         ; esta  instruccion remplaza a °LTD°.
STF 2A   ; Almaceno el numero de 32 bits en 2A y 2B, en 2A quedan los
         ;16 bits mas significativos y en 1B los 16 menos significativos.
MSG 'Ingrese numero'
IN AX,1  ; Capturamos segundo numero y queda en AX.
ADDF 2A  ; Sumamos a AX el numero guardado en 2A.
MSG 'RESULTADO'
OUT 1,AX ; Imprimimos en pantalla el resultado a travez del pto 1.
HLT   ; Termina programa.

;MENU DE RESTA

#50
MSG 'RESTA'
MSG 'Ingrese numero'
IN AX,1
STF 2A
MSG 'Ingrese numero'
IN AX,1
STF 2C ; Almaceno el numero de 32 bits en 2C y 2D,
LDF 2A ; Cargo en AX la memoria 2A.
SUBF 2C ; Resta a AX el valor de 2C
MSG 'RESULTADO'
OUT 1,AX
HLT

;MENU DE MULTIPLICACION
#60
MSG 'MULTIPLICACION'
MSG 'Ingrese numero'
IN AX,1
STF 2A
MSG 'Ingrese numero'
IN AX,1
MULF 2A ; Multiplicacion de AX por lo que hay en 2A.
MSG 'RESULTADO'
OUT 1,AX
HLT

;MENU DE DIVISION
#70
MSG 'DIVISION'
MSG 'Ingrese numero'
IN AX,1
STF 2A
MSG 'Ingrese numero'
IN AX,1
STF 2C
LDF 2A
DIVF 2C ; Division de AX por lo que hay en 2A.
MSG 'RESULTADO'
OUT 1,AX
HLT

; DEFINIMOS VALORES A MEMORIA
#80
0000000000000001   ; Asignamos el valor de 1 a memoria 80
0000000000000010   ; Asignamos el valor de 2 a memoria 81
0000000000000011   ; Asignamos el valor de 3 a memoria 82
0000000000000100   ; Asignamos el valor de 4 a memoria 83