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

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

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

Работаю в линуксе, до этого использовал gcc, там вызывал функции scanf() и print(). Вообще даже подумываю использовать вызовы этих функций вместо _writeln_ и _readln_
  • Вопрос задан
  • 340 просмотров
Решения вопроса 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
2ord
@2ord
По идее, нужно использовать API системы, чтобы работать с вводом/выводом. В разных ОС это может быть реализовано по-разному. В ДОСе - через прерывания, а в современных - через вызов соответствующих функций.
Для Линукса - библиотека libc с функциями puts, printf и прочие.

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

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

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

Похожие вопросы