Ensamblador - Usando MUL

 
Vista:

Usando MUL

Publicado por tirengarfio (4 intervenciones) el 13/03/2008 12:59:29
Saludos,

viendo como se va ejecutando paso a paso este codigo de aqui abajo con CV, me he dado cuenta que tras ejecutar la linea "mul tabla[1h]" el resultado es:

DX: 0023
AX: 2800

¿El resultado no deberia de ser este?:

DX:0000
AX:2328

¿Que estoy haciendo mal?

CODE

DOSSEG
.MODEL SMALL
.STACK 100h
.DATA


tabla DW 5h DUP (2h, 9h, 3h, 7h, 1h) ; Trabajaremos con el rango 0-65535,
; tabla1<=50h

.CODE

INICIO:

mov ax, @data
mov ds, ax



mov ax, 2710h

mul tabla[0h]; Multiplicamos por 10.000 (2710h) el 1er elemento de tabla.
; El resultado se guarda en DX AX


mov bx, ax; Ahora vamos a mover el resultado almacenado en DXAX a BXCX.
mov cx, dx





mov ax, 3E8h; Multiplicamos por 1.000 (3E8h) el 2º elemento de tabla.

mul tabla[1h]



FIN:

mov ah, 4ch
int 21h
end INICIO


Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Usando MUL

Publicado por microprocessor (46 intervenciones) el 14/03/2008 23:22:07
Lo que pasa es lo siguiente:

La tabla que tu creaste esta formada por 2 bytes cada numero, por lo que estaria asi:

tabla 02
tabla[1h] 00
tabla[2h] 09
tabla[3h] 00
tabla[4h] 03
tabla[5h] 00
tabla[6h] 07
tabla[7h] 00
tabla[98] 01

Por eso al utilizar tabla[1h] te estas refiriendo en realidad a 0x900 en vez de a 0x009, por lo que en vez de usar tabla[1h] tendras que utilizar tabla[2h]

Lo he comprobado, y tras poner en vez de [1h], el [2h], al final me dio AX 2328 y DX 0000

Bueno, un placer ayudarte ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar