|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.04.2023, 22:08 | #11 |
Пользователь
Регистрация: 21.11.2022
Сообщений: 84
|
всё равно не понимаю как исправить ошибку ужасс ааааааааааа
|
09.04.2023, 23:15 | #12 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Запускаете 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). Так вы сможете найти просчёты в логике программы и, исправив их в исходном тексте, заново откомпилировать и продолжить отлаживать программу. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вставить заданное слово в строку перед заданным словом | 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 |