Теоретический материал. Debug.exe ‑ программа отладчик ,которую используют для проверки и отладки выполняемых — Мегаобучалка

Быстрый старт

Откройте окно командной строки, введите команду debug и нажмите
клавишу [Enter]. В результате будет запущен отладчик debug в интерактивном режиме. Дефис и
мигающий курсор означают, что отладчик ждет ввода команды. Одна из наиболее полезных возможностей
отладчика состоит в том, что с его помощью вы можете вводить небольшие фрагменты кода на ассемблере
и проверять их работу.

Проиллюстрируем эти возможности на простом примере.
Введите букву a (на латинице) и нажмите клавишу [Enter]. Эта команда переводит отладчик
в режим ввода команд ассемблера. Каждая команда ассемблера записывается в одну строку
и заканчивается нажатием клавиши [Enter].

Поясним что делает эта программа. Первая строка кода помещает число 2 в регистр ax.
Ассемблерная команда mov (от английского move – перемещать) копирует содержимое
второго операнда в первый операнд. Вторая строка кода аналогичным образом помещает
число 3 в регистр bx.

Отладчик позволяет достаточно просто и эффективно понаблюдать за работой программы.
Введите букву r и нажмите клавишу [Enter]. В результате появится информация о содержимом
регистров процессора. Поскольку в нашей программе используются только регистры ax и bx
сосредоточим свое внимание на их содержимом.

Поскольку программа еще не запускалась
на исполнение, видим, что содержимое регистров равно нулю. Чтобы понять как работает
программа удобно использовать пошаговый режим отладки, когда на каждом шагу выполняется
одна строчка программы. Чтобы выполнить один шаг нужно ввести букву t и
нажать клавишу [Enter].

Для более полного понимания работы микропроцессора рекомендуется обратить внимание
на содержимое других регистров, а также на третью строку выводимой информации.

Регистр IP (Instruction Pointer – указатель команды) всегда содержит адрес
следующей выполняемой команды. Обратите внимание что в самом начале содержимое
данного регистра равно 100 и указывает на адрес первой команды, т.к. вся программа
располагается в памяти, начиная именно с этого адреса.

Кстати, адреса вводимых
команд указываются слева в тех строках где эти команды вводятся. Эти адреса
представляются в виде двух чисел разделенных двоеточием. Первое число определяет
так называемый сегментный адрес, а второе число смещение адреса от начала сегмента.

Заметьте, что на каждом следующем шаге отладки значение регистра IP увеличивается
таким образом, чтобы указывать на следующую команду программы. Заметьте также,
что третья выводимая строка содержит информацию о следующей выполняемой команде.
Эта информация включает в себя машинный адрес данной команды, саму команду на
машинном языке, т.е. в виде шестнадцатеричного числа, и ассемблерное представление
команды.

Рекомендуется рассмотреть аналогичным образом ряд других команд ассемблера. Это позволит
не только узнать как применяются ассемблерные команды, но и освоить работу с отладчиком.

Лабораторная работа n 3. функциональные возможности отладчика программ debug — киберпедия

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

Применяемые устройства и функциональные возможности отладчика программ DEBUG

D EBUG осуществляет интерактивную отладку программ в формате EXE, и COMфайлов. Обычноиспользуется для отладки исполняемых программ, полученных с языка уровня ассемблера. Он может ассемблировать и исполняемые файлы. EXE, которые были написаны на более высоком уровне

DEBUG позволяет :

Отслеживать и контролировать выполнение программы;

вносить изменения, если программа не содержит изменений;

вводить небольшие программы на языке ассемблера, выполнять их обработку и создавать исполняемые программами с расширением. COM;

Дизассемблировать или преобразовать 16-символьные машинные команды в язык ассемблера;

Вы можете отображать текстовые файлы в ASCII и 16-ричном форматах;

– просматривать и изменять содержимое регистров памяти МП;

Запись данных на диски и загрузка данных с дисков в основную память.

выполнять поиск конкретных данных в текстах сообщений и программ (с выдачей адреса их хранения);

просматривать регистр флагов с отображением мнемокодов значений этих флага.

Флаг Имя флага Установлен Сброшен
OF Переполнение(да/нет) OV NV
DF Направление (уменш/увел) DN UP
IF Прерывания (вкл/откл) EI DI
SF Знак
(отриц/полож)
NG PL
ZF Нуль (да/нет) ZR NZ
AF Вспомогательный перенос( да/нет) AC NA
PF Четность (чет/нечет) PE PO
CF Перенос (да/нет) SY NC

Вы должны ввести команду debug в командной строке и, если необходимо, нажать ENTER, чтобы активировать отладчик DEBUG. После ввода команды ENTER вы нажимаете ENSTURE.

Какие команды выполняет отладчик DEBUG

A (комбайн)

В памяти компьютера 8086/8087/488 формируется двоичный код процессоров. Команда a начинает работу с точки последнего остановочного сигнала.

a [адрес]

Адрес – это имя, по которому записаны инструкции на языке ассемблер. Параметр адрес имеет шестнадцатеричные значения без знака h.

Примечания

В Windows XP эта команда не используется. Она предназначена для обеспечения совместимости с файлами Word и DOS.

Адрес делится на две части. Первая часть содержит буквенное обозначение сегментного регистра или адрес сегмента со смещением. Адрес в сегментном регистре может быть пропущен. Для команд debug:a, g, l, t и w по умолчанию используется сегмент DS, а для остальных подкоманд адрес сегмента в регистр CS не записывается. Все числа представлены в шестнадцатеричном виде. Между именем сегмента и значением смещения требуется двоеточие.

С помощью адресов CS:0100 и 04BA:

Исполняемый машинный код на языке ассемблера создается командой a. Все числовые значения должны быть выражены с помощью шестнадцатеричной системы и иметь количество символов от одного до четырех.

D (dump)

Просмотр содержимого заданного диапазона адресов памяти. Выполненная без параметров команда d выводит на экран содержимое 128 байт, начиная с конца диапазона адресов, заданного в предыдущей команде D.

d[диапазон]

Направление – определяет начальный и конечный адрес блока памяти для просмотра его содержимого.

Параметр диапазон используется в подкомандах debug для задания временного интервала памяти. Параметр диапазон можно задать в одном из следующих форматов: начальный адрес и конечный адрес или начало и конец спектра. Два выражения задают диапазон из 16 байтов, начинающийся с адреса CS:100 10f.

Если используется подкоманда d, содержимое памяти выводится командой Debug.exe двумя частями: шестнадцатеричной (каждый байт представлен в шестнадцатиричном формате) и текстовой (каждые пять бит представлены символом ASCII). Непечатаемые символы отображаются точкой (.) В текстовой части текста. Каждая строка на экране представляет содержимое 16 байт с знаком тире между шестым и седьмым. Все строки начинаются на 16-ти байтной границе.

Пример.

dcs:100 10f

Для вывода содержимого диапазонов команда использует следующий формат:

04BA:0100 54 4F 4D 00 53 41 57 59-45 52 00 00 00 00 00 00…..

Адрес, расположенный через 16 байт (или 8 для 40-колоночного экрана), отмечает начало каждой строки. Следующая часть данных, следующая за предыдущей, содержится в каждой последующей подкоманде d. Введите следующую команду для вывода содержимого байтов 20h, начинающихся с CS:100.

dcs:100 l 20

Чтобы вывести содержимое всех байтов в диапазоне от 100h до 115x, выберите следующую команду:

Дкс:100 115

E (enter)

По указанному адресу ввод данных.

E-mail [список]

Адрес — обязательное значение. Адрес начала области памяти для ввода данных.

В список – байты, которые необходимо ввести в память.

Адрес состоит из двух частей: буква регистра сегмента или четырехзначный адрес сектора находится в первой части, а значение смещения – во второй. Повторите адрес следующей строки и дождитесь ввода новой команды, если присутствует параметр адреса. В этот момент вы можете выполнить одно из следующих действий:

  • Замените байт данных. Для этого введите новое значение. Если введенное значение не является действительным шестнадцатеричным числом или содержит более двух цифр, Debug.exe не отображает недопустимые или избыточные символы.
  • Переход к следующему байту. Для этого нажмите клавишу ПРОБЕЛ. Чтобы изменить этот байт, введите новое значение после текущего байта. Если вы превысите лимит в 8 байт, нажав ПРОБЕЛ, Debug.exe отобразит новую строку с новым адресом в начале строки.
  • Возврат к предыдущему байту. Для этого нажмите клавишу МИНУС. Чтобы вернуться на один байт назад, нажмите эту кнопку несколько раз. Когда вы нажимаете клавишу MINUS, Debug.exe выводит новую строку с текущим адресом и значением.
  • Остановить выполнение подкоманды e. Для этого нажмите клавишу ENTER. Это можно сделать в любой позиции курсора.

Если введен параметр список, подкоманда e последовательно заменяет существующие значения из списка. При возникновении ошибки значения не изменятся.

Список может быть задан в виде строки или шестнадцатеричного числа. Для разделения чисел используются пробелы, запятые или табуляция. Для разделения строк необходимо использовать апострофы (например, “string”) или кавычки (например, “book”).

Примеры

ecs:100

Содержимое первого байта будет отображено Debug.exe в следующем формате:

