Лабораторная работа №3 / Отчет(5 лаба)
.docФедеральное агентство по образованию
Уфимский государственный авиационный технический университет
Кафедра технической кибернетики
Отчет
По лабораторной работе №3
«Ассемблер: программирование операций ввода-вывода»
Выполнил: студент гр. РС-218
Потапов В.М.
Проверила: ассистент Семененко Д.В.
Уфа 2007
Цель работы: целью работы является закрепление лекционного материала по командам прерывания на языке ассемблера и приобретение практических навыков использования этих команд в программах с операциями ввода-вывода.
Задание: найти последний максимальный элемент двухмерного массива и указать его местоположение. Элементы массива однобайтовые.
Листинг программы
TITLE MAX_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,7,8,2,2,2
db 1,0,9,8,6,7,8,4,5,4
db 7,1,9,8,3,7,8,9,2,3
db 1,2,9,8,0,7,9,4,2,3
db 4,7,8,2,8,2,1,8,3,2
Len_mas equ 10
Mes1 db 0ah,0dh,'Maximalnyi element massiva = $'
Mes2 db 0ah,0dh,'Adres elementa massiva = $'
Max 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
JB NOT_MAX
MOV DL,BYTE ptr [BX+SI]
MOV Max,DL
MOV I,DI;
MOV J,SI
NOT_MAX:
INC SI
LOOP CYC2
POP CX
ADD BX, Len_mas
LOOP CYC1
XOR DX,DX
MOV AH,09H
MOV DX,OFFSET Mes1
INT 21h
MOV AH,02H
MOV DL,Max
ADD DL,30h
INT 21h
MOV AH,09H
MOV DX,OFFSET Mes2
INT 21h
MOV AH,02H
MOV DX,I
ADD DX,30h
INT 21h
MOV AH,02H
MOV DL,02Ch
INT 21h
MOV AH,02H
INC J
MOV DX,J
ADD DX,30h
INT 21h
EXIT: RET
START ENDP
CSEG ENDS
END START
Тестирование
Тест |
Ожидаемый результат |
Фактический результат |
Mas db 1,3,4,2,6,7,8,2,2,2 db 1,0,9,8,6,7,8,4,5,4 db 7,1,9,8,3,7,8,9,2,3 db 1,2,9,8,0,7,9,4,2,3 db 4,7,8,2,8,2,1,8,3,2
|
Mas[4,7]=9 |
Mas[4,7]=9 |
Вывод: в ходе лабораторной работы приобрели навыки написания программ с использованием прерываний в операциях ввода/ввода.