
Архитектура компьютеров / Учебные пособия / Примеры программирования assembler IA-16 / Программа ввода и вывода строки
.doc.model small ; модель памяти, используемая для ЕХЕ
.stack 100h ; сегмент стека размером в 256 байт
.code
start: mov ax,@data ; сегментный адрес строки message
mov ds,ax ; помещается в DS
mov dx,offset messag1 ; в регистр dx помещается адрес "приглашения к вводу"
mov ah,9 ; функция DOS "вывод строки приглашения к вводу"
int 21h ; вывод "приглашения на экран"
mov dx,offset messag3 ; в регистр dx помещается адрес буфера для ввода
; символов
mov ah,0Ah ; функция DOS "ввод строки"
int 21h ; разрешен ввод с клавиатуры"
; формируем строку вывода введенной строки
mov bx,offset messag2
mov di,bx ; сохраняем адрес строки для вывода
;push bx
xor cx,cx
mov cl,lenth ; формируем длину введенной строки
add cl,30h
mov [bx+10],cl
sub cl,30h ;
xor si,si
; переносим по символьно в выходной буфер введенную строку
l1: mov bx,dx
mov al,[bx+si+2]
mov bx,di
;pop bx
mov [bx+si+15],al
inc si
loop l1
mov cl,'$' ; записываем символ окончания вывода
mov [bx+si+16],cl
mov dx,offset messag2 ; выводим строку ввода
mov ah,9
int 21h
mov dx,offset endstr ; переводим курсор на новую строку
mov ah,9
int 21h
mov ax,4C00h
int 21h ; функция DOS "завершить программу"
.data
messag1 db "Введите строку",0Dh,0Ah,'$'
messag2 db "Строка",80 dup(" "),0Dh,0Ah,'$' ;буфер для вывода строка
endstr db 0Dh,0Ah,'$' ; коды конца строки
; буфер ввода
messag3 db 80
lenth db 0
end start