Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы / task4

.txt
Скачиваний:
44
Добавлен:
18.04.2022
Размер:
5.45 Кб
Скачать
.model small - модель памяти exe программы
.stack 100h – сегмент стека размеров в 256 байт
.data – сегмент данных
i dw 0h – индекс минимальной длины
String db ': $' – строка с данными: ‘:$’
Stg db 100h dup(0h)– создание массива для строки
.code – сегмент кода
start: - метка старта
Sort proc – Удалили, так как в ней нет смысла
mov ax,@data - в регистра AX смещение для данных
mov ds,ax - установить регистр DS равный AX то ест теперь там смещение.
mov ah, 00h – очищаем экран
mov al, 2h;
int 10h – используется для инициализации графического и видеорежима (установка видеорежима)
mov ah, 09h
lea dx,string – заносим в dx смещение нашей строки

Рекурсивно вводим слова по символам
Input: - Ввод массива(переход через jmp Input)
int 21h – прерывание (вызов функции DOS)
mov si, 0h
mov bx, 0h
mov cx, si
mov Stg[bx], cl; - Длина слова
cmp al, 32; - Проверка на пробел
jne Skip1 – если проверка прошла, то выполняются данные команды:
mov si, 0h
add bx, 10h - Начало следующего слова
jmp Input – переход на метку Input:

Skip1: - если проверка Skip1 не пройдена, выполняется переход сюда
inc si – увеличение si на 1
mov Stg[bx+si], al - Помещение символа в массив
cmp al, 13 – проверка на Enter
jne Input – если проверка прошла, то выполняются данные команды:
mov Stg[bx+si], 0h - Удаление Enter'а
mov i, bx; - Кол-во слов
mov bx, 0h


Находим индекс слова с минимальной длиной
Sort1:
mov di, bx - Индекс минимальной длины
mov ax, bx
add ax, 10h

Сранвниваем текущее слово со следующим, при успехе записываем и обновляем указатель на слово
Sort2:
mov si, ax
mov cl, Stg[di]
cmp cl, Stg[si] - проверка
jae Skip2
mov di, si - Если меньше

Skip2: - метка Skip2
add ax, 10h
cmp ax, i – сравнение с индексом минимальной длины
jbe Sort2 – если ax меньше или равен i, то выполняются данные команды:
mov si, 0h

Основной код, который записывает слова в нужном порядке и находит индекс минимального элемента
Sort3: - метка Sort3
moV cl, Stg[bx+si] - Смена слов
mov al, Stg[di]
mov Stg[bx+si], al
mov Stg[di], cl
inc si – si+1
inc di – di+1
cmp si, 10h
jb Sort3 - если si меньше 10h, то выполняются данные команды:
add bx, 10h
cmp bx, i
jb Sort1 - если bx меньше i, то выполняются данные команды:
mov ah, 02h - Функция установки позиции курсора:
mov bh, 0h - № Страницы
mov dh, 2h - № строки
mov dl, 0h - № столбца
int 10h
mov bx, 0h
mov si, 0h
mov ah, 2h - Фунция вывода символа
Output: - Вывод массива
inc si
mov dx, word ptr Stg[bx+si]
cmp dx, 0h
jne Skip3 - если dx не равно 0h, то выполняются данные команды:
cmp bx, i
je Exit – если bx равно i, то выполняются данные команды:
mov si, 0h
add bx, 10h - складываем
mov dx, ' '
Skip3: - метка Skip3
int 21h
cmp bx, i
jbe Output - если bx меньше i, то выполняются данные команды:
Exit: - метка Exit
mov ah, 4ch;
int 21h
Sort endp - ???
End Start - конец






КОД



.model small
.stack 100h;
.data
i dw 0h
String db ': $'
Stg db 100h dup(0h);
.code
start:
Sort proc
mov ax, @data;
mov ds, ax;
mov ah, 00h;
mov al, 2h;
int 10h
mov ah, 09h
Lea dx, String
int 21h
mov ah, 1h;
mov si, 0h
mov bx, 0h
Input:
int 21h
mov cx, si
mov Stg[bx], cl;
cmp al, 32;
jne Skip1
mov si, 0h
add bx, 10h;
jmp Input
Skip1:
inc si
mov Stg[bx+si], al;
cmp al, 13
jne Input
mov Stg[bx+si], 0h;
mov i, bx;
mov bx, 0h
Sort1:
mov di, bx;
mov ax, bx
add ax, 10h
Sort2:
mov si, ax

mov cl, Stg[di]
cmp cl, Stg[si]
jae Skip2
mov di, si;
Skip2:
add ax, 10h
cmp ax, i
jbe Sort2
mov si, 0h
Sort3:
moV cl, Stg[bx+si];
mov al, Stg[di]
mov Stg[bx+si], al
mov Stg[di], cl
inc si
inc di
cmp si, 10h
jb Sort3
add bx, 10h
cmp bx, i
jb Sort1
mov ah, 02h;
mov bh, 0h;
mov dh, 2h;
mov dl, 0h;
int 10h
mov bx, 0h
mov si, 0h
mov ah, 2h;
Output:
inc si
mov dx, word ptr Stg[bx+si]
cmp dx, 0h
jne Skip3
cmp bx, i
je Exit
mov si, 0h
add bx, 10h
mov dx, ' '
Skip3:
int 21h
cmp bx, i
jbe Output
Exit:
mov ah, 4ch;
int 21h
Sort endp
End Start
Соседние файлы в папке лабы
  • #
    18.04.20223.23 Кб43task12.asm
  • #
    18.04.20224.17 Кб43task12.txt
  • #
    18.04.2022998 б47task2.asm
  • #
    18.04.2022308 б43task2.obj
  • #
    18.04.20226.31 Кб44task4 (1).txt
  • #
    18.04.20225.45 Кб44task4.txt
  • #
    18.04.20222.06 Кб44v10.asm
  • #
    18.04.2022478 б58zadanie3.asm
  • #
    18.04.2022277 б45zadanie3.obj
  • #
    18.04.20221.15 Кб47zadanie4.asm
  • #
    18.04.2022516 б46zadanie4.obj