04BA:0100 EB._

Чтобы заменить это число на другое, введите 41 в позицию курсора как показано ниже:

04BA:0100 EB.41

Одна подкоманда позволяет вводить несколько байтов. После ввода нового значения нажмите SPACE, а не ENTER. В данном примере программа Debug.exe выдаст следующее значение, если трижды нажать клавишу SPACE:

04BA:0100 EB.41 10. 00. BC._

B C число 42 введите курсором, как показано ниже:

04BA:0100 EB.41 10. 00. BC.42_

Нажмите клавишу MINUS дважды, чтобы изменить значение 10 и вернуться к адресу 0101 (значение 20). Программа Debug.exe выводит следующие данные:

04BA:0100 EB.41 10. 00. BC.42-

04BA:0102 00.-

04BA:0101 10._

Введите 6F в позицию курсора, как показано ниже:

04BA:0101 10.6F_

Выполните команду e и возвратитесь к приглашению программы debug.

Рассмотрим пример ввода строки:

Eds:100 «Это пример текста»

Эта строка будет занимать 24 байт, начиная с адреса DS:100.

F (fill)

Присвоение значений адресам в определенной области памяти.

F список диапазонов

Диапазон – назначение начального и конечного адреса или длины области памяти, которую требуется заполнить.

Список – задание данных, которые необходимо ввести.

Параметр range подкоманды отладки используется для указания значения памяти. Форматы начального адреса, конечного адреса или имени длины (обозначается символом l) являются приемлемыми способами задания параметра диапазона. Например, по адресу CS:100 оба выражения указывают диапазон в 16 байт.

Cs:100 10f

Cs:100 l 10

Можно задать значения в шестнадцатеричном или текстовом формате. Данные, ранее находившиеся по данному адресу удалены.

В список могут входить шестнадцатеричные числа или строка, заключенная к тому же “в скобки”.

Примеры

Чтобы заполнить область памяти с 04BA:100 по 4BAS1F F определенными значениями (например, 42 и 53) введите следующую команду.

F04ba:100l100 42 45 52 54 41

G (go)

Загрузка загруженной программы. Запущенная без параметров подкоманда g начинает выполняться с текущего адреса в реестрах CS:IP.

G [=адрес][точки_останова].

Адрес – это имя в памяти, с которого нужно начать выполнение программы.

Команда stop_points подкоманды g позволяет указать до 10 временных точек остановки.

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

Введите знак равенства (=) перед параметром адрес, чтобы отличить его от адреса точек останова в списке параметров точки_остановы. Debug.exe заменяет код, находящийся в точках остановки на инструкции прерывания Когда программа вышла из точки остановки, Debug.exe восстанавливает код в точках останова и выводит на экран содержимое всех регистров, флаги состояния последней инструкции. Debug.exe выводит те же сведения, что получают при использовании команды r (регистр) и указании адреса данной точки останова Если программа не остановилась ни в одной точке, Debug.exe никогда на ней не останавливается;

Точки останова устанавливаются только по адресам, содержащим первый байт кода операции 8086 (opcode). Если установлено более 10 точек останова, отображается следующее сообщение:

Bp Error

Указатель на стек, задаваемый пользователем (например: “указать содержимое пакетов”) должен быть допустимым и не менее 6 байт для подкоманды g. Для перехода к тестируемой программе используется инструкция iret. Debug.exe устанавливает указатель на стек пользователя, помещает туда значение регистра кодового сегмента и указывает текущую команду Если заданный пользователем стек неверный или имеет недостаточный объем, возможен блок операционной системы. Debug.exe вводит код прерывания (т е 0CCh) с указанием адреса или точки остановки файла

Не запускайте программу при получении следующего сообщения:

Программа завершилась правильно.

Чтобы правильно запустить программу, используйте подкоманды n (name) и l. Для получения дополнительных сведений о выполнении циклов, строковых инструкций программных прерываний или процедур – подкоманда p (proceed), сведения об одной инструкции — под команда t.

Примеры

Введите следующую команду для запуска текущей программы и ее выполнения до точки остановки сегмента CS.

Gcs:7550

Debug.exe выведет на экран содержимое регистров и состояние флага, а затем остановит подкоманду g

Чтобы установить две точки остановки, введите следующую команду:

Gcs:7550, cs:8000

Если подкоманда g введена снова после остановки в точке останова, выполнение начнется с инструкции следующего за точкой останова адреса начала программы.

I (input)

Считывание и вывод одного байта из указанного порта ввода.

iпорт

Порт-ввод адреса. Адрес может содержать 16 бит.

Примеры

Продолжить команду

I2f8

Если в порту находится величина 42h, Debug.exe считает ее и выводит:

l (load)

Загрузка файла или содержимого сектора дискового пространства в память. Выполненная без параметров подкоманда l загружает файл, указанный в командной строке программы debug, на адрес CS:100. В регистрах BX и CХ указывается количество загруженных байт. Если имя файла не было указано в командной строке debug, используется уже заданный при вызовах последней подкоманды n.

l[адрес]

L [адрес] _диск=[первый_сектор], txt;

Адрес – область памяти, в которую требуется загрузить содержимое файла или сектора. Если параметр адрес не задан, используется текущий номер в регистре CS.

Диск – это специальный носитель, с которого вычитываются определенные сектора. Для определения параметра используется число 0: A, 1 = B и т. д

Первый сектор, содержимое которого вы хотите загрузить, идентифицируется его шестнадцатеричным номером, который равен first_sector.

На рисунке представлено шестнадцатеричное количество последовательностей загрузки.

Диск, первый_сектор и номер используются только в том случае, если вы хотите загрузить содержимое определенных секторов.

Для загрузки числа байтов, который можно установить регистрами BX:CХ в файле на диске используется l [адрес]. Для пропуска файловой системы и прямой загрузки указанных секторов используется:l [адрес][диск], первый_сектор]. Адрес состоит из двух частей: первая содержит буквенное обозначение сегментного регистра или адрес смещения. Адрес сегмента или интегральный регистр могут быть пропущены.

При вызове подкоманды l с указанием параметра адрес Debug.exe файл или содержимое сектора диска загрузится в область памяти, начиная со адреса Подкоманда l с параметрами Debug.exe загружает содержимое сектора диска, а не файла Каждый сектор в указанном диапазоне считывается от диска, заданного параметром диск. Debug.exe начинает загрузку с первого_сектора и последовательно выгружает сектора в память до тех пор, пока не будет нагружено требуемое число секторов

Для файлов с расширением.exe адрес игнорируется В этом случае Debug.exe использует загрузочный адрес, указанный в названии файла При загрузке заголовок отделяется от самого файла, с которого производится запись в память. Для просмотра.exe файла целиком он может быть переименован в другой, и просмотрен с помощью программы Debug

Команда l может быть использована для загрузки шестнадцатеричного файла, начиная с адреса в указанном каталоге без каких-либо параметров. Программа Debug.exe распознает файлы с расширением.hex как папки в шестнадцатеричном формате. Начальная точка загрузки определяется путем сложения адреса и адреса в шестнадцатеричном файле при выполнении подкоманды l с параметром address.

Примеры

Debug

Nfile.com

Для загрузки файла File.com необходимо ввести следующую команду:

l

Debug.exe загружает файл и выводит приглашение debeg

Введите следующую команду: Чтобы загрузить содержимое 109 (6Dh) секторов диска C, начиная с логического сектора 15 (0Fh), в область памяти номер 04BA:0100

L04ba:100 2 0f 6d

M (move)

Копирование содержимого блока памяти в другой.

mдиапазонадрес

Назовите диапазон адресов, которые требуется скопировать.

Начальный адрес ячейки памяти, INDEX, является местом, куда вы хотите скопировать содержимое диапазона.

Ограничения памяти в подкомандах отладки задаются с помощью параметра range. Форматы начального и конечного адресов – это два варианта параметра range. Оба выражения определяют 16-байтовый диапазон, начинающийся с адреса CS:100.

Cs:100 10f

Cs:100 l 10

Адрес состоит из двух частей: первая содержит буквенное обозначение сегментного регистра или адрес сегментов в четырех цифрах, а вторая имеет значение смещения. Адрес сегмента или регистр может быть пропущен. Если адреса в копируемом блоке памяти заданы так, что новые данные не попадают туда – информация здесь не меняется. Если операция копирования является перекрывающей, данные передаются в другую область. Операция копирования является перекрывающей, если два блока памяти имеют общую часть.

:/>  Не загружается Windows после изменений в msconfig

Не стирая никаких данных в области назначения, подкоманда m выполняет копирование с перекрытием. Сначала копируются адреса, содержимое которых будет перезаписано. При копировании данных из старших адресов в младшие операция начинается с младшего адреса исходного блока и продвигается вверх к старшему адресу. С другой стороны, если информация копируется из младших адресов в старшие, а затем продолжается до младшего адреса

Примеры

Для того чтобы скопировать содержимое адресов c CS:110 по СС:510, а затем и далее введите следующую команду.

Mcs:100 110 cs:500

Чтобы просмотреть результаты, воспользуйтесь подкомандой d (dump), указав адреса в подгруппе m.

N (name)

Задает параметры для команд debug (загрузка) или w(запись), а также имя исполняемого файла. При использовании подкоманды n все параметры открыты.

N [путь][file_implementation].

N Параметры_файла]

Задание расположения и имени исполняемого файла для тестирования.

Существует два способа использования подкоманды n. При этом необходимо включить имя файла в последующие подкоманды l (load) или w (write). Команда write_file должна быть использована перед командой l для загрузки файлов, если программа Debug.exe запущена без указания имени файла для отладки. Имя файла форматируется соответствующим образом для управляющего блока в CS:5C. Во-вторых, параметры файла отладки и ярлыки командной строки могут быть заданы с помощью подкоманды n.

Четыре области памяти, которые использует команда n, перечислены в таблице.

Область памяти Содержимое
CS:5C Блок управления файлом (FCB) для файла 1
CS:6C Блок управления файлом (FCB) для файла 2
CS:80 Длина строки команды n (в символах)
CS:81 Начало строки команды n

Первое имя файла, которое задается командой n в блоке управления файлов по адресу CS:5C. Если задано второе имя, оно помещается в блок управления файлом по адресу CS:6C. В командной строке команды n (кроме первого символа, n) сохраняется количество символов в алфавитном порядке по адресу CS:80. Альтернативная командной строке n сохраняется, начиная с адреса CS:81. Эти символы могут быть любыми разделителями, которые можно вводить с командной строки Windows 2000.

Примеры

В этом примере запускается команда debug и на компьютере отправляется программа Prog.com для отладки Для того чтобы указать два параметра для программы Prog.com и запустить ее, введите следующую команду:

Debugprog.com

Nparam1 param2

g

В этом случае команда g (go) запускает программу так, как если бы она была запущена с командной строки:

Prog param1 param2

Среда выполнения для программы Prog.com создается в процессе тестирования и отладки.

В следующей последовательности команд первая подкоманда n задает имя файлу File1.exe для последующей команды l (load). Вторая подкоманда n задает для файлов File1.exe параметры шифрования. Далее подкоманда g запускает File1.exe так, как если бы с командной строки было введено file1 File2.dat.

Nfile1.exe

Lnfile2.dat file3.dat

g

После команды l в первом экземпляре команда n не используется. Если подкоманда w (запись) используется во втором экземпляре другой команды n, файл File1.exe будет сохранен как file2.dat. Чтобы этого не произошло, всегда вызывайте команду l или w после команды n.

O(output)

Байт вывода в порт выведения.

oпортбайт

Адрес порта вывода, 16-битное значение.

Байт – значение строки, выводимой в порт.

Примеры

Чтобы отправить байт 4Fh в порт вывода по адресу 2F8H, нужно ввести следующую команду:

O2f8 4f

p (proceed)

Выполнение цикла, строки или программного прерывания и вход в другую инструкцию. Команда p выводит список реестров и их текущих значений.

P [=адрес] ; число

Адрес-инструкция, которая будет выполнена первой. Если адрес не указан, по умолчанию выполнение начнется с инструкции регистров CS:IP.

Число – количество инструкций, которые будут выполнены перед возвратом управления программе Debug.exe По умолчанию используется значение 1.

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

Если в параметре адрес не указан сегмент, Debug.exe использует регистр CS тестируемой программы Если параметр адрес опущен, программа начинается с адреса CS:IP. Чтобы отличить параметр адрес от параметров числа, перед ним обязательно должен быть введен знак равенства (=). Если инструкция по заданному адресу является циклом, строковой инструкцией или процедурой (trace), то подкоманда p работает так же как и t.

Если в программе Debug.exe управление передано тестируемой программке командой p, выполнение продолжается до тех пор пока цикл или строковая инструкция не будут закончены; Затем управление возвращается к Debug.exe

После выполнения команды p, Debug.exe отображает следующую инструкцию в дизассемблированном виде вместе с содержимым регистров, флагами состояния и другой информацией.

Команда p не может использоваться для отладки инструкций, содержащихся в ПЗУ.

Примеры

В этом примере тестируемая программа содержит инструкцию call по адресу CS:143F. Чтобы выполнить процедуру, указанную в call и вернуться к программе Debug.exe

p=143f

В следующем формате будут выведены результаты программы Debug.exe

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=2246 ES=2246 SS=2246 CS=2246 IP=1443 NV UP EI PL NZ AC PO NC

2246:1442 7505 JNZ 144A

Q (quit)

Окончание работы программы Debug.exe без сохранения тестируемого файла и возврат в командную строку

q

Реестр

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

r [регистр]

Регистр – это имя конкретного объекта, который содержит данные, которые вы хотите отобразить.

Debug.exe подскажет вам, отобразив 16-битное значение регистра в шестнадцатеричном формате и двоеточие, если оно установлено. Нажмите клавишу ENTER, чтобы изменить значение, которое в данный момент находится в регистре. Нажав ENTER, вы можете вернуться к отладочной подсказке.

В следующей таблице приведены допустимые регистры x86 для параметра регистр.

Ax bp bx Cs
Cx di ds Dx
Es f ip Pc
Si sp ss  

Если в имени задан недопустимый регистр, выводится следующее сообщение:

Если указать f вместо регистра, Debug.exe выводит на экран текущее значение каждого флага состояния в виде двухбуквенного кода и приглашения deBuck Для изменения значения флага введите двухбуквенный код, воспользовавшись следующей таблицей.

Флаг Установлен Снят
Переполнение Ov Nv
Направление dn (уменьшение) up (увеличение)
Прерывание ei (включено) di (выключено)
Знак ng (отрицательный) pl (положительный)
Ноль zr Nz
Добавочный перенос ac Na
Четность pe (четный) po (нечетный)
Перенос cy Nc

Цифры символов могут быть изменены любым способом. При желании между этими значениями можно ввести пробел. Нажмите клавишу ENTER, чтобы завершить выполнение подкоманды r. Флаги, для которых не было добавлено никаких новых значений.

При задании более одного значения флага выводится следующее сообщение:

Ошибка: df

Следующее сообщение появится, если вы введете код, которого нет во всей таблице, например, “код таблицы 0” или “ключевой символ”.

Ошибка: bf

После легкого толчка Debug.exe выполняет все указания.

Когда запускается программа Debug.exe, сегментный регистр указывает на нижнюю границу свободной памяти и указатель инструкции устанавливается равным 0100h; все остальные записи обнуляются.

Примеры

Если текущая позиция указателя инструкции равна CS:11A, выводится следующая информация:

AX=0E00 BX=00FF CX=0007 DX=01FF SP=039D BP=0000 SI=005C DI=0000

DS=04BA ES=04BA SS=04BA CS=O4BA IP=011A NV UP DI NG NZ AC PE NC

04BA:011ACD21 INT 21

Для просмотра только состояния флагов, введите следующую команду:

rf

В следующем формате выводились результаты программы Debug.exe:

NV UP DI NG NZ AC PE NC – _

Введите одно или несколько допустимых значений флагов с пробелами и без них. Например:

§

Debug.exe завершит выполнение подкоманды r и выведет приглашение de bg Для просмотра изменений воспользуйтесь командой r или Rf. Программа Debug.exe выводит следующие сведения:

NV UP EI PL NZ AC PE CY – _

Нажмите ENTER, чтобы вернуться к отладочному запросу.

S (search)

Поиск по шаблону из одного или нескольких байт.

Какие частоты ассоциируются с какими частотами

Начальный и конечный адреса искомой области памяти называются диапазонами.

Это шаблон из одного или нескольких байт и символьной строки для поиска.

Параметр диапазон используется в подкомандах debug для задания памяти. Параметр диапазон можно задать в одном из следующих форматов: начальный адрес и конечный адрес или начало и конец спектра. В этом примере оба выражения задают диапазон из 16 байтов, начинающийся с адреса CS:100.

Cs:100 10f

Cs:100 l 10

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

Примеры

Чтобы найти каждый адрес между CS:100 и CS:110, который имеет значение 41

Scs:100 110 41

Вывод элементов программы Debug.exe будет выглядеть следующим образом:

04BA:0104

04BA:010D

Если вы хотите найти строку «Ph» в диапазоне от CS:100 до СС:1A0, укажите следующую команду

scs:100 1a0 “Ph”

T (trace)

Выполняет одну инструкцию, возвращая декодированную форму выполняемой инструкции, флаг состояния и содержимое регистров. Выполнение подкоманды t начинается с адреса, указанного в регистрах CS:IP программы, если она выполняется без параметров.

T [=адрес] число

Адрес, с которого Debug.exe начнет выполнять инструкции

Число инструкций для выполнения.

Указанное значение должно быть шестнадцатеричным. По умолчанию значение равно 1.

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

Режим аппаратной трассировки микропроцессоров 8086 и 8088 используется с помощью подкоманды t. Вы можете отслеживать инструкции, хранящиеся в памяти, в ПЗУ.

Примеры

Если текущая позиция указателя кода 04BA:011A, Debug.exe отобразит следующие данные:

AX=0E00 BX=00FF CX=0007 DX=01FF SP=039D BP=0000 SI=005C DI=0000DS=04BA ES=04BA SS=04BA CS=O4BA IP=011A NV UP DI NG NZ AC PE NC 04BA:011A CD21 INT 21

Разборка (U)

