Ensamblador - Matrices en ensamblador

 
Vista:
Imágen de perfil de Isaac
Val: 3
Ha disminuido 1 puesto en Ensamblador (en relación al último mes)
Gráfica de Ensamblador

Matrices en ensamblador

Publicado por Isaac (2 intervenciones) el 02/04/2020 21:05:30
Tengo duda con un ejercicio que estoy haciendo, una matriz es:

(fila * DimMatrix + columna ) * 2 <-- Esto es el indice

En ensamblador sería:
m sería la matriz
number donde guardamos el valor

DimMatrix equ 4

imul ax, DimMatrix
add bx, ax
imul bx, 2

Para guardar el valor en number sería algo así:

mov [number], WORD[m+bx]

number es de tipo WORD, esto no funciona. ¿como puedo guardar la matriz en number?
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

Matrices en ensamblador

Publicado por Nacho (81 intervenciones) el 02/04/2020 22:47:31
Es así, pero la sintaxis no es correcta. No puedes poner m + bx, sino la dirección de m + bx.

Tampoco hay que hacer todo a güebo en ensamblador, permite el manejo de strucs como en c.
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
Imágen de perfil de Isaac
Val: 3
Ha disminuido 1 puesto en Ensamblador (en relación al último mes)
Gráfica de Ensamblador

Matrices en ensamblador

Publicado por Isaac (2 intervenciones) el 06/04/2020 12:59:51
"No puedes poner m + bx, sino la dirección de m + bx"

Perdona mi ignorancia estoy aprendiendo a programar en ensamblador y me cuesta entender ¿La dirección de m + bx no es [m+bx]? ¿o tengo que guardar bx en otro registro?


"Tampoco hay que hacer todo a güebo en ensamblador, permite el manejo de strucs como en c."

Es posible, pero diría que de momento no están enseñando lo más básico.
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

Matrices en ensamblador

Publicado por Nacho (81 intervenciones) el 06/04/2020 16:34:01
No, quizá tengas que guardar m en un registro. El direccionamiento en 16 bits es más estricto que en 32. Es seguro que tienes que guardar m en un registro si m es una variable local. Para eso existe lea. Y la instrucción mov no puede ir de dirección de memoria a dirección de memoria. No pueden ir corchetes en number.
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