| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > Шифрование на ассемблере |
| Автор: unknow 15.5.2014, 20:05 |
| Доброго времени суток. Помогите. Задание такое: написать программу которая будет шифровать введенное слово МЕТОДОМ ГАММИРОВАНИЯ (если просто считать слово по символам то можно использовать команду XOR между символом сообщения и гаммой результат и будет закодированный символ. ) Гамма задается пользователем. Гамма должна быть равна длине сообщения. Помощь нужна в вводе с клавиатуры и как посимвольно просмотреть и сложить XOR все символы. Я начал писать и очень застрял не переходит по строчке. выводит 2 одинаковых символа или сколько указать в dl2 помогите пожалуйста ; Строки должны заканчиваться 0 .model small .stack 100h ; Размер стека 256 байт .data S1 db "Privet",0h S3 db "mnahki",0h n1 = $-1 s2 db 29 dup(?) ; строка s4 db 29 dup(?) ; строка dl1 dw 0 ;начальное значение dl2 dw 2 ;конечное значение .code ; Точка входа .startup ; Установка регистра DS на сегмент данных mov ax,@DATA mov ds,ax xor ax,ax ; Инициализация mov si,0 mov di,0 mov bx,0 mov cx,dl2 ;количество символов для считывания m1: cld lea si,S1[di] ;адрес откуда push ds pop es lodsb ; из s1 в al push si ; сохраняем текущий счетчик mov si,bx xor al,s3 inc si mov bx,si pop si ;восстановили счетчик lea di,s2 ; адрес куда rep stosb ; из al в s2 xor cx,cx ;—————————————————————вывод символа————————————————————— m5: mov cx,dl2 mov si,0 m4: mov dl,s2[si] mov ah,02 int 21h inc si loop m4 mov ax,4C00h int 21h EXITDOS: ; Выход в DOS end |
| Автор: ФедосеевПавел 16.5.2014, 18:24 |
| unknow, начни с константных строк, а уже потом введёшь их с клавиатуры. Объясни назначение строк s1, s2, s3 и s4. Потом, что ты хочешь от них получить. А то у тебя страшная мешанина строковых команд усугублённая префиксом rep - я даже не всё понял. Ещё я думаю, что вывод нужно реализовывать средствами BIOS - int 10h, т.к. при гаммировании будут получены и символы с кодами от 00h до 20h - управляющие. Их int 21h воспринимает как команды. А почему ты, используя макрос .startup, выполняешь инициализацию регистра ds? PS Воспользуйся тегом Код - плохо видно твой исходник. |
| Автор: макс12345 14.11.2018, 14:58 |
| будут получены и символы с кодами от 00h до 20hhttp://dolan.biz.ua/add/ |
| Автор: pilov 6.1.2019, 17:23 |
| |
| Автор: gracieanderson 2.9.2022, 15:53 |
| https://myassignmenthelp.live/au/ |