Краткие теоретические сведения icon

Краткие теоретические сведения




Скачати 79.36 Kb.
НазваКраткие теоретические сведения
Дата03.08.2012
Розмір79.36 Kb.
ТипПрограмма

ЛАБОРАТОРНАЯ РАБОТА N 1


Работа с машинными командами и командами ассемблера с помощью отладчика DEBUG

Краткие теоретические сведения



DEBUG.EXE - специальная программа, входящая в состав утилит MS-DOS, для ввода и пошагового выполнения программ, написанных на машинном языке или с помощью команд ассемблера. Почему программа называется DEBUG? "Bugs" (дословно "насекомые") в переводе со слэнга программистов означает "ошибки в программе". В соответствии с компьютерным фольклором термин "debugging" (дословно "обезжучивание", "обезнасекомливание") появился в то время, когда перестал работать компьютер Гарвардского университета "Марк I". После долгих поисков техники обнаружили источник своих бед - небольшую моль, попавшую между контактами реле. Они удалили моль и внесли запись в сменный журнал о процессе под названием "debugging", произведенным над "Марком I"

Программа DEBUG позволяет:


1) производить пошаговую отладку программы с просмотром регистров и содержимого оперативной памяти;

2) производить арифметические действия над шестнадцатиричными числами;

3) вводить данные в регистры и в ячейки оперативной памяти;

4) вводить программу в виде машинных кодов, а также в ассемблерном виде в ячейки оперативной памяти и выполнять ее;

5) записать введенную программу из оперативной памяти на диск, т.е. получить исполнимый файл (.COM-файл).


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


1. Q - выход из программы.

2. ? - получение справки.

3. H (Hexarithmetic) - шестнадцатиричная арифметика. Если после символа H набрать 2 числа (размером не более 4 цифр каждое) через пробел, то получим сумму и разность набранных чисел.

4. R [<имя регистра>] - работа с регистрами. Инструкция "R" без параметра позволяет просмотреть содержимое всех регистров, а также значение флагов и команду, расположенную по смещению 100 в сегменте кода. Обычно по смещению 0100 находится первая команда программы. С помощью инструкции "R <имя регистра>" можно ввести новое значение в один регистр.

5. U [<сегментный регистр>:]<смещение> - просмотр ячеек оперативной памяти, начиная с указанного смещения в сегменте, заданном сегментным регистром.

6. E [<сегментный регистр>:]<смещение> - запись информации в ячейки оперативной памяти.

DEBUG может быть использован как интерпретатор, чтобы работать непосредственно с микропроцессором. Можно задавать машинные команды, записывать их в определенное место оперативной памяти, обычно, начиная с 0100 смещения относительно начала кодового сегмента. Затем выполнять пошагово (т.е. по одной команде) либо сразу всю программу. Так как микропроцессор понимает только двоичные числа (сокращенно можно их записать шестнадцатиричными), то и коды машинных команд записываются в виде шестнадцатиричных чисел, причем команды бывают однобайтовые, двубайтовые, трехбайтовые и т.д. Например, команда для сложения значений из регистров AX и BX двубайтовая и имеет машинный код 01D8. А машинная команда записи слова из регистра AX в стек - однобайтовая и имеет код 50. Инструкция "E <смещение>" при работе распечатывает в следующей после ее ввода строке адрес, состоящий из двух чисел, и старое значение байта по этому адресу:


<содержимое CS>:<смещение> <значение байта>,


далее компьютер ожидает ввода нового значения байта. Для ввода, например двубайтовой машинной команды 01D8 нужно записать 01 в сегмент кода по смещению 100, и D8 - по смещению 101.


7. T - запуск программы, находящейся в оперативной памяти по адресу 0100, в пошаговом режиме. Для вызова программы на выполнение нужно предварительно позаботиться, чтобы в регистре IP (счетчик команд) было число 0100.

8. А <смещение> - ввод машинных команд в ассемблерном виде в сегмент кода. Первую команду программы следует начинать вводить со смещения 0100. Далее система ждет поочередного ввода команд Ассемблера. Для окончания ввода нужно нажать Enter после пустой строки.

9. G - запуск программы, находящейся в оперативной памяти по адресу 0100. Для вызова программы на выполнение нужно предварительно позаботиться, чтобы в регистре IP (счетчик команд) было число 0100.

10. N <имя .сom-файла> - задает имя программы для последующей записи ее на диск либо считывания с диска. Перед записью предварительно нужно записать 0 в регистр BX, а размер программы (в байтах) - в регистр CX.

11. W - запись программы на диск. После выполнения инструкции "W" на диске в текущей директории появится файл с расширением .COM - точная копия введенной Вами в оперативную память программы. Эту программу можно запустить непосредственно из DOS.

12. L - загрузка программы с диска в оперативную память. Предварительно имя программы задается с помощью инструкции "N". Для выполнения этой лабораторной работы понадобится несколько команд ассемблера:


MOV AH,<шестнадцатиричное число> - запись в регистр AH числа 02 для указания системной функции - вывод символа на экран;


MOV DL,<шестнадцатиричное число> - запись в регистр DL кода символа;


INT 21 - основное прерывание DOS (процедура), реализующее много различных функций; номер функции записывается предварительно в регистр AH; для распечатки символа на экране - в регистре AH функция 02, при этом в DL записывают предварительно код символа.


INT 20 - прерывание DOS, осуществляющее выход из программы

(из .COM-программы).


Пример.

Вывести символ "*" на экран.


mov AH, 02 ; системная функция 02 - вывод символа на экран

mov DL, 2A ; ASCII-код звездочки

int 21h ; прерывание для вывода "*"

int 20h ; выход из программы


Замечание.


Обратите внимание, что при вводе ассемблерных программ в DEBUG числа воспринимаются как шестнадцатиричные (команда 2 в примере). В дальнейшем при работе в Turbo Assembler для указания, что число шестнадцатиричное, после него записывается буква "h".


^ Задание к лабораторной работе.



  1. Посмотрите и запишите в протокол содержимое оперативной памяти по абсолютному (физическому) адресу:

  • 413 (запишите значение слова по этому адресу и соответствующее ему значение размера основной (стандартной) памяти). Объясните результат.

-d 0:413

280 (16)

280 (16) -> 1010000000 (2)


1010000000 (2) -> 640 (10)


1* 2^9 +0* 2^8 +1* 2^7 +0* 2^6 + 0* 2^5 + 0* 2^4 + 0* 2^3 + 0* 2^2 + 0* 2^1 + 0* 2^0=

=128 + 512 = 640

  • FE000h (серийный номер компьютера и информацию о BIOS).


Fe000

-d F000: E000

-d FDFF0:00010

-d Fd00:1000

  • FFFF5h (дата BIOS вашего компьютера)

-d ffff:5

-d fff0:f5

  1. Найдите сумму и разность 2-х чисел: 1-е число - номер в группе (переведенное в шестнадцатиричную форму), 2-е - число, противоположное номеру первой буквы фамилии в алфавите (отрицательное число в дополнительном коде). Сумму и разность переведите вручную в десятичную форму.

Первое число – (9)

Втрое число – (Буква Д = 1000 0100 (2), отрицательно 0111 1011+1=0111 1100 (2)) в 16-ричной будет (7с)

Сумма 9+7с ==== 0085 ======== 1* 2^7 + 1* 2^2 + 1* 2^0=133

Разность 9-7с ==== ff8d ======== 65421



  1. Запишите в регистр AX первое число (из задания 2), а в регистр BX - второе (из задания 2). Введите в оперативную память в сегмент кода (смещение 100) машинную команду 01d8. Посмотрите на экране и запишите в протокол ее ассемблерную форму. Выполните эту команду, результат переведите в десятичную форму.

предварительно проверили, чтобы в регистре IP (счетчик команд) было число 0100,

r ax

r bx

e 100

e 101

AX=0085, следовательно машинный код 01d8 означает сложения значений из регистров AX и BX. AX в десят. виде = 128.

  1. Введите в оперативную память в сегмент кода (смещение 100) набор команд ассемблера для распечатки символа на экране - первой буквы вашей фамилии. Для получения кода буквы можно воспользоваться утилитой DOS tabl.exe. Проверьте программу в DEBUG. Затем запишите ее на диск в виде .COM-файла. Чему равен размер программы? Запустите ее на выполнение из DOS.

Вводим a 100, затем

mov AH, 02 ; системная функция 02 - вывод символа на экран

mov DL, 84 ; ASCII-код буквы "Д"

int 21h ; прерывание для вывода "Д"

int 20h ;выход из программы.

Вводим g предварительно проверив, чтобы в регистре IP (счетчик команд) было число 0100.

И на экран выводится буква "Д"!

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

n first.com,

затем предварительно нужно записать 0 в регистр BX, а размер программы (в байтах) - в регистр CX.

r bx 'Enter' 0

r cx 'Enter' 8

W - запись программы на диск. После выполнения инструкции "W" на диске в директории C:\Documents and Settings\Хозяин появился файл с расширением .COM - точная копия введенной в оперативную память программы. Эту программу можно запустить непосредственно из DOS.

  1. Просмотрите содержимое регистров микропроцессора до начала выполнения задания 4 и после его завершения и выпишите их в протокол. Какую функцию выполняет каждый из регистров?

вводим r. На экран выводится содержимое всех регистров. Разница до выполнения первого упражнения и после - изменяется значение в последней строчке:

до - 1553:0100 add [bx+si], al

после - 1553:0100 B402 MOV AH,02



Десятичная система

Двоичная система

Шестнадцатеричная система

0

0

0

1

1

1

2

10

2

3

11

3

4

100

4

5

101

5

6

110

6

7

111

7

8

1000

8

9

1001

9

10

1010

А

11

1011

B

12

1100

C

13

1101

D

14

1110

E

15

1111

F

Схожі:

Краткие теоретические сведения iconКраткие теоретические сведения
Создание и отладка ассемблерных программ. Разработка. Exe-файла. Получение навыков отладки в среде Turbo Debugger
Краткие теоретические сведения iconКраткие теоретические сведения
Макроопределения (макрокоманды) представляют собой последовательность операторов на языке ассемблера, которая будет заменять повсюду...
Краткие теоретические сведения iconКраткие теоретические сведения
В этой модели сегмент кода отделен от сегмента данных и стека, данные и сегмент стека объединены в одну группу, т е регистры ds и...
Краткие теоретические сведения iconКраткие теоретические сведения
Процедурам могут быть переданы некоторые аргументы, что позволяет, имея одну копию кода в памяти, изменять ее для каждого конкретного...
Краткие теоретические сведения iconСубд access теоретические сведения
База данных (БД) это хранилище данных о некоторой предметной области, организованное в виде специальной структуры
Краткие теоретические сведения iconМасаж завдання для індивідуальної роботи студентів заочної форми навчання І. Написати реферат однією з тем
Написати реферат однією з тем Краткие сведения о возникновении и развитии массажа
Краткие теоретические сведения iconДокументи
1. /4 курс/Mенеджмент.doc
2. /4 курс/_стор_я...

Краткие теоретические сведения iconДокументи
1. /4 курс/Mенеджмент.doc
2. /4 курс/_стор_я...

Краткие теоретические сведения iconДокументи
1. /4 курс/_стор_я _нженернох д_яльност_.doc
2. /4...

Краткие теоретические сведения iconУдк 669. 187: 621. 36. 001. 57 Теоретические аспекты разработки идентификационных моделей как законов регулирования координат электротехнического комплекса сталеплавления Труфанов И. Д., Бондаренко А. А., Чумаков К. И., Арсеньева С. И
...
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©zavantag.com 2000-2013
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи