Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/38: Рейтинг темы: голосов - 38, средняя оценка - 4.53
пк00мук
9 / 9 / 1
Регистрация: 08.06.2011
Сообщений: 185
#1

Шифратор и дешифратор Цезаря с использованием команд xlat, xlatb

27.11.2011, 19:40. Просмотров 7655. Ответов 15
Метки нет (Все метки)

Вообщем, бред полный. Дали задание по Assembler*y хотя толком его и не изучали. Написать шифратор и дешифратор алгоритма Цезаря с использованием команд xlat, xlatb. Примерно представляю смысл этих команд, и для чего они но как их реализовать, да еще и на Ассемблере... делал тоже самое на С.
Вообщем может у когото есть, может ктото поможет написать, ибо в ассемблере "ноль"

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 19:40
Ответы с готовыми решениями:

Программа с использованием команд обработки строк
Снова нужна ваша помощь с лабораторной:) Есть массив из символов (mas1 db...

Программа с использованием команд обработки строк
вобщем нужно напсать програмку, но я зашел в тупик задание: Задано 8 слов по...

Разработка программ с использованием цепочечных команд
помогите, пожалуйста, в написании программы: Ввести строку из произвольного...

Разработка программ с использованием цепочечных команд
добрый вечер, может у кого завалялись какие нибудь простенькие программки по...

Линейное программирование с использованием команд сдвига???
вычислить y с использованием сдвигов y=((c*3)/2)+((c+d)/4) c,d вводиться с...

15
Charles Kludge
Клюг
7641 / 3156 / 382
Регистрация: 03.05.2011
Сообщений: 8,382
27.11.2011, 20:16 #2
алгоритма Цезаря
Вот этого ?
Дык, причём здесь xlat(b)?
0
пк00мук
9 / 9 / 1
Регистрация: 08.06.2011
Сообщений: 185
27.11.2011, 21:11  [ТС] #3
да, вот этого.
Назначение: подмена байта в регистре al байтом из последовательности (таблицы) байтов в памяти.
Ну Шифр Цезаря это ведь сдвиг наших символов построчно. Я думаю если создать таблицу значений (алфавит к примеру), то этой командой нужно будет както брать значения из таблицы, которые мы сдвигаем. Тоесть например абвг - (результат) гдеё, где эти гдеё мы подменяем этой командой. Возможно я и не прав, но представляю это так. Если бы знал, то сам бы сделал, а так "небумбум" вообще. Препод пообещал, кто первый сделает этим методом, получит зачет на "отлично", какая бы не была у него ситуация )
0
Mikl___
Автор FAQ
11528 / 5967 / 535
Регистрация: 11.11.2010
Сообщений: 10,964
28.11.2011, 05:48 #4
пк00мук, шифр цезаря это когда A->D, B->E, C->F, ..., X->A, Y->B, Z->C
кодирование: исходная буква ("A"=код 41h)+сдвиг(3)=шифро-буква ("D"=код 44h)
при шифровке букв с кодом от 58h до 5Ah
исходная буква ("X"=код 58h)-17h=шифро-буква ("A"=код 41h)
декодирование: шифро-буква ("D"=код 44h)- сдвиг(3)=исходная буква ("A"=код 41h)
при декодировании букв с кодом от 41h до 43h ("A"=код 41h)+17h=исходная буква ("X"=код 58h)
0
пк00мук
9 / 9 / 1
Регистрация: 08.06.2011
Сообщений: 185
28.11.2011, 23:28  [ТС] #5
я знаю что такое Шифр Цезаря, я его писал на С, я не знаю как втулить хлат и хлат(б) в него
0
Mikl___
Автор FAQ
11528 / 5967 / 535
Регистрация: 11.11.2010
Сообщений: 10,964
29.11.2011, 04:16 #6
пк00мук, в GOOGLE строке вбей без кавычек "примеры использования команды XLAT"

Добавлено через 29 минут
Хотя, как учит практика, даже на это ты не способен, лови...
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
; masm dos com #
.286 
.model tiny
.code
org 100h
start:  mov ax,3
    int 10h
    mov ah,9
    mov dx,offset string
    int 21h
    mov ah,0Ah
    mov dx,offset buffer
    int 21h
    mov ch,0
    mov cl,buffer+1
    mov bx,offset table
    mov si,offset buffer+2
a1: lodsb
    xlat
    int 29h
    loop a1
    mov ah,0
    int 16h
    retn
