jueves, 27 de mayo de 2010

Digitales III – Prof. Mendoza – 4ª Evaluación del Semestre 2006-I

Programa residente, es un protector de pantalla que pinta rombos de afuera hacia el centro de la pantalla, esta bueno, si mal no me equivoco se ejecuta al minuto

   1:                  .MODEL TINY


   2:  CODSEG        SEGMENT PARA


   3:                  ASSUME CS:CODSEG, DS:CODSEG, SS:CODSEG


   4:          ORG 100H


   5:  BEGIN:          JMP CARGADOR


   6:  SALVINT09       DD ?


   7:  SALVINT1C       DD ?


   8:  CONTADOR        DW 1092


   9:  ATRIBUTO        DB ?


  10:  ACTIVADO        DB 0


  11:  PXMAX           DW ?


  12:  PXMIN           DW ?


  13:  PYMAX           DW ?


  14:  PYMIN           DW ?


  15:  TAMA¥O          DW 0


  16:   


  17:  ; RUTINA DE SERVICIO PARA EL TECLADO


  18:  TECLADO:        CLI


  19:                  PUSH ax


  20:                  PUSH bx


  21:                  PUSH cx


  22:                  PUSH dx


  23:                  PUSH sp


  24:                  PUSH bp


  25:                  PUSH si


  26:                  PUSH di


  27:                  PUSHF


  28:                  MOV AH,1


  29:                  INT 16H


  30:                  JZ FINAL


  31:                  CMP ACTIVADO,1


  32:                  JNE AQUI


  33:                  MOV AH,0


  34:                  MOV AL,3


  35:                  INT 10H


  36:  AQUI:           MOV CONTADOR,1092


  37:                  MOV ACTIVADO,0


  38:   


  39:  FINAL:          STI


  40:                  POPF


  41:                  POP di


  42:                  POP si


  43:                  POP bp


  44:                  POP sp


  45:                  POP dx


  46:                  POP cx


  47:                  POP bx


  48:                  POP ax


  49:                  JMP CS:SALVINT09      ;REASUMIR INTERRUPCION 09


  50:   


  51:  ; RUTINA DE SERVICIO PARA EL RELOJ 


  52:  TIMER:          PUSH ax


  53:                  PUSH bx


  54:                  PUSH cx


  55:                  PUSH dx


  56:                  PUSH sp


  57:                  PUSH bp


  58:                  PUSH si


  59:                  PUSH di


  60:                  PUSHF


  61:                  DEC CONTADOR


  62:                  JNZ FINAL


  63:                  CMP ACTIVADO,0


  64:                  JNE SALTO1 


  65:                  MOV ACTIVADO,1


  66:                  


  67:                  MOV AH,0


  68:                  MOV AL,13H


  69:                  INT 10H


  70:  SALTO1:         CALL AJUSTAR


  71:                  MOV CX,PXMAX


  72:                  MOV DX,99


  73:  PINTAR:         CALL PIXEL


  74:                  CMP CX,159


  75:                  JE SALTO2


  76:                  DEC DX


  77:                  LOOP PINTAR


  78:   


  79:  SALTO2:         MOV DX,PYMIN


  80:  PINTAR2:        CALL PIXEL


  81:                  CMP CX,PXMIN


  82:                  JE SALTO3


  83:                  DEC DX


  84:                  LOOP PINTAR2


  85:   


  86:  SALTO3:         MOV CX,PXMAX


  87:                  MOV DX,99


  88:  PINTAR3:        CALL PIXEL


  89:                  CMP CX,159


  90:                  JE SALTO4


  91:                  INC DX


  92:                  LOOP PINTAR3


  93:   


  94:  SALTO4:         MOV DX,PYMAX


  95:  PINTAR4:        CALL PIXEL


  96:                  CMP CX,PXMIN


  97:                  JE SALTO5


  98:                  INC DX


  99:                  LOOP PINTAR4


 100:   


 101:  SALTO5:         ADD TAMA¥O,2


 102:                  CMP TAMA¥O,96


 103:                  JNE SALTO6


 104:                  MOV TAMA¥O,0


 105:   


 106:  SALTO6:         NOP


 107:                  MOV CONTADOR,5


 108:                  INC ATRIBUTO


 109:   


 110:                  POPF


 111:                  POP di


 112:                  POP si


 113:                  POP bp


 114:                  POP sp


 115:                  POP dx


 116:                  POP cx


 117:                  POP bx


 118:                  POP ax


 119:                  JMP CS:SALVINT1C      ;REASUMIR INTERRUPCION 1CH


 120:   


 121:  AJUSTAR:        MOV SI,0


 122:                  ADD SI,TAMA¥O


 123:                  MOV PYMAX,SI


 124:                  MOV SI,199


 125:                  SUB SI,TAMA¥O


 126:                  MOV PYMIN,SI


 127:                  MOV SI,259


 128:                  SUB SI,TAMA¥O


 129:                  MOV PXMAX,SI


 130:                  MOV SI,59


 131:                  ADD SI,TAMA¥O


 132:                  MOV PXMIN,SI


 133:                  RET


 134:   


 135:  PIXEL:          MOV AH,0CH


 136:                  MOV AL,ATRIBUTO


 137:                  MOV BH,0


 138:                  INT 10H


 139:                  RET


 140:   


 141:  CARGADOR:    CLI              ;SE PREVIENEN INT POSTERIORES


 142:   


 143:                  MOV AH,35H            ;SE OBTIENE LA DIRECCION DE LA INT 09H EN ES:BX


 144:                  MOV AL,09H


 145:                  INT 21H


 146:   


 147:                  MOV WORD PTR SALVINT09,BX


 148:                  MOV WORD PTR SALVINT09+2,ES


 149:   


 150:                  MOV AH,35H            ;SE OBTIENE LA DIRECCION DE LA INT 1CH EN ES:BX


 151:                  MOV AL,1CH


 152:          INT 21H


 153:   


 154:                  MOV WORD PTR SALVINT1C,BX


 155:                  MOV WORD PTR SALVINT1C+2,ES


 156:   


 157:                  MOV AH,25H


 158:                  MOV AL,09              ;SE ESTABLECE LA NUEVA DIRECCION PARA LA INT 09H EN BORRADOR


 159:                  LEA DX,CS:TECLADO


 160:                  INT 21H


 161:   


 162:                  MOV AH,25H


 163:                  MOV AL,1CH              ;SE ESTABLECE LA NUEVA DIRECCION PARA LA INT 09H EN BORRADOR


 164:                  LEA DX,CS:TIMER


 165:          INT 21H


 166:   


 167:                  MOV AH,31H        ;PETICION PARA PERMANECER RESIDENTE


 168:          MOV AL,00


 169:          LEA DX,CS:CARGADOR     ;SE FIJA EL TAMAÑO DE LA PARTE RESIDENTE


 170:                  INT 21H


 171:                  STI                     ;SE REESTABLECEN LAS INTERRUPCIONES


 172:  CODSEG          ENDS


 173:                  END BEGIN 


No hay comentarios:

Publicar un comentario