- •Лабораторная работа №2
- •Краткие теоретические сведения.
- •Индивидуальное задание.
- •Краткие теоретические сведения.
- •Индивидуальное задание.
- •Краткие теоретические сведения.
- •Краткие теоретические сведения.
- •Лабораторная работа №6 «Создание простейших .Сом и .Ехе программ»
- •Программа типа сом
- •Программа типа ехе
- •Изучение команд условной передачи управления
- •Лабораторная работа №10 «Написание собственного обработчика прерывания»
- •Индивидуальные задания
Программа типа ехе
ЕХЕ-программы немного сложнее в исполнении, но для них отсутствует ограничение размера в 64 килобайта, так что все достаточно большие программы используют именно этот формат. Конечно, ассемблер позволяет уместить и в 64 килобайтах весьма сложные и большие алгоритмы, а все данные хранить в отдельных файлах, но ограничение размера все равно очень серьезно, и даже чисто ассемблерные программы могут с ним сталкиваться.
; hello-2.asm
; Выводит на экран сообщение "Hello World!" и завершается
.model small ; модель памяти, используемая для ЕХЕ
.stack 100h ; сегмент стека размером в 256 байт
.code
start: mov ax,DGROUP ; сегментный адрес строки message
mov ds,ax ; помещается в DS
mov dx,offset message
mov ah,9
int 21h ; функция DOS "вывод строки"
mov ax,4C00h
int 21h ; функция DOS "завершить программу"
.data
message db "Hello World!",0Dh,0Ah,'$'
end start
В этом примере определяются три сегмента — сегмент стека директивой .STACK размером в 256 байт, сегмент кода, начинающийся с директивы .CODE, и сегмент данных, начинающийся с .DATA и содержащий строку. При запуске ЕХE-программы регистр DS уже не содержит адреса сегмента со строкой message (он указывает на сегмент, содержащий блок данных PSP), а для вызова используемой функции DOS этот регистр должен иметь сегментный адрес строки. Команда MOV AX,DGROUP загружает в АХ сегментный адрес группы сегментов данных DGROUP, a MOV DS,AX копирует его в DS. Для ассемблеров MASM и TASM можно использовать вместо DGROUP предопределенную метку «@data», но единственная модель памяти, в которой группа сегментов данных называется иначе, — FLAT (ей мы пока пользоваться не будем). И наконец, программы типа ЕХЕ должны завершаться системным вызовом DOS 4Ch: в регистр АН помещается значение 4Ch, в регистр AL помещается код возврата (в данном примере код возврата 0 и регистры АН и AL загружаются одной командой MOV AX,4C00h), после чего вызывается прерывание 21h.
Компиляция hello-2.asm:
Для TASM:
tasm hello-2.asm
tlink /x hello-2.obj
Размер получаемого файла hello-2.exe — 559 байт.
Содержание отчета:
Название работы
Цель работы
Приборы и оборудование
Краткие теоретические сведения
Индивидуальное задание
Распечатанный текст программы
Выводы.
Вопросы к защите лабораторной работы.
1. Этапы получения .СОМ и .ЕХЕ файлов.
Лабораторная работа № 7
Изучение команд условной передачи управления
Цель работы:научиться применять команды условной передачи управления при написании программ
Приборы и оборудование:IBM-совместимый компьютер,QC2.00wASM.
Вычислить выражение
1 вариант
x+13 15<x
z=y*35+5 5<x<=15
x+y+5 x<=5
x – int
y – char
2 вариант
x*3+18 25<=y
z=y*3+5*x17<=y<25
x*y+7 y<17
x – unsigned long
y – unsigned char
3 вариант
y–12 35<x
z= x/3+5*y –7<=x<=35
x%y+5 x<– 7
x – char
y–long
4 вариант
x*18 12<=x
z=y*35+5 2<x<12
x+y%5 x<=2
x – unsigned int
y – unsigned long
5 вариант
y%10 105 <= x
z= y*7+x*2 –15 <= x< 105
y+15 x < –15
x – int
y–int
6 вариант
y+10%x17 <=y
z= x – 35+y 10 < y < 17
y*7+5 y <= 10
x – unsigned char
y – unsigned long
7 вариант
y–13 –15 < x
z= y+x+50 –50 < x <= –15
x*y+1 x <= –50
x – int
y – char
8 вариант
y%13 150 <= y
z= y/5+50 50 < y < 150
x/3+y+5 y <= 50
x – unsigned int
y – unsigned long
9 вариант
y/ 13 155 <y
z=x+35+y%5 –5 <y<= 155
x+y y <= –5
x – long
y – long
10 вариант
x+13 15<x
z=y/5+x/5 5 <x<= 15
x+y–5 x <= 5
x – unsigned int
y – unsigned long
11 вариант
y%7+130 121 < y
z= y+35+x*5 –17 < y <= 121
x+2 y <= –17
x – int
y – long
12 вариант
y+13 88 < y
z= x/5+y%5 32 < y<= 88
x+y y <= 32
x – unsigned char
y – unsigned int
13 вариант
x+y+13 –15 < x
z= x*3+y/5 –25 < x <= –15
x/y+5 x <= –25
x – char
y–char
14 вариант
(x+y)%7 159 <=x
z= y*(35+x) 7 <= x <159
(x+y)*5 x < 7
x – unsigned char
y – unsigned long
15 вариант
x+13%y 150 < y+x
z= y*35%x 57 < y+x <= 150
x+y+2 y+x <= 57
x – long
y – int
Содержание отчета
Титульный лист
Наименование работы
Цель работы
Приборы и оборудованеи
Индивидуальное задание
Исходный модуль программы
Отладка на конкретном примере
Лабораторная работа №8
«Изучение команд управления циклами»
Цель работы:научиться испоьзовать команды управления циклами при написании ассемблерных программ.
Индивидуальные задания
y=
y=
y=
y=
y=
y=
y=
y=
y=
y=
y=
y=
y=
y=
y=
Для четных вариантов i – char
Для нечетных вариантов i–unsignedchar
Лабораторная работа №9
«Изучение команд обработки строк»
Цель работы:научиться испоьзовать команды обработки строк при написании ассемблерных программ.
Замечания: реализовать работу со строками при помощи команд обработки строк
Индивидуальные задания
Написать процедуру копирования строки.
Написать процедуру объединения двух строк.
Дана строка. Преобразовать строчные буквы в прописные. Рассмотреть только латинский алфавит
Дана строка. Преобразовать строчные буквы в прописные. Рассмотреть только русский алфавит
Дана строка. Преобразовать прописные буквы в строчные. Рассмотреть только латинский алфавит.
Дана строка. Преобразовать прописные буквы в строчные. Рассмотреть только русский алфавит.
Написать процедуру, осуществляющую сравнение строк. Рассмотреть только латинский алфавит.
Написать процедуру, осуществляющую сравнение строк. Рассмотреть только русский алфавит.
Написать процедуру, выводящую строку на экран путем прямого доступа к видеопамяти.
Зашифровать и расшифровать исходную строку.
Написать процедуру копирования массива типа char. Во входных параметрах необходимо задать количество элементов массива.
Написать процедуру копирования массива типа long. Во входных параметрах необходимо задать количество элементов массива.
Обменять между собой содержимое 0-й и 1-й страниц видеопамяти.
Сохранить содержимое 0-й страницы видеопамяти в файле на диске.
Очистить экран заданным цветом путем прямого доступа к видеопамяти.