Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

МЕТОДИЧЕСКИЕ УКАЗАНИЯ. Предположим, что пользователь ввел номермесяца-03ипрограмма должна преобразовать этот номер в алфавитное значение March





Предположим, что пользователь ввел номермесяца-03ипрограмма должна преобразовать этот номер в алфавитное значение March. Программа для выполнения такого преобразования включает определениетаблицыалфавитных названий месяцев, имеющих одинаковую длину. Так как самое длинное название - September, то таблица имеет следующий вид:

MONTBLDB 'January..'

DB 'February.'

DB 'March....'

Каждый элемент таблицы имеет длину 9байт.Адресэлемента'January'- MONTBL+0, 'February' - MONTBL+9, 'March'-MONTBL+18.Длялокализации месяца 03, программа должна выполнить следующее:

1. Преобразовать введенный номер месяца из ASCII 33вдвоичное03.

2. Вычесть единицу из номера месяца: 03 - 1 = 02

3. Умножить результат на длину элемента (9): 02 х 9 = 18

4. Прибавить произведение (18) кадресуMONTBL; врезультатеполучится адрес требуемого названия месяца: MONTBL+18.

page60, 132

TITLEDIRECT(COM) Прямой табличный доступ

CODESGSEGMENT PARA 'Code'

ASSUMECS: CODESG, DS: CODESG, ES: CODESG

ORG 100H

BEGIN: JMP SHORT MAIN

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

THREE DB3

MONIN DB'11'

ALFMONDB'??? ', '$'

MONTABDB'JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN'

DB'JUL', 'AUG', 'SEP', 'OKT', 'NOV', 'DEC'

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

MAINPROCNEAR; Основная процедура

CALLC10CONV; Получить двоичное значение

CALLD10LOC; Выделить месяц из таблицы

CALLF10DISP; Выдать месяц на экран

RET

MAINENDP

; Перевод ASCII в двоичное представление:

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

C10CONVPROC

MOVAH, MONIN; Загрузить номер месяца

MOVAL, MONIN+1

XORAX, 3030H; Удалить ASCII тройки

CMPAH, 00; Месяц 01-09?

JZC20; да - обойти

SUBAH, AH; нет - очистить AH,

ADDAL, 10; и перевести в двоичное

C20RET

C10CONVENDP

; Выделение месяца из таблицы:

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

D10LOCPROC

LEASI, MONTAB

DECAL; Коррекция для таблицы

MULTHREE; Умножить AL на 3

ADDSI, AX

MOVCX, 03; Трехсимвольная пересылка

CLD

LEADI, ALFMON

REPMOVSB; Переслать 3 символа

RET

D10LOCENDP

; Вывод на экран симв.месяца:

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

F10DISP PROC

LEA DX, ALFMON

MOV AH, 09

INT 21H

RET

F10DISP ENDP

CODESGENDS

ENDBEGIN

Рис. 8.1. Прямая табличная адресация.

На рис. 8.1 приведен пример прямого доступа к таблице названий месяцев. Для краткости в программе используются вместодевятисимвольных названий - трехсимвольные. Введенный номер месяца определен в поле MONIN.

Предположим, что некоторая подпрограмма формирует запроснавводномера месяца в ASCII-формате в поле MONIN.

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

Хотя прямая табличная адресация очень эффективна, она возможна только припоследовательнойорганизации.Тоестьможноиспользовать такие таблицы, если элементы располагаются в регулярной последовательности: 1, 2, 3,... или 106, 107, 108,... или даже5, 10, 15.Однако, невсегда таблицы построенытакимобразом.Вследующемразделерассматриваются таблицы, имеющие нерегулярную организацию.

TITLE TABSRCH (COM) Табличный поиск

CODESGSEGMENT PARA 'Code'

ASSUMECS: CODESG, DS: CODESG, ES: CODESG

ORG 100H

BEGIN: JMP SHORT MAIN

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

STOKNIN DW'23'

STOKTAB DB'05', 'Excavators'

DB'08', 'Lifters '

DB'09', 'Presses '

DB'12', 'Valves'

DB'23', 'Processors'

DB'27', 'Pumps '

DESCRN10DUP(?)

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

MAINPROCNEAR

MOVAX, STOKNIN; Загрузитьномерэлемента

XCHGAL, AH

MOVCX, 06; Число элементов в таблице

LEASI, STOKTAB; Начальный адрес таблицы

A20:

CMPAX, [SI]; Сравнить элементы

JEA30; Если равны - выйти,

ADDSI, 12; нет - следующий элемент

LOOPA20

CALLR10ERR; Элемент в таблице не найден

RET

A30:

MOVCX, 05; Длина описания элемента

LEADI, DESCRN; Адрес описания элемента

INCSI

INCSI; Выделить описание

REPMOVSW; изтаблицы

RET

MAINENDP

R10ERRPROC

; < Вывод сообщения об ошибке>

RET

R10ERRENDP

CODESGENDS

END BEGIN

Рис. 8.2. Табличный поиск

СОДЕРЖАНИЕ РАБОТЫ

Отладить примеры и убедиться в их работоспособности

ВОПРОСЫ ВЫХОДНОГО КОНТРОЛЯ

1. Как в ассемблере задается таблица?

2. Перечислите способы адресации?







Дата добавления: 2014-11-10; просмотров: 663. Нарушение авторских прав; Мы поможем в написании вашей работы!




Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


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


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


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

Выработка навыка зеркального письма (динамический стереотип) Цель работы: Проследить особенности образования любого навыка (динамического стереотипа) на примере выработки навыка зеркального письма...

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

Правила наложения мягкой бинтовой повязки 1. Во время наложения повязки больному (раненому) следует придать удобное положение: он должен удобно сидеть или лежать...

Билиодигестивные анастомозы Показания для наложения билиодигестивных анастомозов: 1. нарушения проходимости терминального отдела холедоха при доброкачественной патологии (стенозы и стриктуры холедоха) 2. опухоли большого дуоденального сосочка...

Сосудистый шов (ручной Карреля, механический шов). Операции при ранениях крупных сосудов 1912 г., Каррель – впервые предложил методику сосудистого шва. Сосудистый шов применяется для восстановления магистрального кровотока при лечении...

Трамадол (Маброн, Плазадол, Трамал, Трамалин) Групповая принадлежность · Наркотический анальгетик со смешанным механизмом действия, агонист опиоидных рецепторов...

Studopedia.info - Студопедия - 2014-2025 год . (0.023 сек.) русская версия | украинская версия