Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабы / Лабы1 / lab_m1_vt_vt_os_230100.62_niy06.doc
Скачиваний:
23
Добавлен:
18.02.2017
Размер:
449.02 Кб
Скачать

Регистры смещения

IP (указатель команд)

SP (указатель стека)

BP (указатель базы)

SI (индекс источника)

DI (индекс назначения)

В настоящей работе для нас важен регистр IP. В нем хранится адрес (смещение) следующей выполняемой команды. При запуске своих программ не забывайте следить за его содержимым.

Регистр флагов

Описание этого регистра Вы найдете в литературе.

Команды debug

Для запуска программы D e b u g необходимо набрать в командной строке debug, на экране появится приглашение "-" (дефис), в ответ на "?" отладчик выведет список допустимых команд. Кратко рассмотрим работу некоторых из них.

Команда R - позволяет просмотреть все регистры процессора, или изменить их содержимое:

- RAX

AX = 0000 (старое значение AX)

: 3A7 (новое значение AX)

Команда H - шестнадцатеричная арифметика, например для выполнения операций сложения и вычитания двух чисел (B + 1 = С и B - 1 = A) надо ввести команду:

H B 1

000C 000A

Команда Q - выход из отладчика.

Команда A - запись команд ассемблера в ячейки .

-A 100

1234 : 0100 ADD AX, BX (в сотую ячейку помещена команда сложения регистров AX и BX).

Команда E - ввод данных в память начиная с заданного адреса.

Команда U - листинг ассемблерных программ.

Команда T - пошаговое выполнение программы.

Команда G - выполнение всей программы (начиная с адреса в регистре IP) или до заданной команды. Пусть IP = 100, тогда G104 запускает программу с адреса 100 до адреса 104.

Команда N - задает имя программе: N LAB5.COM.

Команда W - запись программы на диск (длина программы в байтах должна быть помещена в CX, регистры AX, BX и DX при этом лучше обнулить).

Некоторые команды ассемблера

MOV AX, BX - переслать число из регистра BX в регистр AX.

MOV AX, 123H - записать в AX число 12316.

ADD AX, BX - сложить содержимое AX и BX.

SUB AX, BX - вычесть содержимое BX из AX.

MUL BX - умножить содержимое AX на BX (ответ помещается в пару регистров - старшие 16 бит в DX, младшие в AX).

DIV BX - разделить содержимое AX на BX (ответ помещается в пару регистров - целое в AX, а остаток в DX).

INT N - выполнить прерывание N.

Небольшие примеры

1. MOV DX, 41 ;поместим в DX код буквы A

MOV AH, 02 ;поместим в AH номер функции вывода символа на экран)

INT 21 ;прерывание для вывода

INT 20 ;возврат в D e b u g

После выполнения программы на экране появится символ A.

2. MOV AH, 09 ;запишем в AH 09 - номер функции вывода строки символов на экран

MOV DX, 0200 ;в DX поместим адрес начала строки

INT 21 ;прерывание для вывода

INT 20 ;возврат в D e b u g

Строка будет печататься до знака $ (доллар). ASCII-код этого символа - 24H. Код символов выводимой строки можно поместить в память командой E200 (при этом данные будут записываться в память начиная с адреса 200).

Для начала записи программы выполните команду A.

Соседние файлы в папке Лабы1