Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   Старый софт »   Нужна помощь по debug.exe (ассемблер)
RSS

Нужна помощь по debug.exe (ассемблер)

точнее помощь в выполнении лабораторной работы по ассемблеру

<<Назад  Вперед>> Страницы: 1 * 2
Печать
 
Кай
Гость
Divine Assassin

Откуда: извне (from beyond)
Всего сообщений: 13709
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2010
Читайте "методичку" ниже. Там всё вполне наглядно.

http://comp-forum.ru/archive/index.php/t-741.html

С ключевых слов:
[q]
Команда А
Команда отладчика A (Assemble) переводит DEBUG в режим приема команд ассемблера и преобразования их в машинные коды. Установим начальный адрес следующим образом:
А 100 [Return]
Пример: Отладчик выдаст значение адреса сегмента кодов и смещения в виде xххх:0100. Теперь можно вводить каждую команду, завершая клавишей Return. Когда вся программа будет введена, нажмите снова клавишу Return для выхода из режима ассемблера. Введите следующую программу:
МOV AL,25 [Enter]
МOV BL,32 [Enter]
ADD AL,BL [Enter]
RET [Enter]
[/q]
К данной теме присоединена тема "Нужна помощь по debug.exe (ассемблер)" (3 сентября 2011 23:43)
Кай
Гость
Divine Assassin

Откуда: извне (from beyond)
Всего сообщений: 13709
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2010
По первому вопросу лабы, наверное так:

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

В микропроцессоре 8086 было восемь 16-разрядных регистров общего назначения. Все они могли выступать в качестве операндов основных арифметико-логических инструкций, но только четыре годились для целей адресации. Кроме того, каждый регистр имел свои специфические функции:

AX — аккумулятор. Использовался для хранения операндов в командах умножения и деления, ввода-вывода, в некоторых командах обработки строк и других операциях;
BX — регистр базы. Используется для хранения адреса или части адреса операнда, находящегося в памяти;
CX — счётчик. Содержит количество повторений строковых операций, циклов и сдвигов;
DX — регистр данных. Используется для косвенной адресации портов ввода-вывода, а также как «расширитель» аккумулятора в операциях удвоенной разрядности;
SI — регистр адреса источника. Используется в строковых операциях, а также в качестве индексного регистра при обращении к операндам в памяти;
DI — регистр адреса приёмника. Используется в строковых операциях, а также в качестве индексного регистра при обращении к операндам в памяти;
BP — указатель кадра стека. Используется для адресации операндов, расположенных в стеке;
SP — указатель стека. Используется при выполнении операций со стеком, но не для явной адресации операндов в стеке.
Первые четыре регистра могут делиться на две однобайтовых части каждый: AH, BX, CH и DH для старших байтов и AL, BL, CL и DL для младших байтов.

По остальным - практическое задание. Элементарное.
UFO
Гость


Всего сообщений: 5443
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
12 дек. 2006
Doomer_ написал:
[q]
Просто в методичке не написано, как работать с debug-ом, только теория про системы счисления, регистры, сегменты и пр.
[/q]
А доку по debug'у читал?
Например, вот:
http://kipirvine.com/asm/debug/Debug_Tutorial.pdf
wrenchrox
Advanced Member
Inhale

Откуда: Москва
Всего сообщений: 1888
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
11 нояб. 2009
UFO написал:
[q]
А доку по debug'у читал? Например, вот: http://kipirvine.com/asm/debug/Debug_Tutorial.pdf
[/q]
Спасибо, хорошая дока.
Sozdatel
Advanced Member


Всего сообщений: 3518
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
15 апр. 2010
Спасибо за подсказки, разобрался, понял как делать. Правда осталось выполнить одно задание, на прерывания:
Вот текст:

7. Программные прерывания
Параметры для обработчика прерываний, вызываемого инструкцией INT 21, содержатся в РОН: \tAH- номер прерывания
\t\tDL-параметр для прерывания
Вывод символа на экран
Для выполнения этой операции используется прерывание 02h, ASCII -код символа в регистре DL
Выполнение последовательности инструкций
Для выполнения последовательности инструкций в сегменте кода, начиная с той, на которую указывает IP, используется команда G >смещение останова >
Эту команду нужно использовать при выполнении прерывания, чтобы избежать его трассировки.
Задание 7.
Введите код прерывания 21 со смещением 104, укажите номер прерывания 02h код символа 44h. Выполните инструкцию командой g от 104 до 106.
Попробуйте объяснить полученный результат.

Честно говоря, не совсем понимаю что требуется сделать в этом задании. Насколько я понял, нужно вывести на экран символ с ASCII кодом 44, но почему-то у меня не полуачеся это сделать, единственное что происходит, это меняется регистр AX.

Делал так. Ввел команду вывзова обработчика прерываний со смещением 105:

-e cs:104
17B8:0104 CD.CD
-e cs:105
17B8:0105 21.21
-


Затем нужно указать номер прерывания 02h, и код символа 44h. Написано, что нужно вводить их в регистры AH и DL соответственно.
А т.к на прямую, с помощью комманды -r AH или -r DL в данные регистры ничего не вводится,то пришлось вводить данные через ассемблерные комманды.
Делал это так:
" -a
17B8:0100 mov ah,02
17B8:0102 mov dl,44
17B8:0104 "

Затем ввел в регистр счетчика комманд смещение 104, как в инструкции. И начал выполнение инструкции с помощью комманды G: сперва g 104, затем g 105, после g 106. Получилось вот что:

-r ip
IP 0100
:104
-g 104

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=17B8 ES=17B8 SS=17B8 CS=17B8 IP=0104 NV UP EI PL NZ NA PO NC
17B8:0104 CD21 INT 21
-g 105

AX=20CD BX=0000 CX=0013 DX=0000 SP=FFE4 BP=0000 SI=0000 DI=0000
DS=17B8 ES=17B8 SS=17B8 CS=0000 IP=0014 NV UP DI NG NZ AC PE CY
0000:0014 CC INT 3
-g 106

AX=20CD BX=0000 CX=0013 DX=0000 SP=FFE4 BP=0000 SI=0000 DI=0000
DS=17B8 ES=17B8 SS=17B8 CS=0000 IP=0014 NV UP DI NG NZ AC PE CY
0000:0014 CC INT 3
-

Самое умное что мне пришло в голову по этому поводу, это то, что регистр сегмента кода CS обнулился, а в регистр AX появилоcь значение 20CD.
Sozdatel
Advanced Member


Всего сообщений: 3518
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
15 апр. 2010
Help, please. Просто это последний вопрос в моей лабораторной.
И сдавать нужно во вторник.
Sozdatel
Advanced Member


Всего сообщений: 3518
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
15 апр. 2010
Работа уже сделана, так что тему можно закрыть.
Кай
Гость
Divine Assassin

Откуда: извне (from beyond)
Всего сообщений: 13709
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2010
Оценка лабы?
Sozdatel
Advanced Member


Всего сообщений: 3518
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
15 апр. 2010
зачтено.
<<Назад  Вперед>> Страницы: 1 * 2
Печать
Полигон-2 »   Старый софт »   Нужна помощь по debug.exe (ассемблер)
RSS

1 посетитель просмотрел эту тему за последние 15 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS