Процедура, которая отображает строки на экран - 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

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

  1. Объявлены две переменные: — string, которая содержит строку $ 80 раз, — stack, которая содержит 256 байтов неопределённых данных.
  2. Код выводит строку $ на экран 80 раз.
  3. Далее, код выводит на экран два символа: — символ перевода строки '\n', — символ возврата каретки '\r'.
  4. Затем, код выводит на экран длину строки, равную 80.
  5. Код завершается выводом на экран двух символов: — символ перевода строки '\n', — символ возврата каретки '\r'.
  6. В конце кода присутствуют процедуры: — start, — print.

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

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