Консультация № 174547
26.11.2009, 02:01
35.00 руб.
0 3 1
(tasm x86 Dos) Здравствуйте, уважаемые программисты! Нужна помощь в решении лабораторной работы.
Написать COM - программу, считывающую строку из пяти строчных латинских букв с клавиатуры, а затем выводящую данную строку на экран.

Обсуждение

давно
Посетитель
7438
7205
26.11.2009, 11:06
общий
Надо ли проверять, введена строчная латинская буква или нет?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
26.11.2009, 14:56
общий
26.11.2009, 15:23
это ответ
Здравствуйте, Svistaplas90.
Вариант программы приведен в приложении.
Сначала программа устанавливает текстовый режим (это необязательно и можно удалить), затем выводит предложение ввести 5 строчных латинских букв. Затем, в цикле ожидает нажатия клавиши, проверяет символ на допустимость и либо выводит на экран введенный символ (чтобы пользователь видел, какую именно букву он ввел — если надо ввести пароль, т.е. не показывать символы, то измените эту часть кода — задание не уточняет этот момент), либо издает сигнал (бип). После ввода всех пяти букв выводится введенная строка вместе с предварительным сообщением ("Вы напечатали следующие символы") и последующим предложением нажать любую клавишу для выхода.

Успехов!

Приложение:
.model tiny

MAX_LEN EQU 5

.data
msg_in db 13,10,'Please, enter 5 lowercase latin letters > $'
msg_out db 13,10,10, 'You typed the next characters:',13,10
buf db MAX_LEN dup(0) ; буфер для введенных символов
db 13,10,10,'Press any key to exit...$'

.code
org 100h
start:
mov ax,3 ; устанавливаем режим 80x25, одновременно очищает экран
int 10h

mov ah,9
mov dx,offset msg_in
int 21h

cld
mov cx,MAX_LEN
mov di,offset buf
@@next:
xor ax,ax ; ждем нажатия клавиши
int 16h
cmp al,'a' ; фильтруем ввод
jb @@beep
cmp al,'z'
ja @@beep
stosb ; допустимый символ, сохраняем в буфере
mov dl,al ; и выводим на экран
jmp short @@show
@@beep: ; недопустимый символ
mov dl,7 ; сигнал (бип)
inc cx ; это для корректного подсчета правильных символов
@@show:
mov ah,2 ; вывод на экран допустимого символа или сигнал
int 21h
loop @@next

; выводим строку на экран с новой строки и одновременно
; предложение нажать любую клавишу для выхода
mov ah,9
mov dx,offset msg_out
int 21h

; Пауза, ждем любую клавишу. Это нужно только для того,
; чтобы при запуске непосредственно из-под Windows видеть результат
xor ax,ax
int 16h

int 20h
end start
5
Неизвестный
26.11.2009, 15:18
общий
Замечание к программе:

Строка
mov ah,3 ; устанавливаем режим 80x25, одновременно очищает экран
ошибочна (несмотря на то, что, по крайней мере, в эмуляторе DOS под WinXP это работает)!

Конечно, для установки видеорежима нужно
mov ax,3

Извините.

Форма ответа