Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
base.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
494.08 Кб
Скачать

Знайти кількість від’ємних елементів двовимірного масиву цілих чисел.

.8086

.model small

.stack 100h

.data

N = 3 ;кількість рядків

M = 4 ;кількість стовпців

TBL DW 5,-6,1,-2 ;TBL-двовимірний масив

DW 4,-5,6,8

DW -3,9,2,-10

k DW ? ;кількість від'ємних чисел в масиві

.code

.startup

mov cx,N ;cx=N=3

xor di,di ;онулення регістра di

xor bx,bx ;онулення регістра bx

xor ax,ax ;онулення регістра ах

m1: push cx ;занесення сх в стек

mov cx,M ;сх=М=4

m2: cmp TBL[bx][di],0 ;порівняння елемента масиву з нулем

jge m3 ;якщо елемент масиву>=0, то перехід на мітку m3

add ax,1 ;якщо елемент масиву<0, то ах=ах+1

m3: add di,2 ;di=di+2

loop m2 ;якщо сх!=0, то перехід на мітку m2

pop cx ;вилучення сх зі стеку

add bx,di ;bx=bx+di

xor di,di ;онулення регістра di

loop m1 ;перехід на мітку m1

mov k,ax ;k=ax=кількість від'ємних чисел

.exit 0

END

Виконати шифрування/дешифрування рядка символів, використовуючи операції циклічного зсування байтів рядка на задану кількість позицій.

.8086

.model small

.stack 100h

.data

msg1 db 'Input string: ','$'

msg2 db 'Coded string: ','$'

msg3 db ' Decoded string: ','$'

MaxLen equ 200

String db MaxLen dup (?)

CodeSt db MaxLen dup (?)

DeCodeSt db MaxLen dup (?)

.code

mov ax,@data

mov ds,ax

mov ah,9h ;номер функції виведення даних

lea dx,msg1 ;адреса повідомлення, яке буде виводитись

int 21h ;виведення на екран повідомлення msg1

mov ah,3fh ;номер функції DOS введення даних

mov bx,0 ;дескриптор клавіатури

mov cx,MaxLen ;максимальна кількість символів

lea dx,String ;адреса рядка для виведення

int 21h ;ввести рядок

and ax,ax ;чи введено будь-які символи?

jz Done ;ні, перехід на кінець програми

mov cx,ax ;записати кількість введених символів в регістр СХ

push cx ;запам'ятати регістр СХ у стеку

lea bx,String ;записати в ВХ адресу введеного рядка

lea si,CodeSt ; занести у SI адресу зашифрованого рядка

lea di,DeCodeSt ;занести у DI адресу дешифрованого рядка

mov ah,9h ;номер функції виведення даних

lea dx,msg2 ;занести в DX адресу повідомлення, яке буде виводитись

int 21h ;вивести повідомлення

add si,cx

dec si ;адреса кінця рядка закодованого рядка

m1:

mov al,[bx] ;отримати наступний символ введеного рядка

rol al,1 ;циклічне зміщення символу вліво на 1

mov [si],al ;записати зашифрований символ у зашифрований рядок

ror al,1 ;циклічне зміщення закодованого символу вправо на 1

mov [di],al ;записати дешифрований символ у дешифрований рядок

inc bx ;вказівник на наступний символ введеного рядка

dec si ;вказівник на наступний символ зашифрованого рядка

inc di ;вказівник на наступний символ дешифрованого рядка

loop m1 ;виконати цикл

pop cx ;отримати зі стеку довжину рядка

mov ah,40h ;номер функції DOS для виведення даних

mov bx,1 ;дескриптор дисплея

lea dx,CodeSt ;адреса рядка для виведення зашифрованих символів

int 21h ;надрукувати рядок

mov ah,9h ;номер функції виведення даних

lea dx,msg3 ;занести в DX адресу повідомлення, яке виводитись

int 21h ;вивести повідомлення

mov ah,40h ;номер функції DOS для виведення даних

mov bx,1 ;дескриптор дисплея

lea dx,DeCodeSt ;адреса рядка для виведення дешифрованих символів

int 21h ;виведення рядка

Done:

mov ah,4ch ;номер функції DOS для завершення програми

int 21h ;завершити програму та вийти у DOS

END кінець програми

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]