Важная информация
Показано с 1 по 6 из 6

Тема: Brainfuck-интерпретатор

  1. #1 Brainfuck-интерпретатор 
    Супер модератор Аватар для Kakos_nonos
    Регистрация
    07.01.2011
    Адрес
    Кубань
    Сообщений
    1,531
    Сказал(а) спасибо
    126
    Поблагодарили 428 раз(а) в 291 сообщениях
    Записей в блоге
    6
    Вот код Brainfuck-интерпретатора на ассемблере
    Код asm:
    #make_COM#
     
    ; COM file is loaded at CS:0100h
    ORG 100h
     
    Lea di,prg
    mov ax,di
    add ax,3000
    mov si,ax
    mov cx,0
    nextcomm:
    cmp ds:[di],'+'
    je plus
    cmp ds:[di],'-'
    je minus
    cmp ds:[di],'>'
    je next
    cmp ds:[di],'<'
    je prew
    cmp ds:[di],'.'
    je vivod
    cmp ds:[di],','
    je vvod
    cmp ds:[di],'['
    je ncik
    cmp ds:[di],']'
    je kcik
    cmp ds:[di],0
    je halt
    inc di      ;Неправильные команды
    Jmp nextcomm
     
    plus:       ;Выполнение команды +
    inc ds:[si]
    inc di
    jmp nextcomm
     
    minus:      ;Выполнение команды -
    dec ds:[si]
    inc di
    jmp nextcomm
     
    next:       ;Выполнение команды >
    inc si
    inc di
    jmp nextcomm
     
    prew:       ;Выполнение команды <
    dec si
    inc di
    jmp nextcomm
     
    vivod:      ;Выполнение команды .
    mov ah,0eh
    mov al, ds:[si]
    mov bl,0
    int 10h
    inc di      
    jmp nextcomm
     
    vvod:       ;Выполнение команды ,
    mov ah,0
    int 16h
    mov ds:[si],al
    inc di
    jmp nextcomm
     
    ncik:       ;Выполнение команды [
    mov al,ds:[si]
    cmp al,0
    je a1
    inc di
    jmp nextcomm
    a1:
    mov bl,0
    a2:
    cmp ds:[di],'['
    jne a3
    inc bl
    a3: 
    cmp ds:[di],']'
    jne a4
    dec bl
    a4:
    inc di
    cmp bl,0
    jne a2
    jmp nextcomm
     
    kcik:       ;Выполнение команды ]
    mov al,ds:[si]
    cmp al,0
    jne b1
    inc di
    jmp nextcomm
    b1:
    mov bl,0
    b2:
    cmp ds:[di],'['
    jne b3
    dec bl
    b3: 
    cmp ds:[di],']'
    jne b4
    inc bl
    b4:
    dec di
    cmp bl,0
    jne b2
    inc di
    inc di 
    jmp nextcomm
    halt:
    mov ah,00h;Кнопку для ждания
    int 16h
    ret
     
    Prg db "[-]>[-]>[-]<>+++++++++[<++++++++>-]"
        db "<.>+++++++[<++++>-]<+.+++++++."
        db ".+++.[-]>++++++++[<++++>-]"
        db "<.#>+++++++++++[<+++++>-]"
        db "<.>++++++++[<+++>-]<.+++.------"
        db ".--------.[-]>++++++++["
        db "<++++>-]<+.[-]++"
        db "++++++++.";Hello world
    Пока что нет загрузки из файла, а запускает Hello world!
    Буду делать для FlopOS

    P.S. На ассемблере Emu8086 Hello world выводилось 5 минут
    Вложения
    • Тип файла: rar BF.rar (297 байт, Просмотров: 4)
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

  2. #2  
    Гуру Аватар для Konstantin Shcherba
    Регистрация
    08.11.2010
    Сообщений
    1,336
    Сказал(а) спасибо
    26
    Поблагодарили 139 раз(а) в 107 сообщениях
    Записей в блоге
    1
    Для FlopOS ничего переделывать не нужно, сервис DOS в Ваше программе не используется.
    Ответить с цитированием  
     

  3. #3  
    Супер модератор Аватар для Kakos_nonos
    Регистрация
    07.01.2011
    Адрес
    Кубань
    Сообщений
    1,531
    Сказал(а) спасибо
    126
    Поблагодарили 428 раз(а) в 291 сообщениях
    Записей в блоге
    6
    Надо добавить функцию загрузки из файла.
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

  4. #4  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    Если делать для флопос, то придется тщательно изучить метод работы с жестким диском, и файловой системой, ибо BIOS не дает для этого достаточно удобного сервиса, в отличае от DOS.
    Дружба-магия-радость!
    Ответить с цитированием  
     

  5. #5  
    Гуру Аватар для Konstantin Shcherba
    Регистрация
    08.11.2010
    Сообщений
    1,336
    Сказал(а) спасибо
    26
    Поблагодарили 139 раз(а) в 107 сообщениях
    Записей в блоге
    1
    Абадябер, да там всего 2 функции. Считать файл в буфер, записать файл из буфера.
    Ответить с цитированием  
     

  6. #6  
    Супер модератор Аватар для Kakos_nonos
    Регистрация
    07.01.2011
    Адрес
    Кубань
    Сообщений
    1,531
    Сказал(а) спасибо
    126
    Поблагодарили 428 раз(а) в 291 сообщениях
    Записей в блоге
    6
    Вот этот код будет грузить фаил в prg, название которого в fln?
    Код asm:
    mov ah,0   ;функция загрузки
    mov bx,ds  ;Фаил грузится в тот же сегмент, где и имя
    mov es,bx
    lea fln,si ;Указываем адрес
    lea prg,di
    int f3     ;Читаем
     
    cmp ah,0   ;Если ошибка, то выход
    jne exit
     
    ;программа
     
     
    fln db "Filename.bf"
    prg db 0
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Интерпретатор CHIP-8 на степлере.
    от Kakos_nonos в разделе Степлер
    Ответов: 3
    Последнее сообщение: 25.01.2012, 00:45
  2. Компилятор BrainFuck на СТЕПЛЕР-е
    от Абадябер в разделе Проекты на Степлере
    Ответов: 4
    Последнее сообщение: 24.01.2012, 03:10
  3. Калькулятор на Brainfuck
    от Dispetcher14 в разделе Другие языки программирования
    Ответов: 1
    Последнее сообщение: 22.01.2012, 14:08
  4. LSInt (интерпретатор Абадябера)
    от Абадябер в разделе Степлер
    Ответов: 15
    Последнее сообщение: 19.12.2011, 03:14
  5. Проблемы с интерпретатором Brainfuck
    от Kakos_nonos в разделе Turbo Pascal
    Ответов: 2
    Последнее сообщение: 16.04.2011, 17:00
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •