QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1385|回复: 6

求助--汇编用 ald 调试时的错误

[复制链接]
发表于 2006-9-6 10:06:37 | 显示全部楼层 |阅读模式
[code:1]
section .text
global  main
                                                                                
main:
    mov ax, 2000h
    mov ss, ax          ;error
    mov sp, 0
    add sp, 4
                                                                                
    pop ax
    pop bx
    push ax
    push bx
    pop ax
    pop bx
    mov eax, 1
    int 0x80
[/code:1]
这个程序用 ald 调试的时候出现下面的错误:

[code:1]
ald> n
eax = 0x00002000 ebx = 0x00000000 ecx = 0x00000000 edx = 0x00000000
esp = 0xBFFFF8A0 ebp = 0x00000000 esi = 0x00000000 edi = 0x00000000
ds  = 0x002B es  = 0x002B fs  = 0x0000 gs  = 0x0000
ss  = 0x002B cs  = 0x0023 eip = 0x08048084 eflags = 0x00200302

Flags: TF IF ID


08048084                      8ED8                 mov ds, ax
ald> n

Program received signal SIGSEGV (Segmentation fault)
Location: 0x08048084
eax = 0x00002000 ebx = 0x00000000 ecx = 0x00000000 edx = 0x00000000
esp = 0xBFFFF8A0 ebp = 0x00000000 esi = 0x00000000 edi = 0x00000000
ds  = 0x002B es  = 0x002B fs  = 0x0000 gs  = 0x0000
ss  = 0x002B cs  = 0x0023 eip = 0x08048084 eflags = 0x00210302

Flags: TF IF RF ID


08048084                      8ED8                 mov ds, ax
[/code:1]
刚开始用 nasm, 对其语法不是很了解, 能帮忙看看是什么错误吗?
发表于 2006-9-6 10:36:04 | 显示全部楼层
应该是指针错误。ss是什么意思?堆栈寄存器吗?
回复

使用道具 举报

 楼主| 发表于 2006-9-7 11:15:52 | 显示全部楼层
[quote:2ce3a19d37="linuxpgy"]应该是指针错误。ss是什么意思?堆栈寄存器吗?[/quote]
是啊. 这是怎么回事?
回复

使用道具 举报

发表于 2006-9-7 11:45:24 | 显示全部楼层
为什么要直接给堆栈寄存器赋值呢?
我记得这个值是要在前面定义好不变的哦~~~具体怎么定义,不太清楚了,可能不是这个汇编
[code:1]
sseg        segment        para stack 'stack'
         ;init stack segment here
sseg        ends
[/code:1]
不知道是什么,是tasm用的
回复

使用道具 举报

 楼主| 发表于 2006-9-7 12:48:26 | 显示全部楼层
书上的例子都是直接给堆栈寄存器赋值的.

还有 mov ax, [0000]
这样的在调试时也不对. 是不是有保护模式的原因,
如果是, 怎么进入非保护模式

我用的是 nasm
回复

使用道具 举报

发表于 2006-9-7 13:05:14 | 显示全部楼层
书上的是nasm吗? 书上没说用什么编译环境吗?例子应该可以运行啊~~
回复

使用道具 举报

 楼主| 发表于 2006-9-7 17:31:46 | 显示全部楼层
书上是 masm, 运行时, 有些我改成 nasm 语法,  但我觉得这句应该可以在 nasm 上运行吧.
网上搜了半天, 也没找到用 nasm 讲汇编的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 08:29 , Processed in 0.044082 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表