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,433: 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,461: 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 = 30H92: ; 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 VECES98: 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,4107: 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,4116: 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,4125: 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,4134: 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,4143: 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,4152: 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,4161: 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