Sobre ensamblador

JuAn4k4

bien tengo un pekeño problemilla y es este, al hacer una funcion en ensamblador ( 8086 ) me sale el siguiente error al ejecutar:

http://www.jotapeges.com/show.php?i=173928

Bien el codigo de la funcion es este:

MuestraMenu PROC NEAR
; Muestra el menu por pantalla, y espera la respuesta por teclado
; del operador. Asignandole en la posicion Bp[4] el ascii pulsado.
; '1' -> Empezar Partida
; '2' -> Ayuda
; '3' -> Opciones
; '4' -> Salir

push bp
mov bp, sp

push ax
push bx
push si
push es
push di

; Mostrar por pantalla el menu

mov si, offset Pantalla
mov ax, PANT
mov es, ax
mov di, uno

; Mostramos la variable Menu por pantalla.

mov si, offset Menu
mov ax, PANT
mov es, ax
mov di, uno

w3 : mov bx, [si]
inc di
mov es:di , bx
inc si
cmp di, 0FA0h
jz FW3
inc di
mov es:di, byte ptr 0Eh
cmp di, 0FA0h
jz Fw3
jmp w3
Fw3:

; Recojer la informacion del teclado por encuesta

; Asignar a Bp[4] la tecla con la tabla_transf

pop di
pop es
pop si
pop bx
pop ax

mov sp, bp
pop bp
ret 0

MuestraMenu ENDP
[/i]

Esta sin acabar , pero aun asi tendria que mostrar por pantalla lo que he guardado en la variable Menu, a mano etc... el error esta entre IP y CS, y no se por donde cojerlo xq yo lo q uso son : ES , SI , DI, AX y BX y los devuelvo al final tal cual estaban, creo q con la pila no hay problemas, la tengo definida etc... si alguien puede ayudarme :S
Gracias

javithelong

Buf, te lo miro esta noche, que ahora me tengo que ir y esto lleva tiempo

El ensamblador... te deja windows jugar con el? quiero decir, ¿win no era un sistema protegido y tal, que no te deja tocar los segmentos de la pantalla y demás?

Yo hacia ensamblador en dos puro, porque sino no me funcionaba nada de nada (no dejaba cambiar punteros de interrupciones ni nada por el estilo)

JuAn4k4

Solo simbolo de sistema y uso turbo asembler ^^ y thx :D

SeiYa

joder habras pisado memoria o algo XD pero es que como para leerlo ... a mi me resulta ilegible el asm xD

JuAn4k4

Creo q ya lo he corregido thx. Era un ADD q tenia q cambiarlo por un SUB* en los parametros d entrada :

cabron

#2:

No se programar en ensamblador, pero tengo noción de como funciona el tema.

El modo protegido de los 80x86 que usa Windows no es que te impida usar ensamblador, lo que te impide es realizar acciones de entrada y salida via IN/OUT, y también tienes restringida alguna que otra instrucción más.

Esas instrucciones están reservadas a aplicaciones (los drivers) con ciertos privilegios que les permiten accer a todo el sistema (o a un periférico en particular), y un programa normal se tiene que comunicar con los drivers para realizar alguna de esas operaciones.

Usuarios habituales

  • cabron
  • JuAn4k4
  • SeiYa
  • javithelong