
- •Знайти кількість елементів двовимірного масиву цілих чисел, які потрапляють в інтервал [-5, 10].
- •Кількість цілих чисел з діапазону [40, 280], які діляться на 3 та на 5.
- •Кількість непарних елементів одновимірного масиву цілих чисел:
- •Inc di ;збільшую di
- •Знайти кількість від’ємних елементів двовимірного масиву цілих чисел.
- •Виконати шифрування/дешифрування рядка символів, використовуючи операції циклічного зсування байтів рядка на задану кількість позицій.
- •Ввести рядок і слово. Перевірити, чи слово входить у рядок. Знайти позицію входження. (трошки не працює).
- •Використовуючи логічні операції знайти контрольну суму рядка символів. Контрольна сума – це кількість одиниць у двійковому записі кодів символів.
- •Ввести речення. Відредагувати його так, щоб між словами було не більше одного пропуску.
- •Ввести рядок з клавіатури і посортувати символи в алфавітному порядку.
- •Int 21h ; ввести рядок
- •Написати програму на мові Assembler, яка підраховує кількість одиничних бітів у введеному з клавіатури слові.
- •Ввести рядок з клавіатури і порахувати кількість символів у слові.
Знайти кількість від’ємних елементів двовимірного масиву цілих чисел.
.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 кінець програми