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

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

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

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

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

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

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

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

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