Лабораторна робота №8
Комарьов Р. Ю.
Тема: «Робота зі структурами мовою асемблера»
Мета: Закріплення практичних навичок складання і налагодження програм з використання типу даних "структура" мовою асемблера.
Індивідуальне завдання: Задано послідовність структур. Структура містить полючи по характеристиці студентських груп: назва групи, успішність (середня цілочислена оцінка), номер курсу. Використовувати "за замовчуванням" у поле назва - назва власної групи. Вивести на екран назва групи з максимальною успішністю.
Вибір перемінних:
Std_grp STRUC
NameG db 'NO NAME '
Ocenka dw ?
Kurs dw 1000
Std_grp ENDS
Revizor Std_grp <'AP-31b',6,2>
Std_grp <'AP-21',3,2>
Std_grp <'AP-61',4,2>
Std_grp <'AP-51a',3,2>
Std_grp <'AP-51b',5,2>
Std_grp <'Ep-12k',1,2>
Std_grp <'Spec',2,2>
Std_grp <'S-49',3,2>
Std_grp <'MT-45',1,2>
Std_grp <'MH-14',1,2>
String1, String2 |
Допоміжні рядки |
Lider |
Лідуюча група |
MaxOcenka |
Максимальна оцінка |
N |
кількість елементів у структурі |
Текст програми ( lab8.с ):
Std_grp STRUC
NameG db 'NO NAME '
Ocenka dw ?
Kurs dw 1000
Std_grp ENDS
DATA SEGMENT
N dw 10
Revizor Std_grp <'AP-31b',6,2>
Std_grp <'AP-21',3,2>
Std_grp <'AP-61',4,2>
Std_grp <'AP-51a',3,2>
Std_grp <'AP-51b',5,2>
Std_grp <'Ep-12k',1,2>
Std_grp <'Spec',2,2>
Std_grp <'S-49',3,2>
Std_grp <'MT-45',1,2>
Std_grp <'MH-14',1,2>
MaxOcenka dw 0
Lider dw 0
String1 db 'Revizor:',0Dh,0Ah,0Dh,0Ah,'$'
String2 db 'MaxOcenka:$'
DATA ENDS
STAK SEGMENT stack
dw 30 dup(?)
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
mov ax,0700h
mov bh,0Fh
mov cx,0
mov dh,25
mov dl,80
int 10h
mov ah,09h
mov dx, offset String1
int 21h
call far ptr GetOcenka
mov ah,1
int 21h
mov ah,4ch
int 21h
IntPrint proc far
push ax
push bx
push cx
push dx
xor cx,cx
mov ax,dx
mov bx,10
nextnum:
xor dx,dx
div bx
push dx
inc cx
or ax,ax
jne nextnum
numnext:
pop ax
mov ah,0Eh
add al,'0'
xor bh,bh
mov bl,7
int 10h
loop numnext
pop dx
pop cx
pop bx
pop ax
ret
IntPrint endp
GetOcenka proc far
xor cx,cx
xor dx,dx
next:mov ax,size Std_grp
mul cx
add ax,offset Revizor
mov bx,ax
mov dx,[bx.Ocenka]
cmp dx,MaxOcenka
jle notmax
mov MaxOcenka,dx
mov Lider,cx
notmax: inc cx
cmp cx,N
jne next
mov ah,9
lea dx,String2
int 21h
mov ax,size Std_grp
mul Lider
add ax,offset Revizor
mov bx,ax
lea dx,[bx.NameG]
mov [bx.NameG+15],'$'
mov ah,9
int 21h
mov dx,MaxOcenka
call far ptr IntPrint
ret
GetOcenka endp
code ends
end start
Результати роботи програми:
Revizor:
MaxOcenka:AP-31b 6
Висновок: виконавши дану лабораторну роботу я на практиці придбав і закріпив знання в складанні і налагодженні програм асемблера, з використання типу даних "структура" мовою асемблера.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.