Buenas tengo dos consultas con este ejercicio.
La primera.
En la solución de este ejercicio , enseguida de preservar los valores de los registros se hace
mov si, [bp + 4]
mov di, [bp + 6]
Según entiendo el stack en este momento se encuentra de la siguiente forma:
i
j
RET
bp viejo <-- bp nuevo
y mas adelante, para obtener la posición de memoria donde esta el valor que se quiere leer de la matriz, se hace lo siguiente:
mov ax, ANCHO ; convertir índice en puntero
mul si ; i * ancho + j
add ax, di
No debería ser de la siguiente forma?
mov ax, ANCHO
mul di ; i * ancho + j
add ax, si
O esta mal como supuse que se encontraba el stack?
Segunda.
Porque en otra parte se hace?
mov bx, ax
cmp byte_ptr es:[bx], 1
y no directamente
cmp byte_ptr es:[ax], 1
Saludos.