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

5. Ввод, ассемблирование, компоновка, выполнение и анализ листинга исходной программы.

5.1. Создать с помощью редактора следующую программу с именем exasm2.asm:

.286

TITLE EXASM2 (EXE) Операции пересылки и сложения

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

STACKSG SEGMENT PARA STACK 'Stack'

DW 32 DUP(?)

STACKSG ENDS

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

DATASG SEGMENT PARA 'Data'

FLDA DW 250

FLDB DW 125

FLDC DW ?

DATASG ENDS

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

CODESG SEGMENT PARA 'Code'

BEGIN PROC FAR

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

PUSH DS ;Записать DS в стек

SUB AX,AX ;Записать в стек

PUSH AX ;нулевой адрес

MOV AX,DATASG ;Поместить адрес DATASG

MOV DS,AX ;в регистр DS

MOV AX,FLDA ;Переслать 0250 в АХ

ADD AX,FLDB ;Прибавить 0125 к АХ

MOV FLDC,AX ;Записать сумму в FLDC

RET ;Вернуться в DOS

BEGIN ENDP

CODESG ENDS

END BEGIN

Записать эту программу на диск.

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

5.3. С помощью текстового редактора LEXICON просмотрите листинг программы и запишите его в отчет.

Обратите внимание на машинный код слева:

B8 ----R

Четыре дефиса говорят о том, что ассемблер не может определить адрес DATASG; он определяется лишь когда объектная программа будет скомпонована и загружена для выполнения. Поскольку загрузчик может расположить программу в любом месте памяти, ассемблер оставляет данный адрес открытым и показывает это символом R; компоновщик должен будет подставить в это место действительный адрес.

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

5.5. С помощью текстового редактора LEXICON просмотрите листинги обоих программ exasm1.lst и exasm2.lst. Для этого установите курсор в панели NORTON на файл exasm1.lst и нажмите клавиши Alt F4. Затем перейдите в другое окно редактора LEXICON нажав клавиши Alt 2. Далее клавишей F10 выйдите в меню редактора LEXICON, выберите пункт меню "Текст", затем пункт меню "Загрузить". В

строке меню появится приглашение для ввода имени файла *.* , нажмите Enter. На экране появится список файлов из панели NORTON. Установите курсор на файле exasm2.lst и нажмите Enter. В окне редактора LEXICON появится листинг второй программы. Переход из окна в окно редактора LEXICON выполнять нажатием либо Alt 1 либо Alt2.

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

5.7. Определите в какой программе имеется сегмент данных и что он содержит. Выводы запишите в отчет.

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

5.9. Последовательность команд PUSH, SUB и PUSH инициализируют стек в обоих программах. Объясните как это происходит. Выводы запишите в отчет.

5.10. Две команды во второй программе обеспечивают адресацию сегмента данных:

0004 В8 ----R MOV AX,DATASG

0007 8E D8 MOV DS,AX

Объясните как это происходит. Выводы запишите в отчет.

СОДЕРЖАНИЕ ОТЧЕТА:

1. Листинги программ.

2. Выводы по анализу листингов.

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

1. Какую команду надо ввести в командной строке DOS для ассемблирования программы TEMPY.ASM с получением файлов LST, OBJ и CRF.

2. Какую команду надо ввести для программы TEMPY для:

а) выполнения через отладчик DEBUG,

б) непосредственного выполнения из DOS.

3. Объясните назначение каждого из следующих файлов:

а) file.asm

б) file.lst

в) file.crf

г) file.obj

д) file.exe

е) file.map

3. Напишите две команды для инициализации регистра DS, полагая, что имя сегмента данных - DATSEG.

4. Составьте ассемблерную программу для:

- пересылки 30Н (непосредственное значение) в регистр AL;

- сдвига содержимого регистра AL на один бит влево (команда SHL AL,1);

- пересылки 18Н (непосредственное значение) в регистр BL;

- умножения регистра AL на BL (команда MUL BL).

Не забывайте команду RET. В программе не требуются определение и инициализация сегмента данных. Не забывайте также копировать стандартную часть программы (основу программы) и использовать редактор для ее развития. Выполните ассемблирование и компоновку. Используя отладчик DEBUG, проверьте сегмент кодов, регистры и проделайте пошаговое выполнение (трассировку) программы.

ОТВЕТЫ:

3. MOV AX,DATSEG

MOV DS,AX

4. MOV AL,30H

SHL AL,1

MOV BL,18H

MUL BL

RET

Л а б о р а т о р н а я р а б о т а N 3

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