КІТ – 14в Юрченко Олександр
Лабораторна робота № 7.
Тема: "РОБОТА ЗІ СТРУКТУРАМИ МОВОЮ АССЕМБЛЕРА”.
Мета: Закріплення практичних навичок складання і налагодження програм з
використання типу даних "структура" мовою Ассемблера.
Індивідуальне завдання:
5. Задано послідовність структур. Структура містить поля по
характеристиці студентських груп: назва групи, успішність
(середня целочисленная оцінка), номер курсу. Використовувати "за
замовчуванням" у поле назва - назва власної групи. Вивести на
екран назву групи з максимальною успішністю.
Хід виконання лабораторної роботи.
Опис перемінних алгоритму програми.
grs- Покажчик на перший елемент послідовності структур про групи.
N - Кількість структур
MaxBal – максимальна з групп успішність
Sm – адрес структури з найбільшою успішністю у групі
Список полів структури
grName – назва групи
srbal – середній бал успішності у групі
kurs – курс групи
Текст програми на мові Assembler:
gr STRUC
grName db 'Kit14b '
srbal dw ?
kurs dw ?
gr ENDS
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
; СЕГМЕНТ ДАННЫХ
DATA SEGMENT ;описание сегмента данных
;создание массива используемых структур
grs gr <'Kit14c',100,5>
gr <'Kit14d',50, 4>
gr <,150,2>
gr <'Kit14e',20, 2>
gr <'Kit14f',80, 3>
gr <'Kit14g',10, 5>
gr <'Kit14h',20, 3>
gr <'Kit14i',8, 1>
gr <'Kit14j',45, 1>
gr <'Kit14k',35, 3>
gr <'Kit14l',110,5>
N dw 11 ;количество структур
MaxBal dw 0; средний балл
sm dw 0; адрес структуры с наиб. srbal
DATA ENDS
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
; СЕГМЕНТ СТЕКА
STAK SEGMENT stack ; сегмент стека
dw 30 dup(?) ; размером в 60 байт
tos label word
STAK ENDS ; конец сегмента стека
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
; СЕГМЕНТ КОДА
CODE SEGMENT ;описание сегмента кода
assume cs:code, ds:data, ss:stak
start: mov ax,data
mov ds,ax
mov ax,stak
mov ss,ax
mov sp,offset tos
;вывод названия группы с наилудшей успеваемостью
call far ptr GetMaxBal
;ожидание нажатия клавиатуры
mov ah,1
int 21h
;завершение работы программы
mov ah,4ch
int 21h
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
; ИСПОЛЬЗУЕМЫЕ ПРОЦЕДУРЫ
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
GetMaxbal proc far
xor cx,cx ;обнуление регистров
xor dx,dx
;поиск максимального значения поля год выпуска.
structnext:
mov ax,size grs ; размер структуры
mul cx ; умнож номер структуры на ее размер(адрес след структуры)
mov bx,ax ; в BX -адрес тек. структуры
mov dx,[bx.srbal]; успев. этой группы
cmp dx,MaxBal; сравнение
jle notlast
mov Maxbal,dx
mov sm, bx ; сохранение адреса этой структуры
notlast:inc cx
cmp cx,N; сравниваем с кол-вом груп
jne structnext
;вывод результата на экран
mov bx, sm
mov [bx.srbal-1], '$'
mov ah,9
lea dx,offset [bx.grName]
int 21h
ret
GetMaxBal endp
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
code ends
end start
Алгоритми:
Алгоритм основної програми
Алгоритм процедури
Результати роботи програми
Kit14b
Висновки по роботі.
У роботі ознайомилися:
- c псевдооператорами визначення даних типу структура;
- зі способами звертання до полів структури в тексті програми;
- с ініціалізацією структур;
- с визначення полів структур 'за замовчуванням';
- с командами виклику підпрограм, деякими перериваннями DOS;
- зі структурою головної програми;
- с висновком даних на екран за допомогою функцій DOS;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.