lunes, 31 de mayo de 2010

Digitales III – Prof. Bethancourt – 1ª Evaluacion

Este codigo es la primera evaluacion que acostumbraba a hacer este profesor, ya esta configurado para pasarle parametros a la aplicacion usando el segmento de PSP

   1:                  .MODEL SMALL


   2:                  .STACK 256


   3:                  .DATA


   4:  TABLA           DB 0,1,15,10,,46H,88H,0AFH,34H,9AH,0ADH


   5:                  DB 91H,78H,0A2H,45H,0FEH,4DH,3DH,5CH,70H,11H


   6:  BCD             DB 20 DUP (?)


   7:  HEXA            DB 20 DUP (?)


   8:  PROM            DB ?


   9:  TABLA1          DB 20 DUP (?)


  10:  SWDTA           DB ?


  11:  TABLAAUX        DB 48 DUP (255),0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,0FFH


  12:                  DB 200 DUP (255)


  13:  SIGNOS          DB ".,;:"


  14:  TABLA2          DB 20 DUP (?)


  15:                  


  16:                  .CODE


  17:                  PUSH ES


  18:                  MOV AX,@DATA


  19:                  MOV DS,AX


  20:                  POP ES                                                                                                                  


  21:                  MOV DI,80H


  22:                  MOV AL,ES:[DI]


  23:                  CMP AL,0


  24:                  JE SALIR1


  25:                  MOV AH,AL


  26:                  INC DI


  27:                  DEC AH


  28:                                                  


  29:  NEXT:           INC DI


  30:                  DEC AH


  31:                  MOV AL,ES:[DI]


  32:                  CMP AL,"-"


  33:                  JE BUSCAOP


  34:  VERIF1:         CMP AH,00H


  35:                  JE SALIR


  36:                  JMP NEXT


  37:   


  38:  BUSCAOP:        INC DI


  39:                  DEC AH


  40:                  MOV AL,ES:[DI]


  41:                  CMP AL,"b"


  42:                  JE BCD1


  43:                  CMP AL,"h"


  44:                  JE HEXA1


  45:                  CMP AL,"x"


  46:                  JE CONVER


  47:                  CMP AH,00H


  48:                  JE SALIR


  49:                  MOV SWDTA,0FFH


  50:                  CMP AL,"-"


  51:                  JE BUSCAOP


  52:                  JMP NEXT


  53:   


  54:  BCD1:           CALL UNO


  55:                  JMP NEXT


  56:  HEXA1:          CALL DOS


  57:                  JMP NEXT


  58:  CONVER:         CALL SEIS


  59:                  JMP NEXT


  60:                  


  61:  SALIR1:         CALL UNO


  62:                  CALL DOS


  63:                  CALL TRES


  64:                  CALL CUATRO


  65:                  CALL CINCO


  66:  SALIR:          .EXIT(0)


  67:   


  68:  UNO PROC NEAR


  69:                  PUSH DI


  70:                  PUSH AX


  71:                  LEA SI,TABLA


  72:                  LEA DI,BCD


  73:                  MOV CX,20


  74:  LAZO1:          MOV AL,BYTE PTR [SI]


  75:                  AND AL,0F0H


  76:                  CMP AL,0A0H


  77:                  JNC SIGUIENTE


  78:                  MOV AL,BYTE PTR [SI]


  79:                  AND AL,0FH


  80:                  CMP AL,0AH


  81:                  JNC SIGUIENTE


  82:                  MOV AL,BYTE PTR [SI]


  83:                  MOV BYTE PTR [DI],AL


  84:                  INC DI


  85:  SIGUIENTE:      INC SI


  86:                  LOOP LAZO1


  87:                  POP AX


  88:                  POP DI


  89:                  RETN


  90:  UNO ENDP


  91:   


  92:  DOS PROC NEAR


  93:                  PUSH DI


  94:                  PUSH AX


  95:                  LEA SI,TABLA


  96:                  LEA DI,HEXA


  97:                  MOV CX,40


  98:  LAZO2:          MOV AL,BYTE PTR [SI]


  99:                  AND AL,0F0H


 100:                  CMP AL,0A0H


 101:                  JC SIGUIENTE2


 102:                  MOV AL,BYTE PTR [SI]


 103:                  AND AL,0FH


 104:                  CMP AL,0AH


 105:                  JC SIGUIENTE2


 106:                  MOV AL,BYTE PTR [SI]


 107:                  MOV BYTE PTR [DI],AL


 108:                  INC DI


 109:  SIGUIENTE2:     INC SI


 110:                  LOOP LAZO2


 111:                  POP AX


 112:                  POP DI


 113:                  RETN


 114:  DOS ENDP


 115:   


 116:  TRES PROC NEAR


 117:                  LEA SI,TABLA


 118:                  MOV AX,0


 119:                  MOV CX,20


 120:                  MOV DX,0


 121:  LAZO3:          MOV AL,BYTE PTR [SI]


 122:                  CMP AL,30H


 123:                  JC SIGUIENTE3


 124:                  CMP AL,3AH


 125:                  JNC SIGUIENTE3


 126:                  AND AL,0FH


 127:                  ADD PROM,AL


 128:                  INC DL


 129:  SIGUIENTE3:     INC SI


 130:                  LOOP LAZO3


 131:                  MOV AH,0


 132:                  MOV AL,PROM


 133:                  DIV DL


 134:                  OR AL,30H


 135:                  MOV PROM,AL


 136:                  RETN


 137:  TRES ENDP


 138:   


 139:  CUATRO PROC NEAR


 140:                  PUSH ES


 141:                  PUSH DS


 142:                  POP ES


 143:                  MOV DX,4


 144:                  LEA SI,SIGNOS


 145:  XX5:            LEA DI,TABLA


 146:                  MOV CX,20


 147:  XX4:            MOV AL,[SI]


 148:                  SCASB


 149:                  JNZ XXX


 150:                  MOV BYTE PTR [DI-1],20H


 151:  XXX:            LOOP XX4


 152:                  INC SI


 153:                  DEC DX


 154:                  CMP DX,0


 155:                  JNZ XX5


 156:                  POP ES


 157:                  RETN


 158:  CUATRO ENDP


 159:   


 160:  CINCO PROC NEAR


 161:                  LEA SI,TABLA


 162:                  LEA BX,TABLAAUX


 163:                  LEA DI,TABLA1


 164:                  MOV CX,20


 165:  LAZO5:          MOV AL, BYTE PTR [SI]


 166:                  XLAT


 167:                  CMP AL,0FFH


 168:                  JE ERROR


 169:                  MOV BYTE PTR [DI],AL


 170:                  INC DI


 171:  SIGUIENTE5:     INC SI


 172:                  LOOP LAZO5


 173:                  RETN


 174:  ERROR:          MOV SWDTA,AL


 175:                  JMP SIGUIENTE5


 176:  CINCO ENDP


 177:   


 178:  SEIS PROC NEAR


 179:                  LEA SI,TABLA1


 180:                  LEA BX,TABLAAUX


 181:  SALTO61:        INC DI


 182:                  INC DI


 183:                  DEC AH


 184:                  DEC AH


 185:                  MOV DH,ES:[DI]


 186:                  INC DI


 187:                  DEC AH


 188:                  MOV DL,ES:[DI]


 189:                  INC DI


 190:                  DEC AH


 191:                  AND DH,0FH


 192:                  AND DL,0FH


 193:                  ROL DH,4


 194:                  OR DH,DL


 195:                  MOV AL,DH


 196:                  XLAT


 197:                  CMP AL,255


 198:                  JE SIGUIENTE6


 199:                  MOV BYTE PTR [SI],AL


 200:                  INC SI


 201:  SIGUIENTE6:     MOV AL,ES:[DI]


 202:                  CMP AL,","


 203:                  JNE SALTO6


 204:                  JMP SALTO61


 205:   


 206:  SALTO6:         RETN


 207:  SEIS ENDP


 208:                  END


1 comentario: