Процедуры, прерывания [FASM] - Assembler
Формулировка задачи:
Составить процедуру, которая представляет на экране текст из нескольких предложений в виде отдельных фраз с заголовком –
нумерацией
, например: Предложение-1:…………………
Предложение-2:…………………
и т.д. использовать эту процедуру для решения следующей задачи: ввести текст из нескольких предложений и вывести его на экран в заданном виде, закончив в главной программе завершающей строкой,выделив её цветом или мерцанием
.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
Объяснение кода листинга программы
- Задана переменная
buf_max_len
равная 255. - Задана переменная
str_len
равная 0. - Задана переменная
buf
в форматеrb buf_max_len
, гдеrb
означаетrb (read/write byte)
, то есть буфер на 255 байт, который можно читать и записывать. - Первый элемент буфера
buf
равенbuf_max_len
. - Второй элемент буфера
buf
равенstr_len
. - Ввод строки текста
Actlen
с помощью функцииint 21h
. - Возврат в предыдущую программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д