Foros del Web » Administración de Sistemas » Unix / Linux »

NASM - Ensamblador

Estas en el tema de NASM - Ensamblador en el foro de Unix / Linux en Foros del Web. Hola, estoy aprendiendo a usar el nasm en linux, tengo muchos ejemplos q corren bajo windows, o incluso en linux pero usando el dosbox, que ...
  #1 (permalink)  
Antiguo 06/12/2009, 18:14
 
Fecha de Ingreso: diciembre-2009
Mensajes: 2
Antigüedad: 14 años, 11 meses
Puntos: 0
Pregunta NASM - Ensamblador

Hola, estoy aprendiendo a usar el nasm en linux, tengo muchos ejemplos q corren bajo windows, o incluso en linux pero usando el dosbox, que es el emulador de dos en linux, pero al correrlo directamente desde consola (./nombreEjecutable), me dan fallo de segmentacion, alguna idea del porq pasa esto al correrlo?

Este es uno de los codigos que me corren bien en el dosbox, pero me da fallo de segmentacion en la consola.

global _start

section .data


section.text
_start:
call pantallaGrafica



mov ah,0Ch ;Coloca un pixel en pantalla

mov al,07h ;color gris

mov bh,00h ;página

mov cx,250d ;posición X, Inicio

mov bp,200d ;posición Y. Inicio

mov si,280d ;posición Y. Final

mov di,350d ;posición X. Final

call colorearCuadrado



mov ah,0Ch ;Coloca un pixel en pantalla

mov al,06h ;color gris

mov bh,00h ;página

mov cx,240d ;posición X, Inicio

mov bp,190d ;posición Y. Inicio

mov si,200d ;posición Y. Final

mov di,360d ;posición X. Final

call colorearCuadrado



mov ah,0Ch ;Coloca un pixel en pantalla

mov al,03h ;color gris

mov bh,00h ;página

mov cx,260d ;posición X, Inicio

mov bp,220d ;posición Y. Inicio

mov si,250d ;posición Y. Final

mov di,290d ;posición X. Final

call colorearCuadrado



mov ah,0Ch ;Coloca un pixel en pantalla

mov al,06h ;color gris

mov bh,00h ;página

mov cx,315d ;posición X, Inicio

mov bp,240d ;posición Y. Inicio

mov si,280d ;posición Y. Final

mov di,340d ;posición X. Final

call colorearCuadrado









call cerrar

int 10h



pantallaGrafica:

mov ah,00h

mov al,12h ;640x480(16 colores)

int 10h

ret



cerrar:

mov ah,00h

int 16h

cmp al,'s'

jne cerrar

ret



lineaHorizontal:

int 10h

inc cx

cmp cx,si

jbe lineaHorizontal

ret



lineaVertical:

int 10h

inc dx

cmp dx,si

jbe lineaVertical

ret



lineaOblicua:

int 10h

inc dx

inc cx

cmp dx,si

jbe lineaOblicua

ret



colorearCuadrado:

mov dx,bp ;posición Y

call lineaVertical

inc cx

cmp cx,di

jbe colorearCuadrado

ret



colorearTriangulo:

mov dx,bp ;posición Y

call lineaVertical

inc bp

inc cx

cmp cx,di

jb colorearTriangulo

ret


para ejecutarlo desde la consola
nasm -f elf proy2.asm
ld proy2.o -o proy2
./proy2

si lo ejecuto con el dosbox
nasm proy2.asm -o proy2.com
dosbox -noautoexec proy2.com

Muchas Gracias
  #2 (permalink)  
Antiguo 06/12/2009, 20:04
Avatar de -Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 20 años, 4 meses
Puntos: 76
Respuesta: NASM - Ensamblador

Prueba a preguntar en el subforo de programación.
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:56.