Робота зі структурами мовою асемблера

Страницы работы

Содержание работы

Лабораторна робота №8

Виконав студент гр. АП-31б

Комарьов Р. Ю.

Тема: «Робота зі структурами мовою асемблера»

Мета: Закріплення практичних навичок складання і налагодження програм з використання  типу  даних  "структура"  мовою  асемблера.

Індивідуальне завдання: Задано послідовність структур. Структура містить полючи по характеристиці студентських  груп:  назва  групи,   успішність (середня  цілочислена оцінка),  номер   курсу.   Використовувати   "за замовчуванням" у поле назва - назва власної групи. Вивести на екран назва групи з максимальною успішністю.

Вибір перемінних:

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

Висновок: виконавши дану лабораторну роботу я на практиці придбав і закріпив знання в складанні і налагодженні програм асемблера, з використання  типу  даних  "структура"  мовою  асемблера.

Похожие материалы

Информация о работе