Процедура, которая отображает строки на экран - Assembler
Формулировка задачи:
нужно написать процедуру, которая отображает строки на экран, смещение строк передается через адрес в стек.
я хочу понять алгоритм. мое понимание: нужно ввести с клавиатуры строку, запихнуть ее в стек(через push), ввести следующую строку и так же через push запихнуть. затем в самой процедуре должен быть pop и сразу вывод на экран? и как понять "смещение строк"?
Решение задачи: «Процедура, которая отображает строки на экран»
textual
Листинг программы
.model small
.386
.data
string db 80,0,80 dup ('$')
.stack
db 256 dup(?)
.code
start:
mov ax,@data
mov ds,ax
mov ah,0Ah
lea dx,string
int 21h
lea bx,string+2
push bx
call print
pop bx
xor ax,ax
int 16h
mov ah,4Ch
mov al,00h
int 21h
print proc
push bp
mov bp,sp
mov ah,02h
mov dl,0Dh
int 21h
mov ah,02h
mov dl,0Ah
int 21h
mov ah,09h
mov dx,[bp+4]
int 21h
pop bp
ret
print endp
end start
Объяснение кода листинга программы
- Объявлены две переменные:
— string, которая содержит строку
$80 раз, — stack, которая содержит 256 байтов неопределённых данных. - Код выводит строку
$на экран 80 раз. - Далее, код выводит на экран два символа: — символ перевода строки '\n', — символ возврата каретки '\r'.
- Затем, код выводит на экран длину строки, равную 80.
- Код завершается выводом на экран двух символов: — символ перевода строки '\n', — символ возврата каретки '\r'.
- В конце кода присутствуют процедуры: — start, — print.