Поиск буквы в строке - Assembler
Формулировка задачи:
Мне нужно написать программу, которая ищет символ s в строке и пишет сколько раз он встречается, есть такая программа, но почему-то не считает. Помогите, пожалуйста.
name a .model small .stack 100h .data mes db 'Assembler$' res db 'kolichestvo povtorov = $' .code main: mov ax,@data mov ds,ax mov al,01h ; zanosim simvol int 21h mov bx,0 ; schetchik povtorov mov cx,20 m1: cmp mes[bx], al je Lequal eqback: loop m1 jmp print Lequal: inc cx jmp eqback print: mov ah,09h mov dx,offset res int 21h mov ah,02h mov dx, bx int 21h end main
Решение задачи: «Поиск буквы в строке»
textual
Листинг программы
name a .model small .stack 100h .data mes db 'Assembler$' len dw $-mes res db 'kolichestvo povtorov = $' .code main: mov ax,@data mov ds,ax mov ah,01h ; zanosim simvol int 21h mov bx,0 ; schetchik povtorov mov cx,len mov si,0 m1: cmp mes[si], al jne next inc bx next: inc si loop m1 jmp print print: mov ah,09h mov dx,offset res int 21h mov al,bl add al,'0' int 29h mov ah,1 int 21h mov ax,4c00h int 21h end main
Объяснение кода листинга программы
- Объявление переменных:
- Название переменной:
mes
- Значение:
'Assembler$'
- Название переменной:
len
- Значение: длина строки
'Assembler$'
- Название переменной:
res
- Значение:
'kolichestvo povtorov = $'
- Название переменной:
- Ввод символа с клавиатуры:
mov ah,01h;
- заносим символint 21h
- вызов процедуры ввода символа
- Поиск и подсчёт совпадений:
mov bx,0
- инициализация счётчика повторовmov cx,len
- инициализация счётчика циклаmov si,0
- инициализация индекса строкиm1:
- метка начала циклаcmp mes[si], al
- сравнение символа с текущим элементом строкиjne next
- переход к следующему элементу при неравенствеinc bx
- инкремент счётчика повторовnext:
- метка для переходаinc si
- увеличение индексаloop m1
- повторение цикла для всех символовjmp print
- переход к процедуре вывода результата
- Вывод результата:
mov ah,09h
- установка номера сервиса для вывода строкиmov dx,offset res
- передача адреса строки для выводаint 21h
- вызов процедуры для вывода строкиmov al,bl
- запись значения счётчика повторов в aladd al,'0'
- конвертация числа в символint 29h
- вызов процедуры для вывода значенияmov ah,1
- установка номера сервиса для ввода символаint 21h
- вызов процедуры ввода символаmov ax,4c00h
- завершение программыint 21h
- вызов процедуры завершения программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д