ИССЛЕДОВАНИЕ ОРГАНИЗАЦИИ ПЕРЕХОДОВ В ПРОГРАММЕ




ЛАБОРАТОРНАЯ РАБОТА N7

 

1. ЦЕЛЬ РАБОТЫ

Изучение механизма передачи управления в программе;

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

 

2. РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА

2.1. Абель П. Язык Ассемблера для IBM PC и программирования /Пер. c англ. М.:Высш.шк., 1992,c 93-115.

2.2. Белецкий Я. Энциклопедия языка Си: Пер. c польск.-М.:Мир,1992,с 394-406.

 

3. ПОДГОТОВКА К РАБОТЕ

3.1. Изучить методические указания.

3.2. Подготовить ответы на контрольные вопросы.

3.3. Проанализировать приведенную ниже программу CHANGE, дополнить каждую команду комментарием.

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

3.5. Изменить программу так, чтобы в соответствии с вариантом задания

(Таб 5.1.) она обеспечивала:

Таблица 5.1.

№варианта Заменить
  а) ‘a’ на ‘A’ б) все заглавные строчными
  а) строчные от ‘a’ до ‘f’ заглавными б) все заглавные строчными
  а) строчные ‘b’и’c’ заглавными б) все заглавные строчными
  а) строчные от ‘f’ до’z’ заглавными б) все заглавные строчными
  а)символ ’(’ на символ ‘) ’ б) все заглавные строчными
  а) ‘Z’ на ‘z’ б) все заглавные строчными

 

4. КОНТРОЛЬНЫЕ ВОПРОСЫ

4.1. Назовите три типа команды безусловного перехода.

4.2. Какой может быть длина перехода в разных типах команды JMP?

4.3. Содержимое каких регистров модифицируется при выполнении безусловных переходов разных типов?

4.4. Какова максимальная длина условного перехода?

4.5. Каким образом может быть указан адрес перехода?

4.6. Какие флаги могут быть использованы в командах условного перехода после выполнения команды сложения?

4.7. Приведите возможные команды условных переходов, если после сравнения беззнаковых чисел D1иD2 оказалось: а)D1=D2, б) D1£ D2,

в) D1>D2.

4.8. Приведите возможные команды условных переходов, если после сравнения чисел со знаками P1иP2 оказалось: а) Р1 ¹Р2, б) Р1<Р2,

в) Р1 ³ Р2.

4.9. Какие команды могут использоваться для организации циклов?

4.10. Какова максимальная длина переходов при организации циклов?

4.11. Какие признаки, кроме СХ=0, могут быть использованы при организации циклов?

4.12. Как осуществляется переход к процедурам разных типов?

4.13. Назовите варианты команды возврата из процедуры.

 

5.ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

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

Коды строчных и заглавных букв английского алфавита можно найти в Таблице кодировки символов (Приложение, с 23).

 

5.1. Введите программу, используя текстовый редактор. Оттранслируйте и скомпонуйте программу в режимах TASM/ZI, TLINK/V.

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

5.3. Установите ловушку на одной из команд подпрограммы. В точке останова отройте в окне CPU локальное меню и выберите пункт CALLER.Пронаблюдайте исполнение этой инструкции.

5.4. Пронаблюдайте результат выполнения программы в окне WINDOW (режим USER SCREEN).

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

5.6. Убедитесь в работоспособности второго варианта программы.

 

6.ПРИМЕР ПРОГРАММЫ

 

TITLE CHANGE - ЗАМЕНА СТРОЧНЫХ БУКВ ЗАГЛАВНЫМИ

;---------------------------------------------------------------------------------------

 

DATASG SEGMENT PARA

MYTEXT DB 'Our Native Town',13,10, '$'

DATASG ENDS

 

STACKSG SEGMENT 'Stack'

DB 12 DUP(?)

STACKSG ENDS

 

CODESG SEGMENT PARA 'Code'

BEGIN PROC FAR

ASSUME SS:STACKSG, CS:CODESG, DS:DATASG

PUSH DS

SUB AX,AX

PUSH AX

MOV AX, DATASG

MOV DS, AX

LEA BX, MYTEXT

MOV CX, 10H

MT1: MOV AH, [BX]

CMP AH, 61H

JB MT2

CMP AH, 7AH

JA MT2

CALL COR

MT2: INC BX

LOOP MT1

LEA DX, MYTEXT

MOV AH, 09H

INT 21H

RET

BEGIN ENDP

 

COR PROC NEAR

NOP

AND AH, 0DFH

MOV [BX], AH

RET

COR ENDP

CODESG ENDS

END BEGIN

 

7. КРАТКАЯ ИНФОРМАЦИЯ О РАБОТЕ ТУРБО ОТЛАДЧИКА

 

Там, где это возможно, команды JMP и CALL выводятся в символическом виде. Если CS:IP указывают на команду JMP или команду условного перехода, то стрелка (стрелка вверх или вниз), показывающая направление перехода, будет выводиться только в том случае, если выполнение команды приведет к переходу.

Для перехода в локальное меню области Code окна CPU нужно нажать клавиши Alt-F10.

Локальное меню имеет вид:

| Goto | Переход

| Origin | Начало

| Follow | Следующая

| Caller | Вызывающая

| Previous | Предыдущая

| Search. | Поиск

| View source | Просмотр исходного кода

| Mixed Yes | Смешанный

| New cs:ip | Новый CS:IP

| Assemble | Ассемблер

| I /O > | Ввод-вывод

 

Команда Follow (Следующая) позиционирует по целевому адресу подсвеченной в данный момент инструкции. Область кода позиционируется заново, чтобы вывести код по адресу, указанному в подсвеченной в данный момент инструкции, по которому будет передано управление. Для условных переходов адрес показывается в случае выполнения перехода. Эту команду можно использовать с инструкциями CALL, JMP, инструкциями условных переходов и инструкциями INT.

Команда Previous (Предыдущий) восстанавливает область кода в то состояние (позицию), которое она имела до выполнения команды Follow.

Команда Caller (Вызывающая программа) позиционирует вас на инструкцию, по которой была вызвана текущая подпрограмма или прерывание.

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

Команда Previous (Предыдущий) восстанавливает область кода в то состояние (позицию), которое она имела до выполнения команды Caller.


КОДИРОВКИ СИМВОЛОВ

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

Как правило, коды имеют длину один байт и принимают значения от 0 до 255 (в настоящее время приобретает распространение и двухбайтная кодировка Unicode). Программы, работающие под DOS, используют ту кодировку, которая имеется в знакогенераторах адаптеров мониторов. На импортных компьютерах IBM PC используется Американский национальный стандартный код для обмена информацией ASCII (American Standard Code for Information Interchange).

В нашей стране разработаны кодировки, имеющие символы кириллицы. При этом символы с кодами 0...127 обычно совпадают с кодами ASCII, так что программа, выводящая сообщение на английском языке, будет работать одинаково на любом персональном компьютере. Альтернативная кодировка ГОСТа

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

Первые 32 кода (1...32) имеют два значения: управляющие символы и изобразительные символы. Когда DOS пересылает эти коды на монитор или принтер, они выполняют управляющие функции, а не отображают символы, например:

8-возврат на одну позицию; 9-горизонтальная табуляция; 10- перевод строки; 13- возврат каретки; 32- пробел.

Для получения изображения символов эти коды необходимо занести в буфер экрана (начальный адрес 0В800:0000Н).

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


Таблица кодировки символов для DOS

(Альтернативная кодировка ГОСТа)

 

с т а р ш а я ч а с т ь к о д а
м л а д ш а я ч а с т ь к о д а   D                                
D H                     A B C D E F
          @ P ' p А Р а р Ë
    !   A Q a q Б С б с ë
    "   B R b r В Т в т Є
    #   C S c s Г У г у є
    $   D T d t Д Ф д ф Ï
    § %   E U e u Е Х е х ï
    &   F V f v Ж Ц ж ц Ў
    · '   G W g w З Ч з ч ў
      (   H X h x И Ш и ш °
    )   I Y i y Й Щ й щ
  A * : J Z j z К Ъ к ъ
  B + ; K [ k { Л Ы л ы Ö
  C , < L \ l | М Ь м ь
  D - = M ] m } Н Э н э ¤
  E . > N ^ n ~ О Ю о ю
  F / ? O _ o   П Я п я  

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-10-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: