
- •Знайти кількість елементів двовимірного масиву цілих чисел, які потрапляють в інтервал [-5, 10].
- •Кількість цілих чисел з діапазону [40, 280], які діляться на 3 та на 5.
- •Кількість непарних елементів одновимірного масиву цілих чисел:
- •Inc di ;збільшую di
- •Знайти кількість від’ємних елементів двовимірного масиву цілих чисел.
- •Виконати шифрування/дешифрування рядка символів, використовуючи операції циклічного зсування байтів рядка на задану кількість позицій.
- •Ввести рядок і слово. Перевірити, чи слово входить у рядок. Знайти позицію входження. (трошки не працює).
- •Використовуючи логічні операції знайти контрольну суму рядка символів. Контрольна сума – це кількість одиниць у двійковому записі кодів символів.
- •Ввести речення. Відредагувати його так, щоб між словами було не більше одного пропуску.
- •Ввести рядок з клавіатури і посортувати символи в алфавітному порядку.
- •Int 21h ; ввести рядок
- •Написати програму на мові Assembler, яка підраховує кількість одиничних бітів у введеному з клавіатури слові.
- •Ввести рядок з клавіатури і порахувати кількість символів у слові.
Використовуючи логічні операції знайти контрольну суму рядка символів. Контрольна сума – це кількість одиниць у двійковому записі кодів символів.
.8086
.model small
.stack 200h
.data
; вхідна бітова послідовність в символах
bit_string db "6476c8"
len_bit_string=$-bit_string
adr_bit_string dd bit_string
tabl_16 dw 256 dup (0) ; CRC-таблиця
len_tabl_16=$-tabl_16
adr_tabl_16 dd tabl_16
polinom dw 1021h
.code
.startup
; розраховуємо CRC-таблицю
les di, adr_tabl_16
add di, len_tabl_16-2
std ; рухаємося по таблиці в зворотньому напрямкуmov bx, polinom
m1:
xor ax, ax
mov ah, cl ; індекс в таблиці для обчислення CRC
push cx ; вкладені цикли
mov ax, 8
m2:
;shi ax, cx
jnc m3 ; старші розряди не рівні – виконуємо зсув (частка нас не цікавить)
; якщо старші розряди рівні – виконуємо XOR:
xor ax, bx ; ax XOR polinom
m3: loop m2
pop cx
stosw
loop m1
; закінчили розрахунок CRC-таблиці
;хоr ах, ах
xor bx, bx
lds si, adr_bit_string
mov cx, len_bit_string
m4: mov bl, ah
shl ax, 8
xor bl, si
inc si
loop m4
.exit 0
END
Ввести речення. Відредагувати його так, щоб між словами було не більше одного пропуску.
.8086
.model small
.stack 200h
.data
n=50
buf db n,?,n DUP (' ')
msg db 'Vvedit rechenia(<50)','$'
.code
.startup
mov ah, 9h ; Введення невідредагованого речення на екран
lea dx, msg
int 21h
mov ah, 0Ah
lea dx, buf
int 21h
mov al, 0
mov cx, 0
d1:
scasb
je enddl
inc cx
jmp d1
enddl:
lea dx, buf
; організація послідовного за символами перегляду рядка
cycl1:
jcxz endcl
mov al, ' '
scasb
jne mb
dec dx
mov al, ' '
stosb
mb:
dec dx
mov al, ' '
scasb
jne m1
dec dx
mov al,' '
stosb
m1:
dec cx
jmp cycl1
endcl:
mov ah, 9h ; виведення результату на екран
lea dx, buf
int 21h
.exit 0
END
Виконати перетворення неупакованого BCD-формату цілого числа в упакований формат.
Ввести речення з клавіатури і порахувати кількість прогалин у реченні.
Написати програму на мові Assembler, яка переводить ціле число у вісімкову систему.
.8086
.model small
.stack 200h
.data
a dw 635
res dw ?
msg1 db 'Converting 635 from decimal to octal:$'
msg2 db 'the number 635 in octal: $'
.code
.startup
mov ax,a ;заношу в ах число 635 у десятковій системі
mov bx,8 ;заношу в bx дільник 8
mov dx,0 ;занулюю dx
mov cx,0 ;занулюю сх
m1:
div bx ;ділю число 635 на 8
push dx ;запам'ятати регістр dx у стеку
mov dx,0 ;занульовую dx
inc cx ;збільшую к-сть лічильника сх
cmp ax,0 ;порівнюю ах з нулем
jnz m1 ; перейти на m1, якщо ах не рівне 0
m2:
pop dx ;отримати зі стеку регістр dx
add dx,30h
mov ah,2
int 21h
loop m2
mov ah,9h ;номер функції виведення даних
lea dx,msg1 ;занесення в dx адресу повідомлення, яке буде виводитись
int 21h ;вивести повідомлення
mov ah,9h ;номер функції виведення даних
lea dx,msg2 ;номер функції виведення даних
int 21h ;вивести повідомлення
;виведення числа 635 у вісімковій системі числення
mov ah,40h ;номер функції DOS для виведення даних
mov bx,1 ;дескриптор дисплею
mov dx,ax ;адреса для виведення числа у вісімковій системі
mov res,ax ;записую виведення числа у змінну результа
int 21h ;вивести повідомлення
.exit 0
End