Работа с монитором и клавиатурой, прерывания DOS int 21h
Автор: Дима Большаков • Октябрь 24, 2022 • Лабораторная работа • 2,889 Слов (12 Страниц) • 168 Просмотры
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Сибирский государственный университет науки и технологий имени академика М.Ф. Решетнева»
Институт информатики и телекоммуникаций
Кафедра электронной техники и телекоммуникаций
Лабораторная работа №4
По дисциплине «Вычислительная техника и информационные технологии»
На тему: «Работа с монитором и клавиатурой, прерывания DOS int 21h »
Вариант - 6
Преподаватель _______ В.А.Сарычев__
подпись, дата инициалы, фамилия
Обучающаяся _БСК18-01______ _______
номер группы, подпись, дата инициалы, фамилия
Красноярск, 2021 г.
Цель работы: изучить принцип работы с монитором и клавиатурой, прерывания DOS int 21h через написание программы.
6. Отсортировать заданный массив целых чисел А(I) в порядке убывания их значений. I=1,2,....,10. Ввод массива А(I) организовать с клавиатуры по подсказке, выведенной на монитор. Результат вывести на экран.
Блок-схема:
[pic 1]
Рисунок 1-1 – Блок-схема
Рисунок 1-2 – Блок-схема[pic 2]
[pic 3]
Рисунок 1-3 – Блок-схема
Программа:
model small
.stack 100h
delay macro time
local ext,iter
push cx
mov cx,time
ext:
push cx
mov cx,5000
iter:
loop iter
pop cx
loop ext
pop cx
endm
.data
mas1 db 100 dup(0)
mas2 db 100 dup(0)
n db ?
m db ?
vv1 db 'Enter number of array rows n:$'
vv2 db 'Enter number of array columns m:$'
vv3 db 'Enter a string array after a space:$'
vv4 db ' Array mas2[$'
number db 3 dup(0)
number1 db ?
.code
vvod1 proc
push cx
push bx
xor bx,bx
xor ax,ax
xor cx,cx
mov ah,01h
int 21h
sub al,30h
mov ah,0
mov bx,10
mov cx,ax
L: mov ah,01h
int 21h
cmp al,0dh
je E
sub al,30h
mov ah,0
xchg ax,cx
push dx
mul bx ; ax*10
pop dx
add cx,ax ; cx=ax*10+cx
jmp L
E : mov al,cl
pop bx
pop cx
ret
vvod1 endp
vvod2 proc
push cx
push bx
xor bx,bx
xor ax,ax
xor cx,cx
mov ah,01h
int 21h
sub al,30h
mov ah,0
mov bx,10
mov cx,ax
L1: mov ah,01h
int 21h
cmp al,20h
je E1
sub al,30h
mov ah,0
xchg ax,cx
push dx
mul bx ; ax*10
pop dx
add cx,ax ; cx=ax*10+cx
jmp L1
E1 : mov al,cl
pop bx
pop cx
...