Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
JokerN7
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 13
1

Несвоевременное завершение отладки в TD

06.04.2014, 21:07. Просмотров 888. Ответов 2
Метки нет (Все метки)

Есть код, переназначающий вектор прерывания и возвращающий его на прежнее место.
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
data segment
  old_03h_o dw ?
  old_03h_s dw ?
  is_it_debbuger db 0
  simpli_prog db 'There is not debbuger',13,10,'$'
  it_is_debbuger db 'There is debbuger',13,10,'$'
data ends
sseg segment stack
  db 100h dup(?)
sseg ends
code segment
assume cs: code, ds:data, ss: sseg
Begin:
 
  mov ax, data
  mov ds, ax
  
  jmp init
int_03h_proc proc far
  mov is_it_debbuger, 1
  iret
int_03h_proc endp
 
init:
;определяем старый вектор прерывания  
  mov ax, 3503h
  int 21h
  mov old_03h_o, es
  mov old_03h_s, bx
;задаем новый вектор прерывания
  push ds
  push cs
  pop ds
  mov ax, 2503h
  mov dx, offset cs: int_03h_proc
  int 21h
  pop ds
;
;   ...
;
;восстанавливаем старый вектор прерывания
  push ds
  pop es
  mov ax, 2503h
  mov dx, es:old_03h_o
  mov ds, es:old_03h_s
  int 21h
  
  mov ax, data
  mov ds, ax
  
  mov ah, is_it_debbuger
  cmp ah, 1
  je its_deb
  jmp isnt_deb
  
its_deb:
  mov ah, 09h
  mov dx, offset it_is_debbuger
  int 21h
  jmp end_prog
  
isnt_deb:
  mov ah, 09h
  mov dx, offset simpli_prog
  int 21h
  jmp end_prog
 
end_prog:  
  mov ax, 4c00h
  int 21h
code ends
end Begin
При попытке отладки его в TD после дальше этих строк он отказывается идти, сообщая "Terminated. Exit code 0"
Assembler
1
2
3
  mov ax, 2503h
  mov dx, offset cs: int_03h_proc
  int 21h
Подскажите в чем проблема.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2014, 21:07
Ответы с готовыми решениями:

Компиляция для отладки
Когда я выполняю отладку, функции, экспортируемые из kernel32.dll имеют свои...

Что лучше для отладки?
Имеется VS2013 Express, FAR,WinDbg,Hiew,MAsm? Пробовал отлаживать но стоит WIn7...

Какие бывают эмуляторы разработки и отладки PIC контроллеров?
подскажите какие бывают эмуляторы разработки и отладки PIC контроллеров?...

Мониторы отладки
Отладочный монитор - специальная программа, загружаемая в память отлаживаемой...

Режим отладки
Добрый вечер, суть проблемы в том, что при запуске программы в режиме отладки...

2
Somebody
2808 / 1619 / 251
Регистрация: 03.12.2007
Сообщений: 4,223
Завершенные тесты: 3
06.04.2014, 23:18 2
Лучший ответ Сообщение было отмечено JokerN7 как решение

Решение

int3 - отладочное прерывание, TD ставит свой обработчик. Чтобы выполнить программу до нужного места, инструкция в этом месте заменяется на int3, таким образом вызывается дебаггер. Если поставить свой обработчик int3, то вместо дебаггера вызовешь что-то своё.
1
JokerN7
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 13
06.04.2014, 23:56  [ТС] 3
Все. Понял. Спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2014, 23:56

Инструменты отладки
Добрый день. Подскажите при помощи каких инструментов можно проводить отладку...

Платы отладки
По учёбе нужна информация о так называемых отладочных платах, с помощью которых...

Настройка отладки
Всем привет. У меня такая проблема - при попытке запуска отладки пошаговой (F7)...


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

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

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