48841 (608804), страница 2

Файл №608804 48841 (Робота з записами мови ассемблера) 2 страница48841 (608804) страница 22016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

Вихідні дані програми з’являються на дисплеї в ході роботи програми.

Вихідними даними програми проекту є створення масиву, додавання елемента, видалення елемента, зміна поля та очистка поля.

Висновки

У ході розробки курсового проекту були вивчені навички роботи з записами мови ассемблера, зокрема, створення масивів записів, доступу до них, створення в них записів, з можливістю управління елементами і очищення поля. Розроблена програма дозволяє ввести з клавіатури запис, представлений у вигляді прізвища, імені, по батькові, назва міста і дати народження, а потім за допомогою функціональних клавіш дозволяючих:

-додати запис;

-видалити запис;

-змінити поле;

-очистити поле.

Література

1. Финагенов К.Г. “Основы системного программирования” изд.”Радио

и Связь”2001 год.

2. Питер Абель “Ассемблер- язык и программирование для IBM PC”

изд. Киев “HTИ” 2003 год.

3. Зубков С.В.”Ассемблер для DOS,WINDOWS И UNIX ” Москва 2004г.

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”

Кафедра"Обчислювальної техніки та програмування"

Затверджую

__________________________

_ ________________/ /

“___” ________________2005 р.

Робота з записами мови ассемблера

Текст програми

Лист затвердження

xxxxxxxxxxxx

Виконав

ст. гр xxxxxx

x xxxxxx

“___” ________________2005 р.

Перевірив

xxxxxxxxxx.

“___” ________________2005 р.

Харків

2005

ЗАТВЕРДЖЕНО

xxxxxxxxxxxx

Робота з записами мови ассемблера

Текст програми

xxxxxxxxx – 12 00-01

Харків

2005

РАЗРАБОТКА ТЕКСТА ПРОГРАММЫ

Главная программа:

LOCALS

include defs.inc

.model tiny

.386

.387

.code

org 100h

start:

call clrscr ;очитска экрана

mov al,17h

mov bx,0000h

mov cx,80*25

call settextattr ;установка атрибутов текста

mov ax,0016h

call gotoxy

lea dx,title1

call writestring ;вывод заголовка

mov ax,0100h

call gotoxy

lea dx,separ

call writestring ;вывод разделителя

mov ax,1700h

call gotoxy

lea dx,separ

call writestring

call main ;вызов главной финкции

call clrscr

ret

main proc near

call writemenu ;вывод меню

cmp proglevel,3

jne @@l1

call viewel ;вывод текущего элемента

@@l1:

mov ax,1900h

call gotoxy

xor ax,ax

int 16h ;ожидание и чтение сканкода нажатой клавиши

cmp ah,sF10

je @@exit1

cmp proglevel,1

jne @@l2

call keyb1lvl

jmp main

@@l2:

cmp proglevel,2

jne @@l3

call keyb2lvl

jmp main

@@l3:

call keyb3lvl

jmp main

@@exit1:

ret

main endp

writemenu proc near ;вывод меню

push ax dx si

mov ax,1800h

call gotoxy

lea dx,clr

call writestring

mov ax,1800h

call gotoxy

xor ax,ax

mov al,proglevel

dec al

shl ax,1

lea si,menux

add si,ax

mov dx,[si]

call writestring

pop si dx ax

ret

writemenu endp

keyb1lvl proc near

cmp ah,sF2

jne @@ex1

mov proglevel,2

@@ex1:

ret

keyb1lvl endp

keyb2lvl proc near

cmp ah,sF3

jne @@ex1

mov ax,0

call input_record

mov proglevel,3

mov curitem,1

mov itemscnt,1

@@ex1:

ret

keyb2lvl endp

keyb3lvl proc near

cmp ah,sF3

jne @@l1

mov ax,itemscnt

call input_record

inc itemscnt

jmp @@ex1

@@l1:

cmp ah,sF6

jne @@l2

cmp curitem,1

je @@ex1

dec curitem

jmp @@ex1

@@l2:

cmp ah,sF7

jne @@l3

push ax

mov ax,curitem

cmp ax,itemscnt

je @@ll2

inc curitem

@@ll2:

pop ax

jmp @@ex1

@@l3:

cmp ah,sF4

jne @@l4

mov ax,curitem

dec ax

call input_record

jmp @@ex1

@@l4:

cmp ah,sF8

jne @@l5

pusha

mov ax,curitem

dec ax

xor dx,dx

mov bl,size STUD

mul bl

add ax,offset mas

mov di,ax

mov si,ax

add si,size STUD

mov ax,itemscnt

sub ax,curitem

xor dx,dx

mul bl

mov cx,ax

rep movsb

mov ax,curitem

cmp ax,itemscnt

jne @@ll4

dec curitem

@@ll4:

dec itemscnt

cmp itemscnt,0

jne @@lll4

mov proglevel,2

call clrworkfield

@@lll4:

popa

jmp @@ex1

@@l5:

@@ex1:

ret

keyb3lvl endp

include funcs.inc

include record.inc

proglevel db 1 ; 1 - массива еще нет

; 2 - создан пустой массив

; 3 - есть не пустой массив

title1 db 'Работа с записями языка ассемблера',0

data1 db 'Элемент ',0

data2 db ' из ',0

inpName db ' Имя : ',0

inpAge db ' Возраст: ',0

inpCity db ' Город : ',0

separ db 80 dup (196),0

clr db 79 dup (' '),0

menux dw offset menu1,offset menu2,offset menu3

menu1 db ' F2 - Создание массива F10 - Выход',0

menu2 db ' F3 - Добавление элемента F10 - Выход',0

menu3 db ' F3-Добав. эл. F4-Изм. эл. F6-<>',\

F8-Удал. эл. F10-Выход',0

АП 02093

curitem dw 1

itemscnt dw 0

mas: ;начало массива записей

end start

Ввод записи с клавиатуры:

input_record proc near ;ввод записи с клавиатуры

pusha

push ax

call clrworkfield

mov ax,0500h

call gotoxy

lea dx,inpName

call writestring

lea dx,TMP.SName

mov al,20

call readstring

mov ax,0600h

call gotoxy

lea dx,inpAge

call writestring

call readword

mov TMP.SAge,ax

mov ax,0700h

call gotoxy

lea dx,inpCity

call writestring

lea dx,TMP.SCity

mov al,20

call readstring

xor dx,dx

mov ax, size STUD

mov cx,ax

pop bx

mul bx

add ax,offset mas

mov di,ax

lea si,TMP

rep movsb

popa

ret

TMP STUD <>

input_record endp

viewel proc near ; вывод записи на экран

pusha

mov ax,curitem

dec ax

xor dx,dx

mov bl,size STUD

mul bl

add ax,offset mas

mov si,ax

call clrworkfield

cmp itemscnt,0

je @@ex2

mov ax,0500h

call gotoxy

lea dx,inpName

call writestring

lea dx,[si].SName

call writestring

mov ax,0600h

call gotoxy

lea dx,inpAge

call writestring

mov ax,[si].SAge

call writeword

mov ax,0700h

call gotoxy

lea dx,inpCity

call writestring

lea dx,[si].SCity

call writestring

@@ex2:

mov ax,1600h

call gotoxy

lea dx,data1

call writestring

mov ax,curitem

call writeword

lea dx,data2

call writestring

mov ax,itemscnt

call writeword

@@ex1:

mov ax,1900h

call gotoxy

popa

ret

viewel endp

memzero proc near ;Обнуление памяти

;DS:DX->Mem

;CX=SIZE

push ax cx di es

xor ax,ax

mov di,dx

push ds

pop es

cld

rep stosb

pop es di cx ax

ret

memzero endp

readstring proc near ;Чтение строки с клавиатуры

;DS:DX->буффер

;AL=макс. кол-во символов

push ax dx

xor cx,cx

mov cl,al

call memzero

mov @@buf,al

mov ah,0Ah

lea dx,@@buf

int 21h

lea si,@@buf

