Нужна помощь с ассемблером.

Тема в разделе "Другие", создана пользователем net_vlad, 10 дек 2006.

Статус темы:
Закрыта.
  1. net_vlad

    net_vlad Гость

    Вкратце. Прога реализует алгоритм гаммирования. Для работы нужны два файла: plain.txt и secret.txt.
    Первый содержит открытый текст, второй изначально пустой, после отработки в него помещается зашифрованный текст. Алгоритм симметричен.
    Собственно, проблема: при работе с большими файлами (например, полная версия Властелина колец в txt - порядка 2.7 метра) файл шифруется не в полном объеме, а только некоторая часть от начала. Количество обработанной инфы от случая к случаю произвольно. Но кодирует правильно. Выручайте!

    Итак, сам код:

    .model tiny
    .code
    .386
    org 100h
    ginger:
    xor cx,cx
    mov ax,3D00h
    lea dx,plain
    int 21h
    mov bp,ax

    mov ax,3D02h
    lea dx,secret
    int 21h
    mov sp,ax

    mov si,0
    encoding:
    mov bx,si
    mov ax,word ptr a
    mul bx
    add ax,word ptr b
    push ax

    mov bx,bp
    mov ah,3Fh
    mov cx,2
    lea dx,buffer
    int 21h
    mov di,ax
    cmp di,0
    je get_out

    pop ax
    mov bx,word ptr buffer
    xor ax,bx
    mov word ptr buffer,ax

    mov ah,40h
    mov bx,sp
    mov cx,2
    cmp di,1
    jne go_on
    mov cx,1
    go_on:
    lea dx,buffer
    int 21h

    inc si
    jmp encoding

    get_out:
    ret

    a dw 0DADh
    b dw 07D8h
    plain db 'plain.txt',0
    secret db 'secret.txt',0
    buffer db 2 dup(?)
    end ginger

    Ну и в прикрепленном архиве - файлы для работы проги плюс сам код.
    P. S. Использовал компилятор MASM 6.11.
     

    Вложения:

    • asm.rar
      Размер файла:
      855,6 КБ
      Просмотров:
      51
  2. Fossil Code

    Fossil Code Гость

    При работе с файлами под досом в прерываниях используется 32-битовый указатель текущей позиции файла, содержащийся в двух регистрах. Словом, может переполняться указатель. Можно попробовать читать/писать буферами относительно текущей позиции в файле.
     
  3. supak21

    supak21 Гость

    народ помогите решить две задачки на ассемблре:
    1)найти min(b(i)), которое состоит из целых чисел i=1,2...10
    2)протрабулировать функцию y(x), задан в виде:
    y(x)=ax+b, если i<x<=5
    y(x)=bx+a, если 5<x<=10
    где a - max(a(i)), a b -max(b(i)); i=1,2,...,5
    Нахождение max оформить в виде программного шага
    табуляция x=1
    всем кто поможет огромное мпасибо )

    помогите решить на ассемблере:
    1)найти min(b(i)), которое состоит из целых чисел i=1,2...10
    2)протрабулировать функцию y(x), задан в виде:
    y(x)=ax+b, если i<x<=5
    y(x)=bx+a, если 5<x<=10
    где a - max(a(i)), a b -max(b(i)); i=1,2,...,5
    Нахождение max оформить в виде программного шага
    табуляция x=1
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей