Лабораторная работа №31 / Отчет(5 лаба)
.docФедеральное агентство по образованию
Уфимский государственный авиационный технический университет
Кафедра технической кибернетики
Отчет
По лабораторной работе №3
«Ассемблер: программирование операций ввода-вывода»
Выполнил: студент гр. РС-218
Иванов О.В.
Проверила: ассистент Семененко Д.В.
Уфа 2008
Цель работы: целью работы является закрепление лекционного материала по командам прерывания на языке ассемблера и приобретение практических навыков использования этих команд в программах с операциями ввода-вывода.
Задание: определить, находиться ли минимальный элемент двухмерного массива на главной диагонали или нет. Элементы массива однобайтовые.
Листинг программы
TITLE MIN_EL_B
STACK SEGMENT PARA STACK 'STACK'
DB 64 DUP('STACK ')
STACK ENDS
DSEG SEGMENT PARA PUBLIC 'DATA'
Mas db 1,3,4,2,6
db 1,5,9,8,6
db 7,1,2,8,3
db 1,2,9,8,1
db 4,7,8,2,8
Len_mas equ 5
Mes1 db 0ah,0dh,'Minimalnyi element massiva = $'
Mes2 db 0ah,0dh,'Element massiva nahoditsj na glav diag! $'
Min db ?
I dw ?
J dw ?
DSEG ENDS
CSEG SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CSEG, DS:DSEG, SS:STACK
START PROC FAR
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DSEG
MOV DS,AX
XOR AX,AX
XOR DI,DI
MOV CX,5
LEA BX,Mas
MOV DL,byte ptr [BX];
CYC1: PUSH CX
XOR SI,SI
MOV CX,Len_mas
INC DI;
CYC2: CMP BYTE ptr [BX+SI],DL
JA NOT_MIN
MOV DL,BYTE ptr [BX+SI]
MOV Min,DL
MOV I,DI;
MOV J,SI
NOT_MIN:
INC SI
LOOP CYC2
POP CX
ADD BX, Len_mas
LOOP CYC1
XOR DX,DX
MOV DX,I
CMP DX,J
JNE K1
MOV AH,09H
MOV DX,OFFSET Mes2
INT 21h
K1:
MOV AH,09H
MOV DX,OFFSET Mes1
INT 21h
MOV AH,02H
MOV DL,Min
ADD DL,30h
INT 21h
EXIT: RET
START ENDP
CSEG ENDS
END START
Тестирование
Тест |
Ожидаемый результат |
Фактический результат |
Mas db 1,3,4,2,6 db 1,5,9,8,6 db 7,1,2,8,3 db 1,2,9,8,1 db 4,7,8,2,8
|
Element massiva nahoditsj na glav diag |
Element massiva nahoditsj na glav diag |
Вывод: в ходе лабораторной работы приобрели навыки написания программ с использованием прерываний в операциях ввода/ввода.