МИНИСТЕРСТВО ВЫСШЕГО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное бюджетное образовательное учреждение высшего образования
УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Факультет информационных систем и технологий
Кафедра «Измерительно-вычислительные комплексы»
Лабораторная работа №1
По дисциплине «Организация ЭВМ и систем»
Тема: «Создание программы на языке ассемблера»
Выполнила:
ст. гр. ИСТбд-22 Довледмурадова Акджагул
Проверил:
к.т.н., доцент ИВК Тамьяров А.В.
Ульяновск, 2021 г.
ЛАБОРАТОРНАЯ РАБОТА № 1
«Создание программы на языке ассемблера»
Цель работы: создание элементов программы для создания интерфейса
Порядок работы:
Для написания программы на Турбо Ассемблере существует два основных способа.
Написание мнемонического кода непосредственно внутри программного кода языка высокого уровня (С, Pascal и другие).
Написание ассемблерного кода в любом текстовом редакторе, сохраняющем информацию в коде ASCII. С последующей их компиляцией и линкованием.
Рассмотрим принцип написания программ без специальной оболочки, т.е. вторым способом. Блок-схема порядка написания и отладки такой программы представлена на рисунке 1.
|
|
Создание новой программы |
|
|
Редактирование |
|
|
Исходный файл Ассемблера *.ASM |
|
|
Ассемблирование |
|
|
Объектный файл *.OBJ |
|
|
Компоновка |
Если нужны изменения |
|
Выполняемый файл *.EXE |
|
|
Выполнение |
Рис. 1.1 Редактирование, ассемблирование, компоновка и выполнение.
Приступим к созданию первой программы на ассемблере.
Написание мнемонического кода
В программировании первой программой традиционно является программа, выводящая на экран сообщение "Привет!". Не будет исключением и наша программа, поскольку это является хорошей отправной точкой.
Войдите в текстовый редактор MS-DOS:
перейдите в режим MS-DOS;
загрузите Norton Comander или другую аналогичную файловую оболочку;
войдите в папку С:\TASM\BIN;
создайте файл с расширением .ASM
введите следующие строки
.MODEL SMALL
.STACK 100h
.DATA
HelloMessage DB 'Hello World',13,10,'$'
.CODE
START:
mov ax,@data
mov ds,ax
mov ah,9
mov dx,OFFSET HelloMessage
int 21h
mov ah,4ch
int 21h
END START
Если вы знакомы с языками Си, С++ или Паскаль, вам может показаться, что эта версия программы несколько длинновата. Это действительно так, программы на Ассемблере длиннее, поскольку каждая инструкция Ассемблера выполняет меньше функций, чем инструкция Паскаля, С++ или языка Си. С другой стороны, вам предоставляется свобода, и вы можете комбинировать эти инструкции Ассемблера так, как захотите. Это означает, что в отличие от языков Си и Паскаль, Ассемблер позволяет вам программировать компьютер таким образом, что он будет делать все, на что способен. Часто это стоит нескольких дополнительных строк.
Теперь снова войдем в редактор и модифицируем программу таким образом, чтобы она могла воспринимать какие-то данные из внешней среды (этой "внешней средой" будете вы, а вводимые данные будут набираться на клавиатуре). Измените программу следующим образом:
.model small
.data
string db 250,?, 256 dup ('$')
.code
start:
mov ax,@data
mov ds,ax
mov ax,0b800h
mov es,ax
mov ax,3
int 10h
mov ah,10
lea dx,string
int 21h
;посимвольно
lea si,string+1
xor cx,cx
mov cl,byte ptr [si]
add si,cx
mov di,160
mov ah,10
beg: std
lodsb
cld
stosw
loop beg
;по словам (разделитель - пробел)
lea di,string+1
mov si,320
xor cx,cx
mov cl,byte ptr [di]
add di,cx
inc cx
mov dx,cx
mov al,' '
deg: push ds
pop es
std
repnz scasb
push di
xchg dx,cx
sub cx,dx
add di,2
dec cx
mov ax,0b800h
mov es,ax
cld
mov ah,12
xchg si,di
begs: lodsb
stosw
loop begs
mov al,' '
stosw
mov si,di
pop di
mov cx,dx
or cx,cx
jnz deg
mov ah,10h
int 16h
mov ah,4ch
int 21h
end start
Таким образом, мы добавили в программу два очень важных новых средства: возможность ввода и принятие решений. Эта программа запрашивает у вас, является ли вводимое время временем после полудня, воспринимая ответ (один символ) с клавиатуры. Если таким ответом будет буква Y в верхнем или нижнем регистре (что означает ответ ДА), то программа выводит сообщение "Здравствуйте!", в противном случае выводится сообщение "Доброе утро!". В данной программе имеются все основные элементы полезной программы: ввод из информации внешней среды, обработка данных и принятие решения.
Сохраните эту модифицированную программу на диске.
Вывод: Я научился создавать элементы программы при создании интерфейса.