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

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

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

КІТ – 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;

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

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