inc si

xor cx,cx

mov cl,[si]

inc si

pop di

push dx

rep movsb

pop dx ax

ret

@@buf db 0, 60 dup (?)

readstring endp

readword proc near ;Чтение числа с клавиатуры

push bx dx si

lea dx,@@tmps

mov al,3

call readstring

xor ax,ax

lea si,@@tmps

cmp byte ptr [si+1],0

jne @@l2

mov al,[si]

xor bx,bx

jmp @@l1

@@l2:

mov al,[si]

cmp al,'0'

jb @@ex1

cmp al,'9'

ja @@ex1

sub al,'0'

mov bl,10

mul bl

mov bx,ax

mov al,[si+1]

@@l1:

cmp al,'0'

jb @@ex1

cmp al,'9'

ja @@ex1

sub al,'0'

add ax,bx

jmp @@ex2

@@ex1:

xor ax,ax

@@ex2:

pop si dx bx

ret

@@tmps db 3 dup (?)

readword endp

writestring proc near ;Вывод строки на экран

;DS:DX->STR

push ax si

mov si,dx

cld

@@l1:

lodsb

test al,al

jz @@l2

push si

mov ah,0Eh

int 10h

pop si

jmp @@l1

@@l2:

pop si ax

ret

writestring endp

writeword proc near ;Вывод числа на экран

;EAX=WORD

pusha

cmp ax,0

jne @@ll1

mov ax,0E30h

int 10h

popa

ret

@@ll1:

lea dx,@@res_str

mov cx,20

call memzero

mov @@value,eax

fild @@value ;загрузка числа в сопроцессор

fbstp @@bcd_value ;выгрузка из сопроцессора в память

;в BCD формате (двоично-десятичный)

mov si,offset @@bcd_value+10-1

lea di,@@res_str

std

@@l1:

lodsb

test al,al

jz @@l1

push ax

shr al,4

test al,al

jz @@l3

add al,'0'

mov [di],al

inc di

@@l3:

pop ax

and al,0Fh

add al,'0'

mov [di],al

inc di

cmp si,offset @@bcd_value

jb @@l2

jmp @@l1

@@l2:

lea dx,@@res_str

call writestring

popa

ret

@@value dd 0

@@bcd_value dt 0

@@res_str db 20 dup (0)

writeword endp

gotoxy proc near ;Установить позицию курсора

;AH=Y AL=X

push ax bx dx

mov dx,ax

xor bh,bh

mov ah,2

int 10h

pop dx bx ax

ret

gotoxy endp

clrscr proc near ;Очитска экрана

push ax

mov ax,0003

int 10h

pop ax

ret

clrscr endp

settextattr proc near ;установка атрибутов текста

;AL=атрибут

;BL=X BH=Y - начальная позиция

;CX - количество знакомест

push ax bx cx di es

mov dl,80*2

push ax

xor ax,ax

mov al,bh

mul dl

xor dx,dx

mov dl,bl

shl dx,1

add ax,dx

mov di,ax

inc di

pop ax

mov dx,0B800h

push dx

pop es

@@l1:

stosb

inc di

loop @@l1

pop es di cx bx ax

ret

settextattr endp

clrworkfield proc near ; очитска рабочей части экрана

push ax cx dx

mov ax,0500h

lea dx,clr

mov cx,3

@@l1:

call gotoxy

call writestring

inc ah

loop @@l1

mov ax,1600h

call gotoxy

lea dx,clr

call writestring

pop dx cx ax

ret

clrworkfield endp.

sF2 equ 3Ch

sF3 equ 3Dh

sF4 equ 3Eh

sF5 equ 3Fh

sF6 equ 40h

sF7 equ 41h

sF8 equ 42h

sF9 equ 43h

sF10 equ 44h

STUD STRUC

SName db 20 dup (' ')

SAge dw 0

SCity db 20 dup (' ')

STUD ends


15

Характеристики

Тип файла
Документ
Размер
342,44 Kb
Тип материала
Учебное заведение
Неизвестно

Список файлов курсовой работы

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее