Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2008, 16:21   #1
stilldreaming
Новичок
Джуниор
 
Регистрация: 19.05.2008
Сообщений: 2
По умолчанию Шифрование (assembler)

Ребят, помогите пожалуйста с заданием. Сам уже замучался, знакомых кто может помочь нету. Расчитываю на вас.
Задание такое
текст для шифрования вводится в командной строке. Удалить пробелы и зашифровать текст. Текст разбивается на тройки букв. Коды букв каждой тройки складываются с кодами букв слова DOG по модулю 26(при этом считается, что код буквы A - 1 и так далее). Хвост текста(остаток от разбиения на тройки не изменять.

вот текст того, что я написал:
Код:
.MODEL SMALL
.STACK 100h
.DATA
	text_b DB 83 DUP(?) 
	text_c  DB 80 DUP(?)
.CODE
encode  PROC
       	mov al,es:[di]
	mov ah,0
	add al,'D'	
	sub al,80h
	mov bl,26
	cbw
	idiv bl
	add ah,40h
	mov [si],ah
	inc si
	inc di
	mov al,es:[di]
	mov ah,0
	add al,'O'	
	sub al,80h
	mov bl,26
	cbw
	idiv bl
	add ah,40h
	mov [si],ah
	inc si
	inc di
	mov al,es:[di]
	mov ah,0
	add al,'G'	
	sub al,80h
	mov bl,26
	cbw
	idiv bl
	add ah,40h
	mov [si],ah
	inc si
	inc di
	clc 
	ret

encode  ENDP

start:
	mov ax,@data
	mov ds,ax
	mov cx,0
	mov cl,es:[80h]
	mov si,82h
	mov di, offset text_b
	mov dx,0
	dec cl
n:	mov al,es:[si]
	cmp al,20h
	je cont
	cmp al,0Dh
	je __end
	mov [di],al
	inc di
	inc bl
cont:            inc si
	loop n

__end:	mov al,bl
	mov bl,3h
	cbw
	idiv bl
	mov cx,0
	mov cl,al
	
	mov si, offset text_c
	mov di, offset text_b
	
n1:	call encode	
	loop n1


end_prog:	mov word ptr [si],0A0Dh
	inc si
	inc si
	mov byte ptr [si],'$'


	mov dx, offset text_c
	mov ah,09h
	int 21h
	mov ah,04Ch 
	mov al,0h 	
	int 21h
END start
для любого набора символов, программа все кодирует одинаково( в зависимости от количества символов).
Подскажите где ошибки плз.

Последний раз редактировалось rpy3uH; 19.05.2008 в 19:01.
stilldreaming вне форума Ответить с цитированием
Старый 19.05.2008, 16:56   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Вот я насколько понял примерно так:
Это МАСМ.
Код:
	.386
	.model flat,stdcall
	option casemap:none

.data
a		db "Привет Киев",0
b		db "DOG",0
cece		db 0 dup(100)
;______________
.code
start:
 mov esi, offset a
 mov edi, offset cece
 mov ebp, offset b
 xor eax,eax
 lodsb
 .while al!=0
   mov ah,byte ptr [ebp]

   add al,byte ptr [ebp]
   mov byte ptr [edi],al
   inc edi
   .if byte ptr [ebp]==0
    mov ebp, offset b
    .else
    inc ebp
   .endif
 .endw
ret
end start
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.05.2008, 22:52   #3
stilldreaming
Новичок
Джуниор
 
Регистрация: 19.05.2008
Сообщений: 2
По умолчанию

а если через TASM не подскажешь?
stilldreaming вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шифрование данных ASCII кодом на Assembler Cerebrate Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 26.02.2008 13:56
Шифрование Stanislav Общие вопросы Delphi 2 15.11.2007 21:56