Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Программирование операций ввода-вывода

Автор:   •  Октябрь 5, 2022  •  Лабораторная работа  •  1,514 Слов (7 Страниц)  •  91 Просмотры

Страница 1 из 7

Министерство науки и высшего образования РФ

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«Ярославский государственный технический университет»

Кафедра «Информационный системы и технологии»

Отчет защищен

с оценкой ________

  1. Преподаватель

__________   Ю.В. Царёв

«___» ____________ 2022

Программирование операций ввода-вывода

Отчет о лабораторной работе по курсу «Машино-зависимые языки программирования»

ЯГТУ 09.03.04-003 ЛР

Отчет выполнил

студент гр. ЦПИ-11

[pic 1] Н.А. Бобровский

«19» мая 2022

2022

Цель работы: закрепить лекционный материал по командам прерывания на языке ассемблера и приобрести практические навыки использования этих команд в программах с операциями ввода-вывода.

Вариант 3 (Массив 5 на 5). Найти первый (последний) максимальный (минимальный) элемент двухмерного массива и указать его местоположение:

  1. элементы массива однобайтовые
  2. элементы массива двухбайтовые

a)

[pic 2]

TITLE EX_PROG

STACK SEGMENT PARA STACK 'STACK'

DB 64 DUP('STACK')

STACK ENDS

DSEG SEGMENT PARA PUBLIC 'DATA'

    LEN = 25

    MAS DB LEN DUP(?)

    MAX_EL DB -128

    POSITION DW 0

   

    MESS_MAX DB 0DH,0AH,"Maximum array element: $"

    MESS_POS DB 0DH,0AH,"Element position: (X,Y)$"

    MESS_ENTER DB "Enter (X,Y) element: $"

    MESS_ERROR DB 0DH,0AH, "Error... ", 0DH,0AH,"$"

     

    STRING DB 25, 26 DUP (?)

    N DW ?

    ARRAY DB 4 DUP(?)

DSEG ENDS

CSEG SEGMENT PARA PUBLIC 'CODE'

ASSUME CS:CSEG, DS:DSEG, SS:STACK

PROG:

    MOV AX, DSEG

    MOV DS, AX

    MOV ES, AX

    MOV BP, 0    

    MOV CX, LEN    

    XOR SI, SI

 

START:

ERROR_EXIT:

    CALL ENTER

   

    MOV DI, 0

    LEA DX, STRING

    MOV AH, 0AH

    INT 21H

    MOV DL, 0AH

    MOV AH, 2

    INT 21H

    MOV DL, 0DH

    MOV AH, 2

    INT 21H    

    LEA SI, STRING+2

    CMP [SI], 13

    JE ERROR

     

    CMP BYTE PTR [SI], "-"

    JNE METKA

    MOV DI, 1

    INC SI

METKA:

    XOR AX, AX

    MOV BL, 10

PROW_NUM:

    MOV DL, [SI]

    CMP DL, 13

    JE NUM_1

   

    CMP DL, '0'

    JB ERROR

    CMP DL, '9'

    JA ERROR

         

    SUB DL, '0'

    MUL BL

    ADD AL, DL

    INC SI

    JMP PROW_NUM

NUM_1:

    CMP DI, 1

    JNE END_NUM

    NEG AL

END_NUM:

    LEA SI, MAS

    ADD SI, BP

    MOV [SI], AL

    INC BP

   

LOOP START

 

XOR SI, SI

MOV CX, LEN

     

CYCLE:

    MOV AL, MAX_EL

    CMP MAS[SI], AL

    JG MAX_PROV

    JMP NEXT

MAX_PROV:

    MOV AL, [SI]

    MOV MAX_EL, AL  

NEXT:

    INC SI

   

LOOP CYCLE

MOV CX, LEN

XOR SI, SI

MOV BL, [SI]

FIND_POS:

    MOV AL, [SI]

    CMP AL, MAX_EL

    JE WRITE_POS

    JMP NEXT_POS

 

WRITE_POS:

    MOV POSITION, SI

    JMP RESULT

 

NEXT_POS:

    INC SI

        

LOOP FIND_POS

XOR DH, DH

MOV CX, LEN

XOR SI, SI

MOV BL, [SI]

RESULT:

    LEA DX, MESS_MAX

    MOV AH, 09H

    INT 21H

   

    MOV AL, MAX_EL

        MOV N, AX

        CALL METKA_2

        

        MOV BL, 5

    MOV AX, POSITION

    DIV BL

   

    INC AL

    ADD AL, '0'

    MOV MESS_POS+21, AL

   

    INC AH

    ADD AH, '0'

    MOV MESS_POS+23, AH

   

    LEA DX, MESS_POS

    MOV AH, 09H

    INT 21H

         

JMP OUT

METKA_2:

MOV SI, 3

MOV CX, 3

MOV BL, 10

MOV AX, N

CMP N, 0

JGE ARRAY_PROV

NEG AX

MOV ARRAY, '-'

ARRAY_PROV:

    MOV AH, 0

    DIV BL

    ADD AH, '0'

    MOV ARRAY+SI, AH

    DEC SI

    CMP CX, 1

    JE XYZ

LOOP ARRAY_PROV    

...

Скачать:   txt (8.3 Kb)   pdf (296.4 Kb)   docx (233.4 Kb)  
Продолжить читать еще 6 страниц(ы) »
Доступно только на Essays.club