загрузка...
загрузка...
На головну

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

  1. Eлементи одновимірного масиву цілих чисел зсунути циклічно вліво на k позицій.
  2. N Концентрация напряжений в зоне контакта и среднее давление порядка 15 ... 20 МПа обусловливают взаимную диффузию металлов, что способствует повышению надежности соединения.
  3. Административно-правовые средства обеспечения личной безопасности граждан, охраны общественного порядка и обеспечения общественной безопасности.
  4. Активні операції КБ
  5. Аналіз розподілу та кооперації праці.
  6. Апериодическое звено первого порядка
  7. Арифметичні операції

.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 кінець програми

 



загрузка...
© um.co.ua - учбові матеріали та реферати