Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2023, 22:08   #11
ChestIotVaga
Пользователь
 
Регистрация: 21.11.2022
Сообщений: 84
По умолчанию

всё равно не понимаю как исправить ошибку ужасс ааааааааааа
ChestIotVaga вне форума Ответить с цитированием
Старый 09.04.2023, 23:15   #12
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от ChestIotVaga Посмотреть сообщение
а как пользоваться этим отладчиком
Запускаете C:\TOOLS\TASM\BIN\TD.EXE MYPROG.EXE

Открывается главное окно разделённое на 4 части и две строки:
Строка сверху - главное меню (аля программ в Windows)
Строка внизу - подсказка по клавишам
Главная область окна (справа сверху) - дизассемблированная программа (переведена из бинарного вида в текстовый). В нем видно: адрес относительно сегмента cs, последовательность байт (в шестнадцатеричном виде), относящихся к команде, собственно сама команда
Справа от основного окна - регистры общего назначения и 6 основных сегментных, а ещё правее - флаги
Под окном регистров - стек программы. В этом окне видно адреса относительно сегмента ss и значения по этим адресам (dw - 2 байта на каждой строке)
Под основным окном - обзор дампа памяти. В этом окне можно настроить адреса относительно любого сегментного регистра. По умолчанию оно настроено на PSP программы.

Вот основные кнопки для отладки программы:
F5 - Развернуть окно на весь экран (просто для удобства). Кстати в Options -> Display стоит выставить разрешение 43/50. Так шрифт станет мельче, но отладка станет удобнее т.к. читать текст программы можно будет легче.

F9 - запуск программы на исполнение. В этом режиме программа остановится только в тех местах где были заранее расставлены точки остановки (подробнее дальше).
F8 - выполнение одной инструкции. Т.е. программа выполнит строго одну строку в основном окне и остановится на следующей. При этом команды call или rep movsb будут выполнены окончательно т.е. программа совершит переход по инструкции call выполнит все инструкции подпрограммы и только вернувшись (команда ret) остановится.
F7 - выполнение строго одной инструкции. Т.е. выполнит строго одну операцию и остановится. При этом выполнение инструкции call вызовет переход и остановку на первой инструкции подпрограммы. А команды типа rep movsb просто уменьшат на 1 счётчик и остановится на той же строке.

F2 - Установка точки остановки. Если в программе встретилась такая точка, тогда отладчик развернётся и программа остановится до исполнения той инструкции, на которой установлена точка остановки.

Tab - переключение между окнами.
Shift+Tab - переключение между окнами (в обратном порядке).
Alt+F10 - по разному, но в основном открывает контекстное меню (тоже меню можно вызвать правой кнопкой мышки).
F10 - открывает главное меню (тоже меню можно использовать левой кнопкой мышки).

В целом относительно комбинаций клавиш вроде все.

Теперь по поводу отладки. Начать стоит с нажатия Enter -> F5. Потом установить точку остановки после блоков ввода данных (стрелками выбрать нужную команду в основном окне и нажать F2) и запустить программу (F9). После остановки программы (а для этого придётся ввести все запрашиваемые ею данные), когда отладчик развернётся, пошагово продолжаете проходить по программе (нажимайте клавиши F7 или F8, в этой программе они будут работать почти идентично). При каждом нажатии на клавишу F7 или F8 изменяется информация на экране отладчика, поэтому стоит обращать внимание на все окна и изменения в них. Иногда, чтобы посмотреть на данные, стоит переключаться на окно дампа и в контекстном меню выбирать пункт Go To. Тогда в окне ввода задаётся адрес и окно дампа начинает отображать данные по этому адресу. Важно при задании адреса обращать внимание на сегмент. Если сегмент, в котором расположены данные, отличается от ds, тогда стоит указать его либо по имени сегментного регистра, либо значение перед адресом через двоеточие (например: es:0, или 0:400h, или ss:bp+10).

Так вы сможете найти просчёты в логике программы и, исправив их в исходном тексте, заново откомпилировать и продолжить отлаживать программу.
macomics вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставить заданное слово в строку перед заданным словом ChestIotVaga Помощь студентам 4 03.04.2023 02:12
Вставить в строке перед заданным словом другое заданное слово Mayrlly Помощь студентам 1 28.04.2020 13:54
Ввести строку и слово. Вставить введенное слово перед самым длинным словом в строке.(программа на си) Кристина1998 Общие вопросы C/C++ 1 20.11.2016 11:15
Вставить заданное слово в строку перед заданным словом Blind Guard Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 07.04.2014 19:56
Вставить в строке перед заданным словом другое заданное слово. Axrik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 23.04.2013 02:42