viernes, 4 de junio de 2010

Digitales III – Prof. Mendoza – 1ª evaluacion

Si mal no recuerdo era un programa que calculaba la potencia de un numero  16(10)  = 10(16)

   1:                  .MODEL SMALL


   2:                  .STACK 64H


   3:                  .DATA


   4:  BASE1           DB 0


   5:  DATOS           DB 0,0


   6:  BASE2           DB 0


   7:  HEXAD           DW ?


   8:  BASEELEVADA     DW 0


   9:  DATO3           DB 0,0,0,0,0,0,0,0


  10:  DATO2           DB 0,0,0,0,0,0,0,0


  11:                  DB 0,0,0,0,0,0,0,0


  12:   


  13:                  .CODE


  14:                  MOV AX,@DATA


  15:                  MOV DS,AX


  16:                  MOV ES,AX


  17:  ; PRIMERO SE HACE LA DESCOMPOSION DEL NUMERO EN FORMATO DE POTENCIA


  18:  ; POR EJEMPLO  1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4


  19:  ; Y HACEMOS LA MULTIPLICACION CON SU COEFICIENTE


  20:  ; PARA ESO AGARRAMOS BASE1 Y LA MULTIPLICAMOS TRES VECES Y LUEGO SE MULTIPLICA


  21:  ; POR SU COEFICIENTE


  22:                  LEA SI,DATOS


  23:                  MOV AX,1


  24:                  MOV BH,0


  25:                  MOV BL,BASE1


  26:                  MUL BX


  27:                  MUL BX


  28:                  MUL BX


  29:                  MOV BASEELEVADA,AX


  30:                  MOV AX,0


  31:                  MOV AL,[SI]


  32:                  ROL AL,4


  33:                  AND AL,0FH


  34:                  MOV BX,BASEELEVADA


  35:                  MUL BX


  36:                  ADD HEXAD,AX


  37:   


  38:                  MOV AX,1


  39:                  MOV BH,0


  40:                  MOV BL,BASE1


  41:                  MUL BX


  42:                  MUL BX


  43:                  MOV BASEELEVADA,AX


  44:                  MOV AX,0


  45:                  MOV AL,[SI]


  46:                  AND AL,0FH


  47:                  MOV BX,BASEELEVADA


  48:                  MUL BX


  49:                  ADD HEXAD,AX


  50:   


  51:                  INC SI


  52:   


  53:                  MOV AX,1


  54:                  MOV BH,0


  55:                  MOV BL,BASE1


  56:                  MUL BX


  57:                  MOV BASEELEVADA,AX


  58:                  MOV AX,0


  59:                  MOV AL,[SI]


  60:                  ROL AL,4


  61:                  AND AL,0FH


  62:                  MOV BX,BASEELEVADA


  63:                  MUL BX


  64:                  ADD HEXAD,AX


  65:   


  66:                  MOV AX,0


  67:                  MOV AL,[SI]


  68:                  AND AL,0FH


  69:                  ADD HEXAD,AX


  70:  ; SE USA LA OPERACION MATEMATICA DE LA DIVISION PARA HACER LA CONVERSION


  71:  ; GUARDANDO EL RESTO EN LA DIRECCION APUNTADA POR DI


  72:  ; [DI] = HEXAD % BX


  73:  ; LA DIVISION SE HACE MIENTRAS QUE EL COCIENTE SEA DISTINTO DE CERO


  74:   


  75:                  LEA DI,DATO2


  76:                  ADD DI,15


  77:                  MOV AX,0


  78:                  MOV AX,HEXAD


  79:                  MOV BH,0


  80:                  MOV BL,BASE2


  81:  DIVIDIR:        DIV BX


  82:                  MOV [DI],DL


  83:                  DEC DI


  84:                  CMP AX,0


  85:                  JE SALIR


  86:                  MOV DX,0


  87:                  JMP DIVIDIR


  88:  SALIR:


  89:  ; AQUI UNO DOS POSICIONES DE MEMORIA EN UNA SOLA,


  90:  ; POR EJEMPLO EN AH = 03H Y EN AL = 05H


  91:  ; ROTO AH 4 VECES, AHORA AH = 30H


  92:  ; AHORA HAGO EL OR DE AH CON AL, AHORA AH = 35H


  93:                  LEA SI,DATO3


  94:                  LEA DI,DATO2


  95:                  MOV AH,[DI]


  96:                  MOV AL,[DI+1]


  97:                  ROL AH,4      ; ROTACION HACIA LA DERECHA 4 VECES


  98:                  OR AH,AL


  99:                  MOV [SI],AH


 100:                  INC SI


 101:                  INC DI


 102:                  INC DI


 103:   


 104:                  MOV AH,[DI]


 105:                  MOV AL,[DI+1]


 106:                  ROL AH,4


 107:                  OR AH,AL


 108:                  MOV [SI],AH


 109:                  INC SI


 110:                  INC DI


 111:                  INC DI


 112:   


 113:                  MOV AH,[DI]


 114:                  MOV AL,[DI+1]


 115:                  ROL AH,4


 116:                  OR AH,AL


 117:                  MOV [SI],AH


 118:                  INC SI


 119:                  INC DI


 120:                  INC DI


 121:   


 122:                  MOV AH,[DI]


 123:                  MOV AL,[DI+1]


 124:                  ROL AH,4


 125:                  OR AH,AL


 126:                  MOV [SI],AH


 127:                  INC SI


 128:                  INC DI


 129:                  INC DI


 130:   


 131:                  MOV AH,[DI]


 132:                  MOV AL,[DI+1]


 133:                  ROL AH,4


 134:                  OR AH,AL


 135:                  MOV [SI],AH


 136:                  INC SI


 137:                  INC DI


 138:                  INC DI


 139:   


 140:                  MOV AH,[DI]


 141:                  MOV AL,[DI+1]


 142:                  ROL AH,4


 143:                  OR AH,AL


 144:                  MOV [SI],AH


 145:                  INC SI


 146:                  INC DI


 147:                  INC DI


 148:   


 149:                  MOV AH,[DI]


 150:                  MOV AL,[DI+1]


 151:                  ROL AH,4


 152:                  OR AH,AL


 153:                  MOV [SI],AH


 154:                  INC SI


 155:                  INC DI


 156:                  INC DI


 157:   


 158:                  MOV AH,[DI]


 159:                  MOV AL,[DI+1]


 160:                  ROL AH,4


 161:                  OR AH,AL


 162:                  MOV [SI],AH


 163:                  INC SI


 164:                  INC DI


 165:                  INC DI


 166:   


 167:                  .EXIT(0)


 168:                  END


No hay comentarios:

Publicar un comentario