Деассемблирование байтов и просмотр исходного кода. Деассемблированный код выводится в формате, похожего на распечатку ассемблерного файла. Выполненная без параметров подкоманда u деассмблирует 20h бит (значение по умолчанию), начиная с первого адреса, использованного в предыдущей.

u [диапазон]

В диапазоне указываются начальный и конечный адреса или их длина.

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

Примеры

Для того, чтобы деассемблировать 16 (10) бит в адресе 04BA:0100 и настройте следующую команду:

U04ba:100l10

Программа Debug.exe выводит результаты в следующем формате:

04BA:0100 206472 AND [SI 72],AH

04BA:0103 69 DB 69

04BA:0104 7665 JBE 016B

04BA:0106 207370 AND [BP DI 70],DH

04BA:0109 65 DB 65

04BA:010A 63 DB 63

04BA:010B 69 DB 69

04BA:010C 66 DB 66

04BA:010D 69 DB 69

04BA:010E 63 DB 63

04BA:010F 61 DB 61

Чтобы просмотреть только адреса с 04BA:0100 по 4B0108, введите следующую команду:

U04ba:0100 0108

В программе Debug.exe выводятся следующие сведения:

04BA:0100 206472 AND [SI 72],AH

04BA:0103 69 DB 69

04BA:0104 7665 JBE 016B

04BA:0106 207370 AND [BP DI 70],DH

W (write)

Запись на диск любого файла или определенных секторов. Если подкоманда w с параметрами начинается на адресе CS:100.

w [адрес]

W [адрес] /диск \\первый_сектор], s/s:

Начальный или конечный номер файла, который вы хотите записать на диск, обозначается адресом :.

Диск назначения. В данном случае параметр задается числом 0 = A, 1= B и т. д.

Шестнадцатеричный адрес первого сектора для записи – first_sector.

Число- количество секторов, которые необходимо записать.

Для записи количества байт, заданного в регистрах BX:CХ (BX-cx), на диске используются следующие команды

w [адрес]

Для пропуска файловой системы и прямой записи указанных секторов используется следующий командный блок:

W [адрес] [диск], «первый_сектор» (число)

Адрес состоит из двух частей: первая содержит буквенное обозначение сегментного регистра или адрес сегментной группы, а вторая — значение смещения. Адрес сегмента или его сегментный регистр могут быть пропущены. Имя файла на диске необходимо задать при запуске программы Debug.exe или в последней вызванной подкомандой n (name). Оба этих метода форматируют имя файла для блока управления файлов (FCB) по адресу CS:5C.

. Перед использованием команды w без параметров, если используются подкоманды g (go), t,trace) или p-processer(r), сбросьте регистры BX:Cx. Прямая запись в сектор диска рискованна, поскольку дескриптор файла Windows XP не выполняется, поэтому файлы.exe и hEX не могут быть записаны с помощью этой команды. Если введено неправильное значение, логическая структура диска может быть повреждена.

Примеры

Чтобы записать содержимое области памяти, начиная с адреса CS:100 на диск B и собрать данные из 2Bh секторов в логическом секторе под номером 37?

Wcs:100 1 37 2b

После завершения операции записи появляется отладочная подсказка.

§

Выделение заданного количества страниц памяти EMS. Подкоманда xa проверяет наличие или отсутствие поддержки дополнительной памяти (EMS).

Xa[количество_страниц]

Число_страниц памяти EMS. Размер страницы составляет 16 килобайт.

Windows XP не поддерживает память EMS. Для использования памяти EMS на компьютере должен быть установлен драйвер памяти Lotus/Intel Expanded Memory Specification (LIM) Если запрашиваемое количество страниц доступно, Debug.exe выводит сообщение о шестнадцатеричном номере созданного дескриптора В противном случае выводится сообщение об ошибке.

Примеры

Для того, чтобы выделить восемь страниц дополнительной памяти введите следующую команду:

Xa8

Команда выводит следующие сведения:

Создайте новый шаблон:

Распределение расширенной памяти, или Xd

E XEO. Освобождение дескриптора памяти EMS Подкоманда xd проверяет наличие или отсутствие поддержки дополнительной памяти (EMS).

xd [дескриптор]

Дескриптор — освобождаемый от текста.

Windows XP не поддерживает память EMS. Для использования памяти EMS на компьютере необходим драйвер для записи данных Lotus/Intel Expanded Memory Specification (LIM).

Примеры

Для того чтобы освободить дескриптор 0003, введите следующую команду:

Xd 0003

При успешном выполнении программы Debug.exe выводится сообщение:

Выпущен дескриптор 0003

Xm (мар расширенных страниц памяти).

Преобразование физической страницы памяти EMS в ее логический эквивалент. Поддержка памяти EMS определяется подкомандой xm.

Xm[лог_страница] [физ_страница], «дескриптор».

Номер логической страницы памяти EMS, которая будет отображаться на физической странице физических страниц – log_page.

Физ_страница – номер физической страницы памяти EMS, в которую будет отображена логическая страница.

Дескриптор- задание дескриптора.

Windows XP не поддерживает память EMS. Для использования памяти EMS на компьютере должен быть установлен драйвер (LIM) в качестве рабочей среды для обновления ее структуры.

Примеры

Чтобы отобразить логическую страницу 5 дескриптора 0003 в физическую, используйте следующую команду:

Xm 5 2 0003

При успешном выполнении программы Debug.exe выводится сообщение:

Физическая страница 02 соответствует логической странице 05.

Xs (отображение состояния расширенной памяти)

Ввод данных о состоянии памяти EMS.

xs

Для использования памяти EMS на компьютере необходим драйвер, поддерживающий версию 4.0 спецификации Lotus/Intel Expanded Memory Specification (LIM). В этом формате отображаются результаты программы Debug.exe:

Дескриптору xx отведено 96 страниц.

Физическая страница xx = Сегмент EMS xx

Xx страниц EMS

Выделено xx дескрипторов EMS

Примеры

Для вывода данных о состоянии памяти EMS введите следующую команду:

xs

Команда xs выводит информацию в следующем виде:

Для обработки было выделено 0000 страниц.

Для дескриптора 0001 выделено 100 страниц

Физическая страница 00 = Сегмент EMS C000

Физическая страница 01 = Сегмент EMS C400

Физическая страница 02 = Сегмент EMS C800

Сегмент СЭМ CC00 = Физическая страница 03

Выбрано 2 из 80 страниц EMS

Выделены 2 из FF дескрипторов EMS

Список задач

Ознакомиться с назначением и возможностями отладчика программы DEBUG:

Как активировать отладчик для управления автомобилем?

* Посмотреть содержимое регистров AX, CX и других (всех сразу по очереди);

Запишите все инструкции и данные, показанные на экране;

Расшифруйте структуру и содержание полученных вами сообщений;

Какую информацию о флагах реестра F. вы можете найти в СМИ?

2. Просмотр и редактирование содержимого некоторых ячеек ОП в ячейках, соответствующих адресным векторам (команда D с необходимыми опциями).

:/>  Настройка камеры в Windows 10

Адреса:

f000:fffe(1 байт) — тип машины (ff—PC, fe—XT, fc—AT и др.);

Ffff:05 (8 байт) – дата создания программы, загруженной в BIOS, в формате mm/d yyyy;

Доступная память пользователя отображается как 0000:413 (2 байта) в Кб.

Для составления отчета по лабораторной работе необходимо указать, к какому типу RAM илиROM относится просматриваемая ячейка.

3. Ввести информацию в некоторые регистры и ячейки памяти (команда R, E или F с необходимыми опциями):

В регистры и ячейки памяти ввести несколько разных чисел. Записать все команды и вводимую информацию.

Введите имена преподавателей, N групп и студентов в виде строки в несколько последовательных ячеек памяти;

проверить правильность записи информации в ячейки.

Для того, чтобы не портить основные файлы операционной системы и в области ПЗУ использовать ячейки памяти 1000—9FD.

4. Введите S с соответствующими опциями. Напишите последовательность из двух-трех слов в различных местах введенного текста, затем запишите векторы адресов ячеек, содержащих эти слова, которые вы получили от компьютера.

5. Ввести ассемблерную программу и создать фрагмент программы с расширением. COM Введите любой фрагмент ассемблерной программы, содержащий несколько строк. Например:

mov ax,15

mov bx,5

add ax,bx

div bx

Для этого:

ввести команду –а;

после появления на экране вектора-адресов типа ХХХх:0100 ввести первую строку программы (если смещение не равно 0100), повторить операцию и повторить. :-а100);

после ввода очередной строки и нажатия клавиши ENTER появляется следующий вектор–адрес.

ввести следующую строку программы, и так до конца.

после набора всех строк программы нажать клавишу ENTER два раза (один раз перевод строки, 2раз — окончание работы). В результате формирования фрагмента программы с расширением. COM

Программы должны быть написаны полностью с использованием адресов командного вектора.

6. Выполнить полученную программу в режиме трассировки:

; вставить первую команду программы (команда R);

записать полученное сообщение;

Выполните первую и последующие команды программы (команда T) в режиме трассировки.

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

7. Отладьте программу и сохраните ее на диске:

Записать в регистр BX нуль, в регистр СХ – длину программы (длину команды вычислить как разность смещений последней и первой команд);

присвоить программе имя: —n диск (работаем на дисководе);

; введите команду записи на диск: -w.

Как проверить, находится ли программа на диске, и удалить Debug (команда -q)?

8. Как добавить программное обеспечение в отладчик:

загрузить Debug;

В отладчике ввести в регистр Cх длину программы, установить имя (–n диск:prog1.com) и дать команду загрузки -L.

9. Деассемблировать программу (команду u)

Если Debug загружает программу в память с вектор–адресом начальной ячейки CS:0100, набрать –u10 Lk (где k длина программы) и проанализировать структуру полученного сообщения.

10. Изменение исполняемой команды программы

выбрать подлежащую изменению команду, например: в prog1.com изменить ссылку add (сложение) на sub(вычитание);

Введите команду -e; в листингах предыдущих программ будет показан машинный код только что использованной команды;

Запустите модифицированную программу в режиме трассировки, запишите все сообщения и проведите быстрый анализ каждого сообщения;

Записать новую программу под именем prog2.com на диск;

нажать включение Debug и проверить наличие этой программы;

DIR – это команда, которая записывает все реквизиты файлов prog1.com и Prog2.com.

11. Просмотр файлов Debug.

Выбрать выбранный текстовый файл в отладчик Debug, нажать Debug путьимя_файла.txt

Загрузить выбранный исполняемый файл в отладчик Debug, в командной строке командного процессора набрать:
Debug путьимя_файла.exe

Команда D позволяет увидеть ASCII-коды и символьные коды фрагментов загруженного текстового файла (примерно 200 ячеек). Записать и проанализировать их.

Вы можете, используя команду D посмотреть ассемблерный код фрагмента программы с расширением. EXE и пояснить его.

12. Все записанные результаты работы преподавателя показать преподавателю.

Что в отчете указано?

Отчет должен содержать :

коротко о отладчике Debug;

Описания каждого процесса и диалоговых экранов каждой рабочей задачи;

анализ полученных сообщений при выполнении заданий 2, 6 и 9; 12.

§

Этапы формирования программы на Ассемблере, часть 1

Цель цикла работ – ознакомиться с: элементами программирования на языке ассемблера компьютера; структурой исполняемых программ. Изучить, как взаимодействуют части компьютера при выполнении машинной программы и использовании методов прерывания. Как осуществляется машинный перевод ASCII-кода в двоичный код и обратно?

Необходимые ресурсы:

Оборудование: IBM PC-совместимая компьютерная система.

Программное обеспечение: DOS, транслятор-компилятор MMASM; переводчик программ LINK.

Какие обстоятельства присутствуют при выполнении работы?

1. Ознакомиться с теоретическими вопросами выполнения заданий лабораторной работы: со структурами программирования на языке ассемблера, c системой прерываний и использованием прерывания в АСеблере.

2. Выполняйте задания.

3. Прокомментируйте результаты работы. Заканчивается по разрешению преподавателя. Получено задание на следующую работу.

Список задач, которые необходимо выполнить

1. В этой статье рассматриваются строительные блоки программирования на языке ассемблера для КПК, включая назначение регистровой памяти МП и базовых прерыванийBIOS и DO.

2. КАЖДЫЙ процесс ассемблирования, редактирования связей и создания исполняемых машинных программ с расширением ЕХЕ.

Этапы программы

1. Составление программы и ввод ее на диск (дискету).

Привводе программ используется какой-либо текстовой редактор,например NC

2. перевести (собрать) программу.

M ASM транслирует сообщение:

M ASM c:prog.asm или просто с помощью mams

Появится запрос

[.asm] имя исходного файла

Указать путь к файлу и имя документа

; (если это еще не было упомянуто).

Имя файла объекта [prog.obj].

Если имя объектной программы ; если ее адрес является именем объекта

(объектного модуля) другое, то

; его нужно указать, иначе нажать.

Клавишу ENTER (RETURN).

Список источников: [nul.lst].

Если нужен листинг программы в ouTube

В машинных кодах, ввести имя

Дисковода, где его формировать

Иначе ENTER.

В этом разделе вы можете найти список поперечных троп, если он вам нужен.

Ссылки программы, ввести имя

; дисковода, иначе – ENTER.

Вариант вызова ассемблера с помощью альтернативных путей

MASM [c:]prog, c:, c:, c:

Примеч.

Л ИСТИНГ – распечатка, файл для печати. Листинг программы содержит исходную программу и машинные коды, а также ошибки в программе при трансляции; листинг перекрестных ссылокпоказывает имена переменной или номера строк программ.

3. загрузка и редактирование ссылок при составлении модуля объекта.

Вводится:

LINK c:prog.obj ;(или просто LINK)

Вы хотите задать вопрос?

Объектные модули [.obj].

; указать имя файла, если оно не было указано ранее.

Запуск [prog.exe]

Если имя исполняемой программы другое,

Если ENTER введен, то это не будет empty.

List file [nul.map]; следуетввести CON.

[.lib] Библиотеки

E NTER (если при редактировании ))

Дополнительных библиотек связей не существует

Требуется.

Альтернативный вариант вызова загрузчика

LINK [c:]prog.obj, c:, con

Примеч.

.map-файл содержит таблицу имен и размер сегментов, а также ошибки при загрузке; ввод CON означает требование вывода их на экран дисплея

4. Если есть необходимость, отладка программы. Можно использовать отладчик Debug. Вызов отладчика Debug:

К ОНФИГУРИРУЙТЕ c:prog.exe.

5. Программа по выполнению программы.

В программе MS DOS вводить имя программы:

c:prog[.exe]

В структуре исходной программы на языке ассемблера для получения исполняемой программки.exe

Для того чтобы создать программу IEXE, MS DOS предъявляет некоторые обязательные требования к структуре и качеству программы.

Программа может использовать 4 сегмента памяти, начальные адреса которых должны быть загружены в регистровые микропроцессора: CS. SS D S и EES; а сами фрагментные секции определенны программой как операторных сосок (имя_сегментов). В программе можно указать имя-сантиметр — он будет отображаться на экране при помощи клавиши «Сохранить».

В программедолжнобытьуказание: какие сегментные регистры закрепляются за используемымисегментами памяти; при выполнении программысеквенторным регистрам CS, SES указываются значения из этих указаний.

Сегмент данных DS в автоматической программе не может быть загружен Авто матически, поскольку он используется программой-загрузчиком (Link) для формирования начального адреса служебной области памяти — префикса программного компонентa.

Регистр сегмента данных DS должен быть инициирован принудительно — для этого следует в самом начале исполняемой EXE-программы записать стеквекторный адрес возвратов к служебной области PSP: содержимое регистраD Sинулевое, а затем ввести адреса фрагментом данные исполнимой программы.

Помните, что PSP, который обычно занимает 256 байт (100H) памяти, представляет собой набор служебных слов, создаваемых для каждой загружаемой пользовательской программы. PSP генерируется автоматически, и его начальный адрес записывается в регистр DS, когда пользовательская программа загружается в оперативную память.

Обеспечить после завершения выполнения программы возврат к префиксу программного сегмента, оформив обращение ко исполняемой программе в виде обращения с процедурой (главной процедуры обязательно c атрибутом far) и поместив команду возвращения ret. Выход из системы можно выполнить также используя прерывание 20H DOS или функцию 4C прерывания 21 HDos; управление при этом передается не непосредственно на сервер COMMANd COMP).

§

T ITLE SER. ASM ; Извлечение корня квадратного

Segmentpara stack “Стек”

; указать область памяти для стека

dw 32 dup(32)

Стаксгенды

Скобка сегмента данных

Определить данные ;

Введите аргумент n (до 64 тыс.) $

Vivdb10,13 значения корня

srdb3 dup(0)

db 13,10,’$’

bufdb5,0,0,0,0,0,0,0

ndw?

edw1

adw?

bdw?

valdw?

twodw2

Тенденции в области данных

codesgsegmentpara’Code’

; программный сектор

assume cs:codesg,ds:datasg,ss:stacksg

Startproc far

push ds

subax,ax

pushax

movax,datasg

movds,ax

movah, 9

Movex, смещение vv

int21h

movah, 0ah

Перемещено, смещение Buf

int21h

Телефон str2bin.

movdx,0

movax,n

incax

divtwo

subdx,dx

mova,ax

iter: movax,n

diva

addax,a

movdx,0

divtwo

subdx,dx

movb,ax

subax,a

cmpax,e

jbemet

movax,b

mova,ax

jmpiter

met:movah,9

Смещение вив

int21h

Наберите bin2str.

movah,9

movdx,si

int21h

ret

Около bin2strproc

movcx,10

Движение, смещение, второе

movax,b

m1: subdx,dx

divcx

or dl,30h

mov[si],dl

decsi

cmpax,0

jnem1

ret

bin2strendp

Около str2binproc

movdi,1

movcx,0ah

Перемещение, смещение buf 1

subbh,bh

Перемещение,[buf 1]

Моваль,[si bx], м2

andax,0fh

muldi

addn,ax

movax,di

mulcx

movdi,ax

decbx

jnzm2

ret

str2binendp

beginendp

Конец кодаг

endbegin

ЛистингпрограммыSR. ASM

Microsoft (R) Macro Assembler Version 5.103/19/94 23:44:19

S ASM, извлечение корня квадратного

TITLESQR.asm ; Извлечение корня квадратного

0000stacksg segmentpara stack’Stack’

Назначить область памяти для стека

00000020[dw 32 dup(32)0020]

Концы 0040 стаксг

0000 datasgsegmentpara ‘Данные

Определить данные

Введите аргумент n (до 64 тыс.)$’

A5 20 A0 E0 A3 E3

AC A5 AD E2 20 6E

20 28 А4 АЭ 20 36

34 20 E2 EB E1 2E

29 20 24

00210A 0D A7 AD A0 E7vivdb10,13,’значениекорня= $’

A5 AD A8 A5 20 AA

AE E0 AD EF 20 20

3D 20 24

00360003[sr db3 dup(0)

]

003A0D 0A 24db13,10,’$’

003D05 00 00 00 00 00bufdb5,0,0,0,0,0,0,0

00 00

00450000 ndw?

00470001 edw1

00490000 adw?

004B0000 bdw?

004D0000 valdw?

004F0002 twodw2

0051датасгенды

0000codesgsegmentpara’Code’

Программныйсегмент

assume cs:codesg,ds:datasg,ss:stacksg

0000 начать процесс.

00001Epushds

00012B C0 sub ax,ax

000350pushax

0004B8 —- R mov ax,datasg

00078E D8 mov ds,ax

0009B4 09 mov ah, 9

000BBA 0000 R mov dx,offset vv

000ECD 21 int 21h

0010B4 0A mov ah, 0ah

0012BA 003D R mov dx,offset buf

0015CD 21 int 21h

0017E8 007D R callstr2bin

001ABA 0000 mov dx,0

001DA1 0045 R mov ax,n

002040inc ax

0021F7 36 004F Rdiv two

00252B D2 sub dx,dx

0027A3 0049 R mov a,ax

002AA1 0045 R iter: mov ax,n

002DF7 36 0049 Rdiv a

003103 06 0049 Radd ax,a

0035BA 0000 mov dx,0

0038F7 36 004F Rdiv two

003C2B D2 sub dx,dx

003EA3 004B R mov b,ax

00412B 06 0049 Rsub ax,a

00453B 06 0047 Rcmp ax,e

004976 08 jbe met

004BA1 004B R mov ax,b

004EA3 0049 R mov a,ax

0051EB D7 jmp iter

0053B4 09met: mov ah,9

0055BA 0021 R mov dx,offset viv

0058CD 21 int 21h

005AE8 0064 Rcallbin2str

005DB4 09 mov ah,9

005F8B D6 mov dx,si

0061CD 21 int 21h

0063CBret

В2стр 0064 прокнеар

0064B9 000A mov cx,10

0067BE 003A R mov si,offset sr 2

006AA1 004B R mov ax,b

006D2B D2 m1: sub dx,dx

006FF7 F1 div cx

007180 CA 30ordl,30h

007488 14 mov [si],dl

00764Edec si

00773D 0000 cmp ax,0

007A75 F1 jne m1

007CC3ret

007Dbin2str endp

007Dstr2bin procnear

007DBF 0001 mov di,1

0080B9 000A mov cx,0ah

0083BE 003E R mov si,offset buf 1

00862A FF sub bh,bh

00888A 1E 003E Rmov bl,[buf 1]

008C8A 00 m2: mov al,[si bx]

008E25 000F and ax,0fh

0091F7 E7 мул.

009301 06 0045 Radd n ,ax

00978B C7 mov ax,di

0099F7 E1 mul cx

009B8B F8 mov di,ax

009D4Bdec bx

009E75 EC jnz m2

00A0C3ret

00A1str2bin endp

Начало конец 00A1

00A1codesgends

end begin

Группы и сегменты:

N a m e r a Комбинированный класс LengthAlign

CODESG . . . . . . . . . 00A1 PARANONE ‘CODE’

DATASG . . . . . . . . . 0051 PARANONE ‘DATA’

STACKSG. . . . . . . . 0040 PARASTACK’STACK’

Symbols:

N a m eType Value Attr

A. . . . . . . . . . . L WORD 0049 DATASG

B. . . . . . . . . . . L WORD 004B DATASG

BEGIN. . . . . . . . . F PROC 0000 CODESG

Длина = 00A1

BIN2STR. . . . . . . . N PROC 0064 CODESG Length = 0019

BUF. . . . . . . . . . L BYTE 003D DATASG

E. . . . . . . . . . . L WORD 0047 DATASG

ITER . . . . . . . . . . L NEAR 002A CODESG

M1 . . . . . . . . . . . L NEAR 006D CODESG

M2 . . . . . . . . . . . L NEAR 008C CODESG

MET. . . . . . . . . . L NEAR 0053 CODESG

N. . . . . . . . . . . L WORD 0045 DATASG

SR . . . . . . . . . . . L BYTE 0036 DATASG

Размер = 0004

STR2BIN. . . . . . . . N PROC 007D CODESG Length = 0024

TWO. . . . . . . . . . L WORD 004F DATASG

VAL. . . . . . . . . . L WORD 004D DATASG

VIV. . . . . . . . . . L BYTE 0021 DATASG

VV . . . . . . . . . . . L BYTE 0000 DATASG

@CPU . . . . . . . . . .TEXT0101h

@FILENAME. . . . . . .TEXTsqr3

@VERSION . . . . . . . .TEXT510

Исходные линии 95

Всего 95 линий

28 Символы

Свободное пространство для символов: 47690 382785 байт

0 Ошибки предупреждения

0 Серьезные ошибки

Формируемыйпри ассемблированиилистинг (для его вызова используютмакрокомандыMS DOS: TTPE или COP) состоит из двух частей.

Листинг программы содержит команды исходной ассемблерной программи соответствующие имобъектные коды в следующих форматах:

16-символьное значение для начального адреса команды сегмента (счетчик команд – IP) в левой колонке;

правая часть содержит операторы и псевдооператоры ассемблера (команда программы);

В середине находятся объектные коды, которые являются командами машинного ассемблера для командных фрагментов и числовых значений, хранящихся во всех ячейках памяти для сегмента стека и сектора данных, соответственно.

Сводная информация о сегментах ( segments and groups) и их именах дает подробную характеристику.

В конце листинга приводятся сообщения о ошибках в программе.

Примеч. При ассемблировании связей и редактировании связок могут быть получены еще 2 листинга с дополнительной информацией:

Номер строки программы, в которой определен каждый идентификатор, указан в листинге перекрестных ссылок.

Файл prog.map содержит листинг распределения памяти, который предоставляет исчерпывающую информацию о сегментах всех программных блоков, объединенных загрузчиком LINK.

Примеч. Если листинг объемный и не помещается целиком на экране дисплея, можно приостановить его выведение однимнажатием кнопки Ctrl-NumLock (для завершения вывода необходимо одновременно нажаль любую клавишу).

§

Какой порядок выполнения работы

1. Ввести готовую программу и создать програмный файл ASM (на дисководе C):

Используя текстовый редактор NC, построчно ввести текст приведенной выше программы prog3.asm.

TITLEprog3.asm ;расчет факториала

Сегментный стек stacksg

dw 32 dup(32)

Укладка концов

Сегмент данных.

Vv db ‘Введите аргумент M (не больше 7)$’

В каком значении факториал $

iidw?

ir dw1

sr db5 dup(0)

db13,10,’$’

ft10db1

Bufdb2,0,0,0

datasgends

codesgsegment

assume cs:codesg,ds:datasg,ss:stacksg

startprocfar

pushds

sub ax,ax

pushax

mov ax,datasg

mov ds,ax

movah,9

Movex, смещение vv

int21h

movah,0ah

Перемещено, смещение Buf

int21h

Телефон str2bin.

Мовакс, ii билл:

mulir

movir,ax

decii

cmpii,2

jgerach

movah,9

Смещение вив

int21h

Наберите bin2str.

movah,9

movdx,si

int21h

ret

bin2str proc

mov cx,10

mov si,offset sr 4

mov ax,ir

m1: sub dx,dx

div cx

ordl,30h

mov [si],dl

dec si

cmp ax,0

jne m1

ret

bin2str endp

Около str2bin proc

movcx,10

Ласси, bf 1

xor bh,bh

mov bl,[buf 1]

m3:mov al,[si bx]

and ax,0fh

mul ft10

add ii,ax

mov al,ft10

mul cl

mov ft10,al

dec bx

jnz m3

ret

str2bin endp

Начало конец

Конец кодаг

end start

Проверить и отредактировать программу,сформовать програмный файл для ассемблирования.

2. Выполнить ассемблирование программы. Вызвать наисполнение программу ассемблера:Cy MASM. На экране появится полное название программы ассемблера, ее версии и запрос на получение информации о файлах в этой программе.

Имя исходного файла .asm

C-prog3 (всегда нажимайте ENTER после ответа).

:/>  7tsp - скачать 7tsp бесплатно » Программы бесплатные

Нажимайте C: и ENTER, если имяобъектного файла то же.

Список источников [Nul.lst]:

Введите C:prog3, если имя файла не указано (если это другое) — ENTER.

Перекрестные ссылки [Nul.lst]:

Вы можете ввести символы C: и ENTER, если требуется список перекрестных ссылок.

Если вы выполнили все задания, ассемблер завершит работу сообщением

Предупреждающие ошибки0.

Серьезные ошибки0

Это означает, что предупреждений об ошибках и ошибок нет. Верните исходную программу MS DOS в исходное положение.

3. См. обзор программы.

Выведите файл листинга программы на дисплей

C>copy С:prog3.lst, conилиtype С:prog3.lst

Перепишите листинг программы в отчет, расшифруйте его структуру и содержание сообщений.

Вы должны исправить все ошибки, которые отмечает листинг.

4. Создание исполняемой машинной программы. EXE

Вызвать программу-загрузчик LINK: СertainFly.

На экране появится полное имя программы LINK, ее версия, а также запрос информации о файлах и ссылках исполняемого машинного файла:

Объект moduls[.obj]:.

EnterC:prog3, поскольку у нас есть однообъектный модуль

Запустите файл [E:prog3.exe]:

E NTER или С: если имя исполняемого файла то же.

Перечислите следующий файл:

Если листинг распределения памяти не нужен, нажмите ENTER; если нужно – то С:

[lib] Библиотеки:

E NTER не работает, т.к дополнительные библиотечные файлы для редактирования связей отсутствуют

Если все перечисленные действия выполнены аккуратно, тобудет создана исполняемая машина prog3.exe.

5. Программа prog3.exe.

Просто введите C: C prog3 и нажмите ENTER, чтобы запустить исполняемую программу.

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

6. Скопировать программы prog3.asm и ProG3exe на гибкий диск.

7. Получите задание для следующей работы и задание. Перезагрузите компьютер.

Основы отчета

Отчет должен содержать :

. Сформулируйте исходную ассемблерную программу prog3.asm с выделением основных ее структурных элементов, необходимых для формирования исполняемой программы;

экран диалога и описание основных процедур, выполненных при ассемблировании программы;

Программу в EDEBUG с пояснениями выполняемых команд и результатов их выполнения.

в разделе листинга программы содержится расшифровка структуры и сообщений.

§

Последовательность выполнения работ

1. Разработать алгоритм решения задачи, в которой используются математические функции вида:

или

F(x) использовать многочлены тип:

Теоретический материал. Debug.exe ‑ программа отладчик ,которую используют для проверки и отладки выполняемых — Мегаобучалка

Значение переменной Х изменяется от хn до Xk с шагом, равным 1s.

В индивидуальном задании изменяются степень, знаки и коэффициенты у компонентов многочлена.

2. План для :

ввод начального значения – Хn;

Ввод конечного значения — Хk

Хс.

При завершении программы вывод вычислений (=) может быть либо одной строкой, либо иметь колонки для номера шага, значения X и значения. Перед каждым изменением значения X выполняется вывод строк таблицы.

3. Системная задача.

4. DEBUG отладчик для работы с программой.

5. Создать файл исполнимой программы с расширением. EXE

6. Автоматически выполнить программу.

7. Деассемблировать программу (с помощью DEBUG) и записать полученный листинг.

8. Представьте преподавателю все результаты вашей работы.

Отчет о работе предприятия

постановка задачи, алгоритм и ассемблерная программа ее решения;

перечень всех выполняемых процедур и экраны диалога по всем заданиям работы;

Анализ листинга программы;

результаты выполнения программы и их анализ;

замечания и предложения по содержанию, методике выполнения работы.

Часть 4. Для определения способов преобразования ascii-кода в двоичный код (STR2BIN) и его перевода из ASCII в Bin можно использовать тесты, которые используют системы конвертера.

Краткое объяснение

При выводе-выводе информации в ПК используется ASCII код ее представления. ПреобразованиеASCII-кода обычно используется после ввода информации с клавиатуры при необходимости выполнения над ней арифметических операций (выполнять действия непосредственно перед ASCII кодом гораздо сложнее).

Процедура преобразования состоит в следующем:

; преобразованиеASCII-кода выполняется справа налево, начиная с крайнего левого бита.

Правый полубайт каждого байта в коде ASCII содержит двоичный код следующей десятичной цифры числа, а левый полубайт (зона) обнуляется;

Полученные байты (буквы) кода умножаются на 1, 10 и так далее; затем полученные продукты складываются.

ПрограммаSTR2BIN, выполняющая преобразование кода ASCII в поле buf) описана в сегменте данных следующим образом:.

buf db M,0,0,0,…0

Сгенерированное двоичное число записывается в поле valn, гдеМ – максимальное количество вводимых символов.

Около str2binproc

movdi,1

movcx,0ah

Перемещение, смещение buf 1

subbh,bh

Перемещение,[buf 1]

Перемещение, [si bx] m2.

andax,0fh

muldi

addvaln ,ax

movax,di

mulcx

movdi,ax

decbx

jnzm2

ret

str2binendp

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

Процедура преобразования состоит в следующем:

двоичное число, а затем полученные частные от деления последовательно делятся на десять до тех пор пока последнее частное не станет равным нулю;

) остатки отделений записываются в правае полубайты последовательных данных слева направо, правые полбайта этих строк – зоны занимаются кодом 0011.

Поле valb переводится процедуройBIN2STR (обратите внимание, что второй порядок поля содержит преобразованное двоичное число).

bin2str procnear

mov cx,10

mov si,offset sr M-1

mov ax,valb

m1: sub dx,dx

div cx

ordl,30h

mov [si],dl

dec si

cmp ax,0

jne m1

ret

bin2str endp

Список задач

Поместите ASCII-код двузначного десятичного числа на вход процедуры STR2 и запустите пошаговую трассировку процедур Bin 2str и Str2bin в Debug.

По результатам трассировки построить блок-схемы алгоритмовработ.

Содержание отчета

Как проводится процедура Str2binи Bin 2str.

Листингитрассировки должны повторяться не менее двух циклов процедур с пояснениями выполненных команд.

Блок-схемы алгоритмов выполнения процедур.

§

Используя протокол ICMP, команда ping предназначена для отправки эхо-запросов. Она ищет соединение с другим компьютером, поддерживающим TCP/IP, на уровне IP.

После каждой передачи выводится эхо-ответ.

Команда ping имеет следующий синтаксис:

ping [-t] [-a] [-n<число>] [-l<размер>] [-f] [-i<TTL>] [-v<TOS>][-r<число>] [-s<число>] [[-j<списокузлов>] | [-k<списокузлов>]][-w<тайм-аут>] [-R] [-S<адресисточника>] [-4] [-6] конечный_узел

Параметры

-t конечный_узел – проверка связи с указанным узлом до прекращения.

Имена узлов определяются адресами с помощью опции -terminal_node.

-n <число>– число отправляемых запросов эха.

-l size> задает размер буфера отправки.

-f – установка флага, запрещающего фрагментацию (только IPv4).

-i — задание срока жизни пакетов.

-v — задание службы IP v4. Этот параметр недоступен и никак на поле TOS в заголовке IP.

-r <число>– запись маршрута для указанного числа прыжков (только IPv4).

-s <число>– отметка времени для указанного числа прыжков (только IPv4).

-j <список_узлов>– свободный выбор маршрута по списку узлов (только IPv4).

-k <список_узлов>– жесткий выбор маршрута по списку узлов (только IPv4).

-w <тайм-аут>– тайм-аут для каждого ответа (в миллисекундах).

Чтобы проверить адрес и обратный маршрут, используйте переключатель -R.

– S <адрес источника>– используемый адрес источника.

-4 — принудительное использование протокола IPv6.

6 – принудительное использование протокола IPv6.

Выполнить перечисленные команды. Результаты выполнения в виде скриншотов поместить на отчет.

Задание 4: Как выполнить задание? Трассировка маршрутов

Команда tracert (Trace Route) предназначена для определения пути, по которому IP-датограмма доставляется в место назначения. ICMP-сообщения от промежуточных маршрутизаторов, отправляемые в различные пункты назначения. Команда tracert выводит упорядоченный список ближних интерфейсов маршрутизаторов, вернувших сообщение об истечении времени.

С помощью tracert можно оценить время приема и передачи информации на отдельных участках сети.

1. Командная строка в командной строки.

2. Команды: Выполнить команды

2.1. Показать маршрут от компьютера к серверу www.microsoft

2.2. Как найти путь от компьютера к серверу www.itec-finecru?

2.3. Выполнить трассировку пути к узлу www.itec.finec.ru и предотвратить разрешение каждого IP-адреса в имя:
tracert -d www.itec.finec.ru

2.4. Выполнить трассировку пути к узлу www.itec.finec.ru и использовать узлы 10.12.0.1-10.29.3.1-10.1.44.1 для свободной маршрутизации:
tracert -j 10.12.0.1 10.29.3.1 10.1.44.1 www.itec.finec.ru

В этой статье приведена краткая информация о команде tracert

Tracert имя_хоста

tracert [-d] [-h максЧисло] [-j списокУзлов] [-w таймаут][-R] [-S адресИсточника] [-4] [-6] конечноеИмя

Параметры:

-d – без разрешения в имена узлов.

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

– список узлов с возможностью свободного выбора маршрута.

–w таймаут — это время, которое отвечает каждый ответ в миллисекундах.

– R – трассировка пути (только IPv6).

Используемый IPv6-адрес -S адрес источника.

– 4 – принудительное использование IPv4.

– принудительное использование IPv6.

Конечное имя

Для каждого посещенного хоста выводится его имя, IP-адрес и время ответа. Если хост завис или перегружен, вместо времени ответа выводится символ ‘*’.

Задание 5 Команды NET

С помощью команды net можно получить исчерпывающую информацию о состоянии и конфигурации сети, а также ряд других параметров.

net[accounts | computer | config | continue | file | group | help |helpmsg | localgroup | pause | session | share | start |statistics | stop | time | use | user | view ]

Netuser

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

Net user – что это такое

Net user[имя_пользователя] [пароль *] (Параметры)].

Имя_пользователя пароль [параметры] (*DOMAIN)

имя_пользователя [/DELETE] [/DOMAIN]

Имя_пользователя [/TIMES: ALL]

Netuse

Команда use управляет и отображает информацию обо всех подключениях к компьютеру.

1. Командная строка.

2. Команда netuse.

§

Net use [\имя_устройства, ресурс[том]]. ().

Net use[имя_устройства [/home] — пароль (необязательное)], например:

Чистое использование [/persistent:yes]

Имя ресурса при подключении или имя устройства в случае отключения. Имя устройства для дисковых устройств – от D: до ;, для принтеров – от LPT1 или ЛПТ3 — имена.

Имя компьютера и название ресурса — указывает имя серверов, общего ресурса. Имя компьютера может быть от 1 до 15 знаков.

Тома системы NetWare.

Как войти в общий ресурс.

/user – другое имя пользователя для подключения к общему ресурсу.

Имя_домена — имя другого домена.

Имя_пользователя для подключения.

Имя_домена с точкой – полное имя домена, в котором есть учетная запись пользователя.

Сохраните информацию для входа в систему для последующего использования с помощью /savecred.

/smartcard – считывание учетных данных со смартфона для подключения к сети.

/delete- отменяет указанное сетевое подключение (*)

/persistent:yes a not – управляет постоянными сетевыми подключениями.

/home – подключение пользователя к его основному каталогу.

Net help команда названной команды.

Netstatistics

Команды показывают статистические данные о работе рабочей станции и сервера, а также любые открытые порты или TCP-соединения. TCP-соединения отображаются, когда команда nbtstat выполняется без аргументов.

Команда net stat

Командавыводит сведенья

NetstAT [-b][-1e], -f) (—n, n и т.п).

-a перечисляет все открытые порты и соединения.

– отображение исполняемого файла, который участвует в создании каждого подключения или ждет портов.

– отображение статистики Ethernet. Позволяет применяться вместе с параметром -s.

-f — отображение полного имени домена (FDN) для внешних адресов.

– отображение адресов и номеров порта в числовом формате.

-o – отображение кода (ID) процесса каждого подключения.

-p протокол — отображение подключений для этого параметра. TCP, UDP или TED могут быть в пределах допустимого значения.

Отображение содержимого таблицы маршрутов.

-s – отображение статистики протокола.

Состояние “разгрузки” текущего соединения отображается опцией -t.

Шестая лабораторная Чтение Изучение новых компьютерных технологий и разработок и поиск уникальной информации в Интернете

Изучение последних достижений в области компьютерных разработок является целью работы.

Требования к ресурсам

Компьютер типа IBM-PC, программа Interhet Explorer и сеть Интернет.

Средства просмотра и поиска информации в сети Internetпо технологиям WWВ.

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

По тематическим указателям

В посвященных компьютерным разработкам и технологиями веб-сайтах, просматриваемых с помощью браузеров

По ключевым словам, которые находятся в поле для поиска справочно-аналитических систем.

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

Микропроцессоры типа VLIW и перспективы их развития, системные чипсеты материнских плат для новых микророцессоров.

Список задач

2. Поиск конкретной информации с помощью предметных указателей нескольких известных веб-сайтов со следующими адресами:

Просмотрите не менее пяти сайтов, начиная с первого.

2. Поиск по ключевым словам в поисковых системах:

Яндекс (http://www.yandex.ru),

Рамблер (http://www.rambler.ru)и др. (по желанию).

Для перехода в нужный сайт или на выбранную поисковую систему следует ввести адрес нужного объекта и щелкнуть мышкой кнопку “Переход”.

Что в отчете?

1. По каждому варианту поиска информации кратко описать процедуру. Кратко описать специфику и особенности каждого использованного сайта.

2. Для уточнения актуальности полученной информации необходимо сравнить ее с более ранними компьютерными технологиями и разработками. На основе таблиц в виде таблицы приводить основные характеристики компонентов компьютерных сисий, если они были получены из результатов поиска.

Представьте рукопись (или печатную версию) отчета вместе с электронной копией наиболее полезных интернет-файлов.

Оглавление

Л АБОРАТОРНАЯ РЕШЕНИЕ N 1 Какие существуют правила ПРОГРАММЕННОГО УПРАВЛЕНИЯ ЭВМА? КОМАНДЫ MS DOS 1

Генерал 1

Командная строка 2

Команды 3 лиги: справочная информация

Последовательность выполнения работы 4

Отчет 5 : содержание отчета

Л АБОРАТОРНАЯ ЗАРАБОТКА N 2. ТЕСТИРОВАНИЕ ПЕРСОНАЛЬНОГО КОМПЬЮТЕРА И его ОСНОВНЫХ УСТРОЙСТВ 6

Общие 6

Инструменты оперативного управления 6 ТРУДОВ

Процессор управления 6

ПРОГРАММА ОБСЛУЖИВАНИЯ 8

Программное обеспечение SysInfo 8.

На данный момент общее количество информации о компьютере 10.

Видеосистема 11.0 полученная из видеоконтроля

Как можно получить информацию о прерываниях 12 дневных сроков

В CMOS-памяти 13 распространяются данные о состоянии устройств

Тестирование памяти диска 14

Получаем информацию о использовании основной памяти 17

Получаем информацию о драйверах устройств ПК 21

22 ГБ для тестирования производительности процессора

Тестирование производительности дисковой памяти 23

Тестирование общей производительности 24-дюймового компьютера

Отчет 25 ФЗ

Программное обеспечение SANDRA 26

S ANDRA 27 го июля начинает работу

29 октября 2019 года. Задание 1.

Задание 2 31

Задание 3. 32

Задание для чтения и запоминания номер четыре

Задание 5 36

Задание 6. 37

Приложение 1. 41

Приложение 2. 44

N3 ЛАБОРАТОРНЫЙ ДОКЛАД. ПРОГРАММА ОТЛАДЧИК M ОТЛАДКА ФУНКЦИОНАЛЬНОСТИ 60’S

Применяемый отладчик программ DEBUG 60

Основные команды отладчика DEBUG61

( Компиляция) a 61

d (dump) 62

e (enter) 63

F (наполнение) 64.

g (go) 65

I (вход) 67.

l (load) 67

m (move) 69

n (name) 70

O (выход) 71.

Приступить к 72

q (quit) 73

Регистр: r (73

S (поиск) 75

T (след) 76

76 (демонтаж)

Письмо 77

Xa (выделение расширенной памяти) 79

Деаллокация расширенной памяти, или xd, строка 79

Xm (мар расширенные страницы памяти) 80.

Показать состояние расширенной памяти с помощью xs 80

Список задач 81

84 отчета

Лабораторный заработок составляет N 4. АССЕМБЛЕР 85

Этапы формирования программы на Ассемблере, часть 1 84

Порядок проведения работ 85

Список заданий 85

Фазы разработки программы 86

Типовая структура. ASM-программы 85

Иллюстрация программы 90-х годов в 90-х годах

Часть 2. Создание исполняемого файла.exe 103

Как выполняется работа 103?

107 отчетов

Часть 3: Программа сборки 108

108

В отчете 108 вопросов

Часть 4. Для изучения процедур преобразования ascii-кода в двоичный код (STR2BIN) и ASCII необходимо знать несколько способов. 110

Краткие пояснения

Список задач 112

В отчете 112 вы найдете следующую информацию:

Л АБОРАТОРНАЯРАБОТА No 5. СЕТЕВЫЕ ПРОТОКОЛЫ ИНТЕРНет И ЛОКАЛЬНЫХ ВЫЧИСлительных сеть

Общие 113

I P-адрес 113.

Задание 1. Чтобы просмотреть сведения о сетевых подключениях компьютера, используйте Windows 114.

Задание 2. Команда ipconfig для установления параметров сетевых протоколов (команды swap и iphone)

Команда ipconfig 116 в составе команды “IP confining”

Задание 3. Проверка IP-адресов 117

Команда ping 118 в какой команде состоит

Задание 4: задание для решения задачи Трассировка маршрутов 119.

В чем заключается суть игры Tracert 120?

Задание 5: задание 5. Команды сети NET 121 обеспечат поддержку сетей.

1. netuser 121

2. netuse 121

3. net statistics 123

Л АБОРАТОРНАЯ РЕШИМАЯ No 6 ОЗНАКОМЛЕНИЕ С КОМПЬЮТЕРНЫМИ ТЕХНОЛОГИями И РАЗРАБОТКАми, ПОСЛЕДНИМ этапом поиска информации в Сети Интернет

Список задач 124

[1] В ПЗУ находится программа для взаимодействия операционной системы с компьютером.

Оставьте комментарий