Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler 01.doc
Скачиваний:
19
Добавлен:
09.11.2019
Размер:
727.04 Кб
Скачать

1. Прямой табличный доступ

1.1. Записать в текстовом редакторе NORTON следующую программу в СОМ-формате:

.286

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

CODESG SEGMENT PARA 'Code'

ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG

ORG 100H ;Начало в конце PSP

BEGIN: JMP SHORT MAIN ;Обход через данные

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

THREE DB 3 ;Элементы данных

MONIN DB '11'

ALFMON DB '???','$'

MONTAB DB 'JAN','FEB','MAR','APR','MAY','JUN'

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

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

MAIN PROC NEAR ;Основная процедура

CALL C10CONV ;Получить дв. значение

CALL D10LOC ;Выделить месяц

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

RET

MAIN ENDP

; Перевод ASCII в двоичное

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

C10CONV PROC

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

MOV AL,MONIN+1

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

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

JZ C20 ;Да - обойти

SUB AH,AH ;Нет - очистить АН

ADD AL,10 ;и перевести в дв.

C20: RET

C10CONV ENDP

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

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

D10LOC PROC

LEA SI,MONTAB

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

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

ADD SI,AX

MOV CX,03 ;Трехсимв. пересылка

CLD

LEA DI,ALFMON

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

RET

D10LOC ENDP

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

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

F10DISP PROC

LEA DX,ALFMON

MOV AH,09

INT 21H

RET

F10DISP ENDP

CODESG ENDS

END BEGIN

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

1.2. Выполнить ассемблирование и компоновку программы. Листинг программы записать в отчет.

1.3. Выполнить полученный СОМ-файл, установив на него курсор в панели NORTON и нажав Enter. С помощью клавиш Ctrl-O проверить полученное от программы сообщение.

1.4. Вызвать отладчик DEBUG на выполнение программы. Выполнить трассировку программы до процедуры D10LOC. Просмотреть сегмент кодов (D CS:100). Продолжить трассировку программы до окончания процедуры D10LOC. Повторить просмотр сегмента кодов, выводы записать в отчет. Продолжить трассировку программы до команды INT 21H. Выполнение этой команды программы обеспечить вводом команды отладчика G xxxх, где хххх - адрес следующей команды, который

больше адреса команды INT на 2(относительный адрес внутри сегмента кодов). Выводы о работе программы записать в отчет.

1.5. С помощью текстового редактора изменить номер месяца в поле данных MONIN. Повторить ассемблирование и компоновку программы. Запустить программу из панели NORTON и проверить полученный результат.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]