Пример "шапки" и сегментации EXE программы под DOS для FASM - Assembler
Формулировка задачи:
...доброго времени суток!... возник вопрос: где можно посмотреть пример (для начала самого простого, в стиле Hello, World! и т. п.) для DOS-овского EXE-шника (с *.COM разобрался) под FASM? Интересуют "шапка" программы и сегментация.
Заранее благодарен за ответ.
Решение задачи: «Пример "шапки" и сегментации EXE программы под DOS для FASM»
textual
Листинг программы
; fasm example of writing multi-segment EXE program format MZ entry main:start ; program entry point stack 100h ; stack size segment main ; main program segment start: mov ax,text mov ds,ax mov dx,hello call extra:write_text mov ax,4C00h int 21h segment text hello db 'Hello world!',24h segment extra write_text: mov ah,9 int 21h retf
Объяснение кода листинга программы
В коде представлена шапка
и сегментация EXE программы под DOS для FASM:
- Форматирование MZ.
- Указание точки входа в программу: main:start.
- Размер стека: 100h.
- Сегмент основной программы: main.
- Код программы начинается с метки start.
- Перемещение регистра ax в ds.
- Перемещение регистра dx в адрес строки 'Hello world!' в сегменте text.
- Вызов процедуры write_text в сегменте extra.
- Перемещение регистра ax в 4C00h.
- Ввод команды int 21h для выхода из программы.
- Сегмент текста: text.
- Строка 'Hello world!' с символом перевода строки в конце.
- Сегмент дополнительных процедур: extra.
- Процедура write_text перемещает регистр ah в 9 и вызывает int 21h для вывода строки.
- Возврат из процедуры с использованием retf.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д