@frilix
Иногда "творю"

Вызвать writeln и readln Pascal?

Доброго времени суток, стоит вопрос о том, как я могу вызвать функции writeln и readln в ассемблере. Интуитивно понимаю, что надо подключить какие-то заголовочные файлы, но вот какие ? Планирую использовать NASM

Работаю в линуксе, до этого использовал gcc, там вызывал функции scanf() и print(). Вообще даже подумываю использовать вызовы этих функций вместо _writeln_ и _readln_
  • Вопрос задан
  • 335 просмотров
Решения вопроса 1
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
Если работаете под DOS-ом - выводите текст через 21h прерывание,
если в windows - через вызовы WindowsApi
С использованием библиотеки C как-то так:
; ----------------------------------------------------------------------------
; helloworld.asm
;
; This is a Win32 console program that writes "Hello, World" on one line and
; then exits.  It needs to be linked with a C library.
; ----------------------------------------------------------------------------

    global  _main
    extern  _printf

    section .text
_main:
    push    message
    call    _printf
    add     esp, 4
    ret
message:
    db  'Hello, World', 10, 0
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
По идее, нужно использовать API системы, чтобы работать с вводом/выводом. В разных ОС это может быть реализовано по-разному. В ДОСе - через прерывания, а в современных - через вызов соответствующих функций.
Для Линукса - библиотека libc с функциями puts, printf и прочие.

Только я совершенно не вижу смысла писать это на ассемблере. Паскаль для того и хорош, что можно писать переносимый код при помощи обычных write/read.

Вместо Free Pascal можно попробовать и GNU Pascal . У последнего бэкенд реализован на том же GCC, что уже само собой подразумевает хорошую оптимизацию кода.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы