Пример "шапки" и сегментации 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:

  1. Форматирование MZ.
  2. Указание точки входа в программу: main:start.
  3. Размер стека: 100h.
  4. Сегмент основной программы: main.
  5. Код программы начинается с метки start.
  6. Перемещение регистра ax в ds.
  7. Перемещение регистра dx в адрес строки 'Hello world!' в сегменте text.
  8. Вызов процедуры write_text в сегменте extra.
  9. Перемещение регистра ax в 4C00h.
  10. Ввод команды int 21h для выхода из программы.
  11. Сегмент текста: text.
  12. Строка 'Hello world!' с символом перевода строки в конце.
  13. Сегмент дополнительных процедур: extra.
  14. Процедура write_text перемещает регистр ah в 9 и вызывает int 21h для вывода строки.
  15. Возврат из процедуры с использованием retf.
  16. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы