Ассемблер TASm Зашифровать строку по таблице, алгоритмическая ошибка в коде.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by halif, 22 Apr 2012.

  1. halif

    halif New Member

    Joined:
    21 Apr 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    закрыть тему

    Code:
    code segment public
    assume cs:code, ds:data, ss: stek
    start: mov ax,data              ; настроим на начало сегмента данных
        mov ds,ax               ;сохранение начального адреса сегмента данных в регистр ds
        mov es,ax               ; es - тот же сегмент данных 
                            ; (для команд обработки цепочек)
        mov dx,offset strA      ; вывод строки 'Введите строку'
        mov ah,9                ;запись номера функции вывода строки
        int 21h;прерывание
        mov dx,offset strbuf          ;сохранение адреса выделенной области памяти под вводимую строку
         
    mov ah,0Ah              ;запись номера функции ввода строки
        int 21h                 ;прерывание
       
        
            
        MOV SI,OFFSET Strbuf              ;указать цепочку источник
        MOV DI,OFFSET outstr              ;указать цепочку приемник
        MOV CX,LENGTH Strbuf             ; длина строки
        @@1: lodsb
        MOV BX,OFFSET Table1     ;истинная таблица перекодировки 
        xlatb                       ;берем символ из 
        MOV DX, OFFSET TABLe2                ;таблица перекодировки
        xlatb
        stosb
        loop @@1
        
    code ends;конец кода программы
     
    data segment public;сегмент данных
     
    outstr db 256 dup(?)              ; строка для закодированной введенной строки
    strbuf db 256 dup (?); задание буфера для ввода строки
    strA db 'Input String',13,10,'$';строка «Введите строку»
    table1 db '61h,62h,63h,64h,65h,66h,67h,68h,69h,6Ah,6Bh,6Ch,6Dh,6Eh,6Fh,70h,71h,72h,73h,74h,75h,76h,77h,78h,79h,7Ah'; истИнная таблица
    Table2 db '7Ah,78h,76h,63h,62h,61h,64h,66h,67h,65h,68h,69h,6Ah,6Bh,6Ch,6Dh,6Eh,6Fh,70h,71h,72h,73h,74h,75h,77h,79h'; таблица перекодировки
     
     
    strend db 13,10,'$';переход на новую строку
     
    data ends;конец сегмента данных
    Stek segment stack;сегмент стека
    dw 128 dup (?)
    Stek ends ;конец сигмента стека 
    end Start ; конец программы
    две ASCII таблицы с истинным алфавитом и таблица составленная мной по которой и будет кодирование. я ввожу строчные буквы англ алфавита мне должен выдаться результат в виду закодированных букв согласно таблице кодировки. код без синтаксических ошибок но ничего не работает опыта мало поэтому что смог сделал не пойму в чем ошибка. Есть идея реализовать эту задачу так В цикле загрузить первый символ.
    Найти его в истинной табл.
    Далее по индексу взять символ из ложной.
    Вывести в другой массив или использовать текущий.
    Помогите кто чем сможет
     
    #1 halif, 22 Apr 2012
    Last edited: 22 Apr 2012