Получить из текста гласные буквы и сделать их заглавными - Assembler
Формулировка задачи:
задание; введите в консоле текст и чтобы программа на следующей строчке вывела гласные буквы и перевела их в заглавные
Решение задачи: «Получить из текста гласные буквы и сделать их заглавными»
textual
Листинг программы
.model small .stack 1024 .data STR_N db 250d vveli db ? stroka db 250 dup('$') result db 250 dup('$') m_table db 000h, 001h, 002h, 003h, 004h, 005h, 006h, 007h, 008h, 009h, 00Ah, 00Bh, 00Ch, 00Dh, 00Eh, 00Fh db 010h, 011h, 012h, 013h, 014h, 015h, 016h, 017h, 018h, 019h, 01Ah, 01Bh, 01Ch, 01Dh, 01Eh, 01Fh db 020h, 021h, 022h, 023h, 024h, 025h, 026h, 027h, 028h, 029h, 02Ah, 02Bh, 02Ch, 02Dh, 02Eh, 02Fh db 030h, 031h, 032h, 033h, 034h, 035h, 036h, 037h, 038h, 039h, 03Ah, 03Bh, 03Ch, 03Dh, 03Eh, 03Fh db 040h, 041h, 042h, 043h, 044h, 045h, 046h, 047h, 048h, 049h, 04Ah, 04Bh, 04Ch, 04Dh, 04Eh, 04Fh db 050h, 051h, 052h, 053h, 054h, 055h, 056h, 057h, 058h, 059h, 05Ah, 05Bh, 05Ch, 05Dh, 05Eh, 05Fh db 060h, 061h, 062h, 063h, 064h, 065h, 066h, 067h, 068h, 069h, 06Ah, 06Bh, 06Ch, 06Dh, 06Eh, 06Fh db 070h, 071h, 072h, 073h, 074h, 075h, 076h, 077h, 078h, 079h, 07Ah, 07Bh, 07Ch, 07Dh, 07Eh, 07Fh db 080h, 081h, 082h, 083h, 084h, 085h, 086h, 087h, 088h, 089h, 08Ah, 08Bh, 08Ch, 08Dh, 08Eh, 08Fh db 090h, 091h, 092h, 093h, 094h, 095h, 096h, 097h, 098h, 099h, 09Ah, 09Bh, 09Ch, 09Dh, 09Eh, 09Fh db 0A0h, 0A1h, 0A2h, 0A3h, 0A4h, 0A5h, 0A6h, 0A7h, 0A8h, 0A9h, 0AAh, 0ABh, 0ACh, 0ADh, 0AEh, 0AFh db 0B0h, 0B1h, 0B2h, 0B3h, 0B4h, 0B5h, 0B6h, 0B7h, 0B8h, 0B9h, 0BAh, 0BBh, 0BCh, 0BDh, 0BEh, 0BFh db 0C0h, 0C1h, 0C2h, 0C3h, 0C4h, 0C5h, 0C6h, 0C7h, 0C8h, 0C9h, 0CAh, 0CBh, 0CCh, 0CDh, 0CEh, 0CFh db 0D0h, 0D1h, 0D2h, 0D3h, 0D4h, 0D5h, 0D6h, 0D7h, 0D8h, 0D9h, 0DAh, 0DBh, 0DCh, 0DDh, 0DEh, 0DFh db 0E0h, 0E1h, 0E2h, 0E3h, 0E4h, 0E5h, 0E6h, 0E7h, 0E8h, 0E9h, 0EAh, 0EBh, 0ECh, 0EDh, 0EEh, 0EFh db 0F0h, 0F1h, 0F2h, 0F3h, 0F4h, 0F5h, 0F6h, 0F7h, 0F8h, 0F9h, 0FAh, 0FBh, 0FCh, 0FDh, 0FEh, 0FFh message db '........... $' .code start: PRINT message mov ax, data mov ds, ax mov ax, @data mov ds, ax mov es, ax mov ah,10 lea dx, str_n int 21h cld lea si, stroka lea di, result xor cx,cx mov cl, vveli lea bx, m_table M1: lodsb xlatb cmp al, 0 jne M2 stosb M2: loop M1 mov ax, 4c00h int 21h end start
Объяснение кода листинга программы
В коде используется машинный язык ассемблера. Переменные: STR_N - строка, содержащая текст для обработки (250 символов) vveli - переменная, в которой предполагается хранить число (возможно, это номер строки или смещение в тексте) stroka - строка, в которой будут храниться обработанные символы (250 символов) result - строка, в которой будут храниться результаты обработки (250 символов) m_table - таблица, содержащая коды символов (1000 байт) Выполняемые действия:
- Загрузка строки STR_N в регистр dx.
- Перевод строки в регистр ds.
- В цикле обрабатываются символы строки STR_N:
- Если символ равен 0, то он пропускается.
- Если символ не равен 0, то он преобразуется в верхний регистр и записывается в строку stroka.
- Результат обработки выводится на экран с помощью функции PRINT.
- Код завершается возвратом в DOS. Но нужно учесть, что код написан под DOS и использует BIOS-интерфейс для вывода символов на экран. Поэтому он может не работать корректно на современных ОС.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д