Задание (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
Объяснение кода листинга программы
- Объявление сегментов данных, стека и кода
- Привязка сегментов к переменным
- Вывод приглашения для ввода строки
- Организация цикла для чтения символов из строки
- Проверка каждого символа на конец строки
- Отметка в таблице символов как прочитанного
- Вывод результата (количество символов)
- Организация цикла для проверки отметок в таблице
- Вывод символа, если он отмечен в таблице
- Сдвиг по таблице для проверки следующего символа
- Выход из программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д