Процедуры, прерывания [FASM] - Assembler

Узнай цену своей работы

Формулировка задачи:

Составить процедуру, которая представляет на экране текст из нескольких предложений в виде отдельных фраз с заголовком –

нумерацией

, например: Предложение-1:

…………………

Предложение-2:

…………………

и т.д. использовать эту процедуру для решения следующей задачи: ввести текст из нескольких предложений и вывести его на экран в заданном виде, закончив в главной программе завершающей строкой,

выделив её цветом или мерцанием

.
У FASM бзик на процедуры? ибо классический синтаксис не работает, использую обыкновенные метки с ret Выделил то, что не понятно или не реализовано. Впервые сталкиваюсь с прерываниями и процедурами и как следствие, творение рук моих не работает... где ошибся?
format PE Console 4.0
entry Start
 
include 'win32a.inc'
 
section '.data' data readable writeable
 
Maxlen db 255
Actlen db ?
buffer rb 256
line db 'String $'
eline db 'ardos $',05h
 
section '.text' code readable executable
 
Start:
xor eax,eax
xor edx,edx
xor ebx,ebx  
call input
call head
 
call endline
 
input:
mov ah, 0Ah
lea dx, [Maxlen]
int 21h
ret
 
head:
lea dx, [line]
mov ah,09h
int 21h
ret
 
endline:
lea dx, [eline]
mov ah,09h
int 21h
mov ax, 1003h
mov bl, 1
int 10h
 
Exit:
  invoke  ExitProcess, 0
 
section '.idata' import data readable
 
  library kernel, 'KERNEL32.DLL'
 
  import kernel,\
    ExitProcess, 'ExitProcess'

Решение задачи: «Процедуры, прерывания [FASM]»

textual
Листинг программы
 
 buf_max_len equ 255
 str_len: db 0
 buf: rb buf_max_len 
 
 mov [buf+0], buf_max_len  ; максимальный размер буфера.
 mov [buf+1], str_len         ; длина введённой строки текста "Actlen".
 
input:
mov dx, buf
mov ah, 0Ah
int 21h
ret

Объяснение кода листинга программы

  1. Задана переменная buf_max_len равная 255.
  2. Задана переменная str_len равная 0.
  3. Задана переменная buf в формате rb buf_max_len, где rb означает rb (read/write byte), то есть буфер на 255 байт, который можно читать и записывать.
  4. Первый элемент буфера buf равен buf_max_len.
  5. Второй элемент буфера buf равен str_len.
  6. Ввод строки текста Actlen с помощью функции int 21h.
  7. Возврат в предыдущую программу.

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


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

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

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