Ensamblador - Ensamblador

 
Vista:

Ensamblador

Publicado por Alfonso (1 intervención) el 11/12/2008 00:12:34
Hola, estoy atascado con un punto de mi programa (un buscaminas en ensamblador). Llevo varias semanas con este tema pero no soy capaz de averiguar que estoy haciendo mal.

Os cuento lo que me pasa:

Una de las rutinas que tengo creadas es esta:

UpdateBoard:

push ax
push cx
push si
push BX

mov dh,03 ;fila inicial
mov dl,22 ;columna inicial

mov cx,1 ;número de caracteres a escribir
mov bh,00h ;página
mov bl,07h ;atributo
mov si,0 ;índice para acceder a los datos.


LoopUB:

mov ah,02h ;servicio para posicionar el cursor
int BIOSSERVICE

pop BX
mov al,[BX][SI] ;carácter de la matriz que estamos mostrando
push BX

mov bh,00h ;página
mov bl,07h ;atributo
mov ah,09h ;servicio para escribir carácter.
int BIOSSERVICE

inc si
add dl,2
cmp dl, 38
jle LoopUB
mov dl, 22
add dh,2 ; fila
cmp dh,19
jle LoopUB

lea dx,NumMines
push dx
call ShowDigits
add sp,2

pop BX
pop si
pop cx
pop ax

ret

Esta parte final llama a otra rutina llamada ShowDigits y quiero pasar por la pila el valor de NumMines ya que ese valor también lo varian otras rutinas (por ejemplo para calcular el número de minas de las casillas de alrededor).

La rutina showdigits es:

ShowDigits:

push bp
mov bp,sp
push ax
push bx
push cx
push dx

cmp NumMines,0
jne minasactual
call MineCounter
jmp minasinicio

minasinicio:

mov dh,21
mov dl,21

mov bh,00h
mov ah,02h
int BIOSSERVICE

mov ax,NumMines
jmp imprimir

minasactual:

mov dh,21
mov dl,21
mov bh,00h ;página
mov ah,02h ;servicio para posicionar el cursor
int BIOSSERVICE

lea ax,[bp+4]

imprimir:

mov bl,10
div bl

add ah,'0'
add al,'0'

mov di, ax

mov bl,07h ;atributo de color: fondo negro y color blanco

mov ax,di
mov bh,00h
mov cx,1
mov ah,09h
int BIOSSERVICE

add dl,1
mov bh,00h
mov ah,02h
int BIOSSERVICE

mov ax,di
mov al,ah
mov bh,00h
mov cx,1
mov ah,09h
int BIOSSERVICE

pop dx
pop cx
pop bx
pop ax
pop bp

ret

Lo que quiero conseguir es poder escribir en pantalla (en ascii) el valor que tiene NumMines en la rutina anterior (updateboard). Alguien puede decirme que estoy haciendo mal? En lugar de salirme el número correcto (17, 16, etc...) me salen caraceteres raros....

Muchisimas gracias, estoy totalmente desesperado.
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:Ensamblador

Publicado por MSH (120 intervenciones) el 15/12/2008 23:42:19
Si te es posible, postea tu código completo para checarlo...
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

RE:Ensamblador

Publicado por Peron (1 intervención) el 28/12/2008 20:31:25
Tienes que pasar los valores que tienes como resultados a valores ASCII, por eso te salen caracteres extraños. Enrealidad te imprime los valores ASCII, que corresponde al numero del resultado de la operacion.
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