Задание (tasm-assembler) Пользователь вводит с клавиатуры строку символов
Формулировка задачи:
Помогите, пожалуйста.
Разработать программу, решающую следующую задачу: Пользователь вводит с клавиатуры строку символов. Программа выводит на экран эти символы. TASM-ASSEMBLER
Решение задачи: «Задание (tasm-assembler) Пользователь вводит с клавиатуры строку символов»
textual
Листинг программы
.model compact ; Сегмент стека s_seg segment db 128 dup(?) s_seg ends ; Сегмент данных d_seg segment str_prompt db 'Enter string: $' str_result db 13,10,'Chars: $' tab db 256 dup(0) ; массив всех возможных символов d_seg ends ; Сегмент сода c_seg segment 'code' ; привязываем метки к адресам сегментов assume ds:d_seg, ss:s_seg, cs:c_seg main: ; устанавливаем сегмент стека mov ax, s_seg mov ss, ax ; устанавливаем сегмент данных mov ax, d_seg mov ds, ax ; печатем приглашение mov ah, 09h lea dx, str_prompt int 21h xor bx, bx @1: ; читаем символ mov ah, 01h int 21h ; проверяем конец строки cmp al, 13 je @2 ; отмечаем в таблице mov bl, al mov tab[bx], 1 jmp @1 ; печатем результат @2: mov ah, 09h lea dx, str_result int 21h mov cx, 256 xor bx, bx @3: ; проверяем отметку в таблице cmp tab[bx], 1 jne @4 ; печатаем символ mov ah, 02h mov dl, bl int 21h ; сдвигаемся по таблице @4: inc bx loop @3 ; выход из программы mov ax, 4C00h int 21h c_seg ends end main
Объяснение кода листинга программы
- Объявление сегментов данных, стека и кода
- Привязка сегментов к переменным
- Вывод приглашения для ввода строки
- Организация цикла для чтения символов из строки
- Проверка каждого символа на конец строки
- Отметка в таблице символов как прочитанного
- Вывод результата (количество символов)
- Организация цикла для проверки отметок в таблице
- Вывод символа, если он отмечен в таблице
- Сдвиг по таблице для проверки следующего символа
- Выход из программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д