Добавил:
vanya.tagaschev@ya.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
8
Добавлен:
21.03.2021
Размер:
123.72 Кб
Скачать

МИНИСТЕРСТВО ВЫСШЕГО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное бюджетное образовательное учреждение высшего образования

УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Факультет информационных систем и технологий

Кафедра «Измерительно-вычислительные комплексы»

Лабораторная работа №1

По дисциплине «Организация ЭВМ и систем»

Тема: «Создание программы на языке ассемблера»

Выполнила:

ст. гр. ИСТбд-22 Довледмурадова Акджагул

Проверил:

к.т.н., доцент ИВК Тамьяров А.В.

Ульяновск, 2021 г.

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

«Создание программы на языке ассемблера»

Цель работы: создание элементов программы для создания интерфейса

Порядок работы:

Для написания программы на Турбо Ассемблере существует два основных способа.

  1. Написание мнемонического кода непосредственно внутри программного кода языка высокого уровня (С, Pascal и другие).

  2. Написание ассемблерного кода в любом текстовом редакторе, сохраняющем информацию в коде ASCII. С последующей их компиляцией и линкованием.

Рассмотрим принцип написания программ без специальной оболочки, т.е. вторым способом. Блок-схема порядка написания и отладки такой программы представлена на рисунке 1.

Создание новой программы

Редактирование

Исходный файл Ассемблера *.ASM

Ассемблирование

Объектный файл *.OBJ

Компоновка

Если нужны изменения

Выполняемый файл *.EXE

Выполнение

Рис. 1.1 Редактирование, ассемблирование, компоновка и выполнение.

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

Написание мнемонического кода

В программировании первой программой традиционно является программа, выводящая на экран сообщение "Привет!". Не будет исключением и наша программа, поскольку это является хорошей отправной точкой.

Войдите в текстовый редактор MS-DOS:

  1. перейдите в режим MS-DOS;

  2. загрузите Norton Comander или другую аналогичную файловую оболочку;

  3. войдите в папку С:\TASM\BIN;

  4. создайте файл с расширением .ASM

  5. введите следующие строки

.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 в верхнем или нижнем регистре (что означает ответ ДА), то программа выводит сообщение "Здравствуйте!", в противном случае выводится сообщение "Доброе утро!". В данной программе имеются все основные элементы полезной программы: ввод из информации внешней среды, обработка данных и принятие решения.

Сохраните эту модифицированную программу на диске.

Вывод: Я научился создавать элементы программы при создании интерфейса.

Соседние файлы в папке Тамьяров А. В.