table db 3
k=3
rept 252
k=k+1
db k
endm
string db 'введи строку и нажми на Enter',0Dh,0Ah,'$'
buffer db 255,?,255 dup(?)
end start
комментариев не будет
0
пк00мук
9 / 9 / 1
Регистрация: 08.06.2011
Сообщений: 185
29.11.2011, 23:42  [ТС] #7
25 ссылок по "примеры использования команды XLAT" просмотрел и не нашел данного текста.
был бы рад получить источник и без "словесных унижений". спасибо.
0
Mikl___
Автор FAQ
11528 / 5967 / 535
Регистрация: 11.11.2010
Сообщений: 10,964
30.11.2011, 05:06 #8
пк00мук, еще бы ты нашел этот текст через GOOGLE не поверишь, но я пишу программы сам, а вот тебе адрес источника данной программы
PS Буду рад, что просмотр 25 ссылок по примерам использования команды XLAT, не прошел для тебя даром...
0
пк00мук
9 / 9 / 1
Регистрация: 08.06.2011
Сообщений: 185
01.12.2011, 22:41  [ТС] #9
Да, не прошел.
Вот только в вашей программе, вы берете символы из таблицы АСКИ, а мне по заданию нужно заранее ввести алфавит, а из него уже брать символы. Забыл это сообщить. Но ничего, не буду задалбывать. И на этом спасибо.
0
Mikl___
Автор FAQ
11528 / 5967 / 535
Регистрация: 11.11.2010
Сообщений: 10,964
02.12.2011, 05:53 #10
пк00мук, а в чем проблема? Смотришь какому символу соответствует какой ASCII-код, например код латинской "А" равен 41 hex или 65 десятичное. Вместо буквы "A" допустим должна выводится буква "D" c кодом 44 hex = 63. Берешь и ставишь в таблице на 65 место букву "D" и так далее для всех букв, вместо неиспользованных символов поставь символ "*", просто я сделал это автоматизировано через
Assembler
1
2
3
4
5
6
table db 3 <--на это число будут сдвинуты все символы
k=3 <-- первый символ
rept 255 <-- число повторений
k=(k+1) & 255
db k
endm <-- конец макроса
0
пк00мук
9 / 9 / 1
Регистрация: 08.06.2011
Сообщений: 185
06.12.2011, 02:26  [ТС] #11
MASM не видит
Assembler
1
&
Добавлено через 5 часов 7 минут
помогите
0
Mikl___
Автор FAQ
11528 / 5967 / 535
Регистрация: 11.11.2010
Сообщений: 10,964
06.12.2011, 09:58 #12
пк00мук, напиши k=(k+1) AND 0FFh
0
пк00мук
9 / 9 / 1
Регистрация: 08.06.2011
Сообщений: 185
07.12.2011, 02:53  [ТС] #13
спасибо за помощь.
так же сам написал уже программу дешифрования. Вот только я немного не понял одного:
Assembler
1
2
table db 3 <--на это число будут сдвинуты все символы
k=3 <-- первый символ
Когда я сделал table db 1, то сдвиг остался на 3 все так же.
Когда сделал table db 1 и k=1, сдвиг стал на 1.
Когда вернул в table db 3 и k=1, то сдвиг остался всеравно на 1.

Тоесть в итоге получается что команда table db 3, никак не влияла на сдвиг, а влияло только К.
Хотя вы написали, что как раз table db 3 отвечает за сдвиг.

Добавлено через 13 минут
А как занести результат шифрования в файл.
А пример для дешифрирования взять из него же, результат дешифрирования перезаписать туда же?
0
Mikl___
Автор FAQ
11528 / 5967 / 535
Регистрация: 11.11.2010
Сообщений: 10,964
07.12.2011, 03:48 #14
пк00мук,
1) а сразу не было видно, что (table db 3) == (k=3)?
2) используй функции DOS "создать файл", "открыть файл", "записать в файл", "закрыть файл" Примеров в сети и учебниках полно
3) для дешифрации используй эту же программу с (table2 db -3) == (k=-3)
4) "открыть файл", "прочитать из файла" используя table2, "закрыть файл", вывести результат на экран
0
пк00мук
9 / 9 / 1
Регистрация: 08.06.2011
Сообщений: 185
07.12.2011, 04:11  [ТС] #15
Все, сделал сам.
0
Mikl___
Автор FAQ
11528 / 5967 / 535
Регистрация: 11.11.2010
Сообщений: 10,964
07.12.2011, 04:55 #16
пк00мук,
0
07.12.2011, 04:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2011, 04:55

Сумма элементов массива (с использованием MMX команд)
Здравствуйте уважаемые эксперты! Тему уже создавал, но в разделе &quot;Паскаль&quot;,...

Вычисление значения выражения с использованием арифметических команд
Проще говоря, вычислить вот это выражение на ассемблере a * (3 + b) – 2 * (c +...

Сумма элементов матрицы (с использованием SIMD-команд)
Здравствуйте! Прошу помочь мне со следующим заданием: Суммирование элементов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru