МИНИСТЕРСТВО ВЫСШЕГО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное бюджетное образовательное учреждение высшего образования
УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Факультет информационных систем и технологий Кафедра «Измерительно-вычислительные комплексы»
Лабораторная работа №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 в верхнем или нижнем регистре (что означает ответ ДА), то программа выводит сообщение "Здравствуйте!", в противном случае выводится сообщение "Доброе утро!". В данной программе имеются все основные элементы полезной программы: ввод из информации внешней среды, обработка данных и принятие решения.
Сохраните эту модифицированную программу на диске.
Вывод: Я научился создавать элементы программы при создании интерфейса.