Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » Старый софт » Нужна помощь по debug.exe (ассемблер) |
<<Назад Вперед>> | Страницы: 1 * 2 | Печать |
Кай
Гость
Divine Assassin Откуда: извне (from beyond) Всего сообщений: 13709 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2010 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 4 сентября 2011 0:48 Сообщение отредактировано: 4 сентября 2011 0:50
По первому вопросу лабы, наверное так: Регистры общего назначения предназначены для хранения операндов арифметико-логических инструкций, а также адресов или отдельных компонентов адресов ячеек памяти. В микропроцессоре 8086 было восемь 16-разрядных регистров общего назначения. Все они могли выступать в качестве операндов основных арифметико-логических инструкций, но только четыре годились для целей адресации. Кроме того, каждый регистр имел свои специфические функции: AX — аккумулятор. Использовался для хранения операндов в командах умножения и деления, ввода-вывода, в некоторых командах обработки строк и других операциях; BX — регистр базы. Используется для хранения адреса или части адреса операнда, находящегося в памяти; CX — счётчик. Содержит количество повторений строковых операций, циклов и сдвигов; DX — регистр данных. Используется для косвенной адресации портов ввода-вывода, а также как «расширитель» аккумулятора в операциях удвоенной разрядности; SI — регистр адреса источника. Используется в строковых операциях, а также в качестве индексного регистра при обращении к операндам в памяти; DI — регистр адреса приёмника. Используется в строковых операциях, а также в качестве индексного регистра при обращении к операндам в памяти; BP — указатель кадра стека. Используется для адресации операндов, расположенных в стеке; SP — указатель стека. Используется при выполнении операций со стеком, но не для явной адресации операндов в стеке. Первые четыре регистра могут делиться на две однобайтовых части каждый: AH, BX, CH и DH для старших байтов и AL, BL, CL и DL для младших байтов. По остальным - практическое задание. Элементарное. |
UFO |
Doomer_ написал: А доку по debug'у читал? Просто в методичке не написано, как работать с debug-ом, только теория про системы счисления, регистры, сегменты и пр. Например, вот: http://kipirvine.com/asm/debug/Debug_Tutorial.pdf |
wrenchrox
Advanced Member
Inhale Откуда: Москва Всего сообщений: 1888 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 11 нояб. 2009 |
UFO написал: http://kipirvine.com/asm/debug/Debug_Tutorial.pdfСпасибо, хорошая дока. А доку по debug'у читал? Например, вот: |
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 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 4 сентября 2011 19:31 Сообщение отредактировано: 4 сентября 2011 20:42
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 (ассемблер) |
1 посетитель просмотрел эту тему за последние 15 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |