Domingo 22 de Diciembre de 2024, 03:59
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Problema NASM en Linux
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Problema NASM en Linux (Leído 2405 veces)
nickitafvdr
Nuevo Miembro
Mensajes: 1
Problema NASM en Linux
«
en:
Viernes 11 de Diciembre de 2009, 02:45 »
0
Hola, estoy trabajando por primera vez en nasm, en linux, tengo varios programas hechos en ensamblador que corren perfectamente en windows, pero en linux no, lo compilo con nasm y no me da ningun error, pero al momento de ejecutarlo da fallo de segmentacion. utilice gdb, y me dice lo siguiente:
GDB:
------------------------------------------------------------------------------------------------
Leyendo símbolos desde /home/vlad/Descargas/asm/proy2/proy2...hecho.
(gdb) run
Starting program: /home/vlad/Descargas/asm/proy2/proy2
Program received signal SIGSEGV, Segmentation fault.
pantallaGrafica () at proy2.asm:161
161 int 10h
(gdb)
------------------------------------------------------------------------------------------------
Error en la línea 161, función pantallaGrafica (), instrucción "int 10h".
La interrupción 10h (0x10) no es posible de ejecutarse en Linux porque el Kernel trabaja completamente en modo protegido y ningún programa a nivel de usuario puede tocar el hadware directamente.
Si no puedo utilizar la int 10h, que otras opciones tengo?
Código: ASM
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
Gracias
Tweet
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Problema NASM en Linux
«
Respuesta #1 en:
Viernes 11 de Diciembre de 2009, 08:15 »
0
Lo mismo te pasaria en Windows, seguramente estas ensamblando en 16 bits programas para MS-DOS queWindows emula. La interfaz de los servicios de Linux es la int 0x80 pero no conozco ninguno que te sirva para hacer eso, con los tipicos servicios de leer y escribir archivos podrias trabajar con la consola, pero en modo texto.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Problema NASM en Linux