viernes, 21 de mayo de 2010

Digitales II – Prof. Naranjo

El enunciado de este programa constaba en recibir 12 datos, mostrarlo (des)?ordenados, mostrar el complemento a 2 de los numeros impares, etc…

   1:          ORG 2000H


   2:          LD SP,3DFFH


   3:  INICIO:        LD IX,TIMP


   4:          LD B,12


   5:  CLEAN1:        LD (IX),0


   6:          INC IX


   7:          DJNZ CLEAN1


   8:          LD IX,TNASC


   9:          LD B,12


  10:  CLEAN2:        LD (IX),0


  11:          INC IX


  12:          DJNZ CLEAN2


  13:          CALL CLS


  14:          LD IX,MEN


  15:          LD A,1


  16:          CALL SMS


  17:          LD B,12


  18:          LD IY,TABLA1


  19:  ERROR:        CALL SCAN


  20:          CALL VERIFI


  21:          LD (IY),A


  22:          INC IY


  23:          LD (IY),24H


  24:          CALL MOSTRAR


  25:          CALL SCAN


  26:          CALL VERIFI


  27:          LD (IY),A


  28:          INC IY


  29:          LD (IY),20H


  30:          INC IY


  31:          LD (IY),24H


  32:          CALL MOSTRAR


  33:          DJNZ ERROR


  34:          CALL SCAN


  35:  M1:        CALL CLS


  36:          LD IX,MENU1


  37:          LD A,1


  38:          CALL SMS


  39:          LD IX,OPC1


  40:          LD A,2


  41:          CALL SMS


  42:          LD IX,OPC2


  43:          LD A,3


  44:          CALL SMS


  45:          LD IX,OPC3


  46:          LD A,4


  47:          CALL SMS


  48:  ESPERA:        CALL SCAN


  49:          CP 31H


  50:          JP Z,MEOPC1


  51:          CP 32H


  52:          JP Z,MEOPC2


  53:          CP 33H


  54:          JP Z,INICIO


  55:          CP 46H


  56:          JP Z,THEEND


  57:          JP ESPERA


  58:  MOSTRAR:    LD IX,TABLA1


  59:          LD A,2


  60:          CALL SMS


  61:          RET


  62:  VERIFI:     LD H,A


  63:          SUB A,2FH


  64:          JP C,ERROR


  65:          LD A,H


  66:          SUB A,3AH


  67:          JP NC,ERROR


  68:          LD A,H


  69:          RET


  70:  MEOPC1:        CALL CLS


  71:          LD IX,MENU2


  72:          LD A,01


  73:          CALL SMS


  74:          LD IX,OPC11


  75:          LD A,02


  76:          CALL SMS


  77:          LD IX,OPC12


  78:          LD A,03


  79:          CALL SMS


  80:          LD IX,OPC13


  81:          LD A,04


  82:          CALL SMS


  83:  ESPE:        CALL SCAN


  84:          CP 31H


  85:          JP Z,DESOR


  86:          CP 32H


  87:          JP Z,ORDENAR


  88:          CP 33H


  89:          JP Z,M1


  90:          JP ESPE


  91:  ;**** RUTINA PARA MOSTRAR TABLA DESORDENADA ****


  92:  DESOR:        CALL CLS


  93:          LD IX,TABLA1


  94:          LD A,3


  95:          CALL SMS


  96:          CALL SCAN


  97:          JP M1


  98:  ;***** RUTINA PARA MOSTRAR TABLA ORDENADA ******


  99:  ORDENAR:    CALL CLS


 100:          LD D,30H


 101:          LD E,30H


 102:          LD HL,DATOS


 103:  SALTO:        LD IY,TABLA1


 104:          LD B,12


 105:  AQUI:        LD A,D


 106:          CP (IY)


 107:          CALL Z,SEGBYT


 108:          INC IY


 109:          INC IY


 110:          INC IY


 111:          DJNZ AQUI


 112:          INC E


 113:          LD A,E


 114:          CP 3AH


 115:          JP NZ,SALTO


 116:          CALL AJUSTO


 117:          INC D


 118:          LD A,D


 119:          CP 3AH


 120:          JP Z,FINORD


 121:          JP SALTO


 122:  SEGBYT:        LD A,E


 123:          CP (IY+1)


 124:          CALL Z,COPIO


 125:          RET


 126:  COPIO:        LD A,(IY)


 127:          LD (HL),A


 128:          INC HL


 129:          LD A,(IY+1)


 130:          LD (HL),A


 131:          INC HL


 132:          LD (HL),20H


 133:          INC HL


 134:          RET


 135:  AJUSTO:        LD E,30H


 136:          RET


 137:  FINORD:        LD IX,DATOS


 138:          LD A,3


 139:          CALL SMS


 140:          CALL SCAN


 141:          JP M1


 142:  ; ****** RUTINA PARA MOSTRAR LOS NUMEROS EN COMPLEMENTO A 2


 143:  ; * PRIMERO BUSCO LOS NUMEROS IMPARES (BIT 0 ES 1)


 144:  ; * SE GUARDAN EN LA TABLA TIMP


 145:  MEOPC2:        CALL CLS


 146:          LD IY,TABLA1


 147:          LD HL,TIMP


 148:          LD B,12


 149:  PAVE:        LD A,(IY+1)


 150:          BIT 0,A


 151:          CALL NZ,IMPAR


 152:          INC IY


 153:          INC IY


 154:          INC IY


 155:          DJNZ PAVE


 156:          LD IX,TIMP


 157:          LD A,1


 158:          CALL SMS


 159:          CALL C2


 160:          LD IX,TNASC


 161:          LD A,3


 162:          CALL SMS


 163:          CALL SCAN


 164:          JP M1


 165:  IMPAR:        LD A,(IY)


 166:          LD (HL),A


 167:          INC HL


 168:          LD A,(IY+1)


 169:          LD (HL),A


 170:          INC HL


 171:          LD (HL),20H


 172:          INC HL


 173:          LD (HL),24H


 174:          RET


 175:  ;***** RUTINA PARA HALLAR EL COMPLEMENTO A 2 


 176:  ; **** PARA ELLOS HALLO EL VALOR EN HEXA DEL NUMERO DECIMAL


 177:  ; **** INTRODUCIDO. LUEGO SE HALLA EL COMPLEMENTO


 178:  ; **** A 2 DEL DATO 


 179:  C2:        LD IY,TIMP


 180:          LD IX,TNCOM


 181:          LD HL,TNHEX


 182:          LD B,12


 183:  AQUI2:        LD C,0


 184:          LD A,(IY)


 185:          AND 0FH


 186:          LD D,A


 187:          LD A,(IY+1)


 188:          AND 0FH


 189:          LD E,A


 190:          CALL ARR


 191:          INC IY


 192:          INC IY


 193:          INC IY


 194:          LD (HL),C


 195:          INC HL


 196:          INC HL


 197:          LD A,C


 198:          NEG


 199:          LD (IX),A


 200:          INC IX


 201:          INC IX


 202:          DJNZ AQUI2


 203:          CALL III


 204:          RET


 205:  ARR:        LD A,E


 206:          CP 0


 207:          JP Z,II


 208:          INC C


 209:          DEC E


 210:          LD A,E


 211:          CP 0


 212:          JP NZ,ARR


 213:  II:        DEC D


 214:          LD A,D


 215:          CP 0FFH


 216:          JP Z,RETOR


 217:          LD E,09


 218:          INC C


 219:          JP ARR


 220:  RETOR:        RET


 221:  ; ***** RUTINA PARA DESCOMPONER EL COMPLEMENTO A 2


 222:  ; ***** DE LOS DATOS EN DOS BYTES PARA LUEGO LLEVARLO


 223:  ; ***** A CODIGO ASCII PARA SER MOSTRADO POR PANTALLA


 224:   


 225:  III:        LD IY,TNCOM


 226:          LD HL,TNASC


 227:          LD B,12


 228:  AA:        LD A,(IY)


 229:          LD E,A


 230:          AND 0F0H


 231:          RRC A


 232:          RRC A


 233:          RRC A


 234:          RRC A


 235:          LD D,A


 236:          SUB 10


 237:          JP NC,LETB1


 238:          LD A,D


 239:          OR 30H


 240:  BACK1:        LD (HL),A


 241:          INC HL


 242:          LD A,E


 243:          AND 0FH


 244:          LD D,A


 245:          SUB 10


 246:          JP NC,LETB2


 247:          LD A,D


 248:          OR 30H


 249:  BACK2:        LD (HL),A


 250:          INC HL


 251:          LD (HL),20H


 252:          INC HL


 253:          LD (HL),24H


 254:          INC IY


 255:          INC IY


 256:          INC IY


 257:          DJNZ AA


 258:          RET


 259:  LETB2:        LD A,D


 260:          ADD 37H


 261:          JP BACK2


 262:  LETB1:        LD A,D


 263:          DAA


 264:          ADD 37H


 265:          JP BACK1


 266:   


 267:          ORG 3200H


 268:  TABLA1    DS 36


 269:      DB 24H


 270:  DATOS    DS 36


 271:      DB 24H


 272:  TIMP    DS 36


 273:      DB 24H


 274:  TNASC    DS 36


 275:      DB 24H


 276:  TNHEX    DS 36


 277:      DB 24H


 278:  TNCOM    DS 36


 279:      DB 24H


 280:  MEN    DB "!!!!! INTRODUCE LOS 12 DATOS DE DOS DIGITOS !!!!!",24H


 281:  MENU1    DB "        ********** MENU PRINCIPAL **********",24H


 282:  OPC1    DB "    1. MOSTRAR TABLA",24H


 283:  OPC2    DB "    2. COMPLEMENTO A 2 DE NUMEROS IMPARES",24H


 284:  OPC3     DB "    3. INGRESAR NUEVOS DATOS",24H


 285:  MENU2    DB "        ********** OPCION 1 **********",24H


 286:  OPC11    DB "    1. DATOS DESORDENADOS",24H


 287:  OPC12    DB "    2. DATOS ORDENADOS",24H


 288:  OPC13    DB "    3. VOLVER AL MENU PRINCIPAL",24H


 289:  SCAN:    EQU 04F1H


 290:  CLS    EQU 055CH


 291:  SMS    EQU 052BH


 292:  THEEND:    RST 30H


 293:          END


No hay comentarios:

Publicar un comentario