Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
pcmax
14 / 14 / 2
Регистрация: 29.01.2018
Сообщений: 360
1

Ошибка "dumper segment"

20.07.2018, 21:52. Просмотров 122. Ответов 7
Метки нет (Все метки)

помогите пожалуйста понять почему не работает....


Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
section .bss
        num resb 1
section .data
         slovo db "less and more"
         len equ $-slovo
         slovo2 db "finish"
         len2 equ $-slovo2
         numer equ '5'
         numer equ '2'
 
section .text
 
        global _start
_start
        mov eax, 3
        mov ebx, 0
        mov ecx, num
        mov edx, 1
        int 0x80
      
       mov ebp, [num]
       cmp ebp, [numer]
       jg print
       mov eax, 4
        mov ebx, 1
        mov ecx, slovo
        mov edx, len
        int 0x80
        print
        mov eax, 4
        mov ebx, 1
         mov ecx, slovo2
         mov edx, len2
        int 0x80
   
 
         mov eax, 1
         int 0x80
программа просто для того чтобы испытать условный переход. то есть как он работает. но при попытке запустить жалуется на dumper segment
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2018, 21:52
Ответы с готовыми решениями:

Ошибка stac segment при решении уравнения
Добрый вечер!!! выбивает ошибку в 1 строчке "stac segment ", условие...

Cannot access label through segment registers
Есть такой код программы: .386 .model tiny .stack 100h .data massiv ...

Error A2118: cannot have segment address references with TINY model
Помогите компилировать программу! Сообщение компилятора AAVmja.asm(9) : error...

Ошибка: 16-bit segment encountered in object file...
Здраствуйте, у меня такой вопрос: Я пишу консольное приложенеи в Delphi7 и...

Ошибка при компиляции. Can't address with currently ASSUMEd segment registers
Запросить вначале login, а затем пароль. При вводе пароля не отображать...

7
ФедосеевПавел
Модератор
3654 / 2027 / 837
Регистрация: 01.02.2015
Сообщений: 6,743
21.07.2018, 08:37 2
Причина та же, что и ранее
http://www.cyberforum.ru/post12521272.html
1
Jin X
4187 / 1342 / 158
Регистрация: 14.12.2014
Сообщений: 2,542
Записей в блоге: 7
Завершенные тесты: 2
21.07.2018, 12:21 3
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Причина та же, что и ранее
NASM позволяет не использовать двоеточие после названия меток, он выдаст только предупреждение, а не ошибку. Но лучше всё-таки ставить.
А тут как минимум 2 раза определён numer.

Добавлено через 2 минуты
Далее, numer - это не переменная, а константа, т.е. число.
Обращаясь к ней как cmp ebp, [numer] мы фактически пишем cmp ebp,['5'], т.е. читаем с адреса [0x35]. Надо так: cmp ebp,numer.
Продолжаем: mov ebp, [num] записываем в ebp 4 байта, хотя num определён как байт: num resb 1 (а не как двойное слово resq 1).

Добавлено через 1 минуту
Хотя проще вообще написать cmp byte [num],numer.

Добавлено через 1 минуту
Ещё, судя по логике, перед print должно быть, наверное, jmp finish. А finish должен располагаться перед выходом.
2
pcmax
14 / 14 / 2
Регистрация: 29.01.2018
Сообщений: 360
21.07.2018, 13:28  [ТС] 4
да, все работает) спасибо огромно


но только я не понял, а что константы хранятся не в памяти?
почему доступ к значению констант не работает , если [numer]?
0
pcmax
14 / 14 / 2
Регистрация: 29.01.2018
Сообщений: 360
21.07.2018, 21:07  [ТС] 5
подскажите еще пожалуйста

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
section .bss
     var resw 1
 
section .data
      slovo dw "more"
       slovo1 dw "less"
       len equ $-slovo
       len1 equ $-slovo1
        const equ '5'
section .text
         mov eax, 3
         mov ebx, 0
         mov ecx, var
         int 0x80
         mov ebp, [var]
          cmp ebp, const
          jg print
          cmp ebp, const
          jl   print1
 
print:
         mov eax, 4
        mov ebx, 1
        mov ecx, slovo
       mov edx, len
        int 0x80
       jmp exit
 
print1:
        mov eax, 4
        mov ebx, 1
        mov ecx, slovo1
       mov edx, len1
        int 0x80
       jmp exit
 
exit:
        mov eax, 1
        int  0x80
проблема в том, что выводится все, и more и less
0
ФедосеевПавел
Модератор
3654 / 2027 / 837
Регистрация: 01.02.2015
Сообщений: 6,743
21.07.2018, 21:26 6
Потому, что len=длина(slovo)+длина(slovo1)
1
Jin X
4187 / 1342 / 158
Регистрация: 14.12.2014
Сообщений: 2,542
Записей в блоге: 7
Завершенные тесты: 2
21.07.2018, 23:59 7
Цитата Сообщение от pcmax Посмотреть сообщение
но только я не понял, а что константы хранятся не в памяти?
Нет, не хранится. В данном случае это просто замена одной надписи в исходнике на другую.
Транслятор (компилятор) заменяет то, что слева от equ на то, что справа в месте использования.
p.s. Если точнее, то не совсем "подставляет", а вычисляет в том месте, где расположено equ и результат подставляет уже куда надо. Т.е. если написать x equ $, то используя x мы получим адрес не текущей инструкции, а адрес того места, где определён x.

Цитата Сообщение от pcmax Посмотреть сообщение
проблема в том, что выводится все, и more и less
Просто len equ... выше на строку поднять надо.
1
pcmax
14 / 14 / 2
Регистрация: 29.01.2018
Сообщений: 360
22.07.2018, 00:58  [ТС] 8
огромное спасибо всем

Добавлено через 1 минуту
думаю, что может быть с помощью данного форума может быть получиться еще осилить и циклы
0
22.07.2018, 00:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2018, 00:58

Ошибка "Cannot generate COM file: Stack segment present" при компиляции
Ребята, не могу скомпилить программу. Выдаёт ошибку: Cannot generate COM file:...

Segment данных
Кто отлично знает про сегмент данных, ответьте пожалуйста можно ли что нибудь...

Составить dat1 segment для приведенного кода
Нужно просто составить dat1 segment для программы ниже. И все. Буду очень...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru