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

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

Читайте также:
  1. II. Работа с кувезом.
  2. II. Самостоятельная работа студентов на занятии.
  3. III. Работа с подобранной литературой
  4. III. Работа с подобранной литературой
  5. IV. Контрольная работа, ее характеристика
  6. IV. Лабораторная диагностика ВИЧ-инфекции
  7. T-FACTORY HRM - управление персоналом и работами
  8. V. САМОСТОЯТЕЛЬНАЯ РАБОТА
  9. V. САМОСТОЯТЕЛЬНАЯ РАБОТА СТУДЕНТОВ
  10. V. Самостоятельная работа студентов с больными.
  11. V2: Работа и энергия
  12. Window - работа с окнами.

Тема: Формат типовой программы на языке Ассемблер

Цель работы: Изучение принципа создания программы на языке Ассемблер

Задание:

1. Открыть (например, с помощью Блокнота) файл primer.asm из папки Система asm и внимательно изучите структуру программы, найдите описание сегмента данных и сегмента кодов.

2. Получить из файла primer.asm файл primer.exe

3. Написать линейныепрограммы для (на основе файла primer.asm):

- Логическое сложение двух однобайтных чисел

- Сложение двух однобайтных чисел

- Умножение двух однобайтных чисел

- Деление двух однобайтных чисел

4. Получить исполнительные файлы *.exe для написанных программ и выполните их пошаговую отладку в TD.exe. Сравните результаты работы программ с ожидаемыми результатами, докажите, что программы работают правильно.

Выполнение:

1. Рисунок 1.1: код программы на Ассемблере, из этого файла primer.asm мы получим исполняемый файл primer.exe и проверим его работу в программе TD.exe

Рисунок 1.2: мы видим окно программы Far Manager, с помощью которой мы получим исполняемый файл.

2. Рисунок 1.3: мы видим окно программы TD.exe, куда мы загрузили с помощью команды td primer.exe, нашу программу. Теперь проведем еще трассировку клавишей F7 и получим конечный результат.

Рисунок 1.4: мы провели трассировку следующих команд:

push ds

sub ax,ax

push ax

mov ax, dseg

mov ds,ax

mov ax, 058h

Все изменения можно посмотреть в ходе трассировки.

 

Сегмент кода
Сегмент данных
Сегмент стека

Рисунок 1.1 Файл primer.asm

Рисунок 1.2 Окно программы Far

Рисунок 1.3 Окно программы TD.exe

Рисунок 1.4 Результат трассировки

Выполнение:

3. Линейные программы.

a) Логическое сложение двух однобайтных чисел.

Код программы в сегменте кода:

mov ax,30; перемещаем в регистр ax однобайтное число 30

mov bx,40; перемещаем в регистр bx однобайтное число 40

or ax,bx; производим логическое сложение двух регистров ax и bx, результат запишется в регистр ax

Трассировка программы:

Рисунок 1.5

Рисунок 1.6

Исходные данные:

Регистр ax содержит значение 3010=001Eh

Регистр bx содержит значение 4010=0028h

Результат логического сложения: or ax,bx ax:=001E&0028h=003Eh

Проверим работу программы:

Переведем исходные данные в двоичную систему: 001Eh=1 1110, 0028h=10 1000

Проведем логическое сложение: и переведем полученное значение и h-код: 3E

Полученное значение вручную совпадает со значением, полученным в регистре, значит, программа работает правильно.

b) Сложение двух однобайтных чисел

Код программы в сегменте кода:

mov ax,6; записываем в регистр ax значение 6

mov bx,17; записываем в регистр bx значение 17

add ax,bx; производим сложение значений регистров ax и bx, результат записывается в регистр ax

Трассировка программы:

Рисунок 1.7

Рисунок 1.8

Исходные данные:

Регистр ax содержит значение 610=0006h

Регистр bx содержит значение 1710=0011h

Результат сложения: add ax,bx ax:=0006h+0011h=0017h

Проверим работу программы:

Сумма десятичных чисел: 6+17=23

Полученное значение в h-коде: 23=17h

Полученное значение в ручную совпадает со значение полученным в регистре, значит, программа работает верно.

c) Умножение двух однобайтных чисел

Код программы в сегменте кода:

mov al,15; записываем в регистр ax в младший разряд значение 15

mov dl,2; записываем в регистр dx в младший разряд значение 2

mul dl; производим умножение значений младших разрядов регистров ax и bx, результат записывается в регистр ax

Трассировка программы:

Рисунок 1.9

 

Рисунок 1.10

Исходные данные:

al регистра ax содержит значение 1510=0Fh

dl регистра dx содержит значение 210=02h

Результат умножения: mul dl ax:=al*dl=0F*02=1E

Проверим работу программы:

Переведем исходные данные в двоичную систему: 0Fh=11112, 02h=102

Произведем умножение: 1111*10=11110=1Eh

Полученное значение в ручную совпадает со значение полученным в регистре, значит, программа работает верно.

d) Деление двух однобайтовых чисел

Код программы в сегменте кода:

mov ax,40; записываем в регистр ax значение 40

mov dl,2; записываем в регистр dx в младший разряд значение 2

div dl; производим деление значений регистров ax и bx младшего разряда, результат записывается в регистр ax в старший разряд

Трассировка программы:

Рисунок 1.11

Рисунок 1.12

Исходные данные:

Регистр ax содержит значение: 4010=0028h

Младший разряд dl регистра dx содержит значение: 210=02h

Результат деления: div dl al:=ax/dl=0028/02=14

Результат записывается в младший разряд регистра ax потому что, размер делителя - байт.

Проверим работу программы:

Переведем исходные данные в двоичную систему: 0028h=10 10002, 02h=102

Произведем деление: 10 1000/10=1 0100=14h

Произведем деление в десятичной системе: 40/2=20=14h

Полученное значение в ручную совпадает со значение полученным в регистре, значит, программа работает верно.

 


 

ВЫВОД

По выполнению лабораторной работы на тему «Формат типовой программы на языке Ассемблер», мы изучили следующее:

· структуру программы на языке Ассемблера

· команды и создание исполнительного файла с помощью программы Far Manager

· директивы резервирования памяти (db, dw, dd)

· организацию вычислений

¨ логические команды

¨ арифметические операции

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

 


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



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.009 сек.)