Задан символьный массив. Ввести с клавиатуры символ и вывести на консоль количество таких символов в массиве. - Assembler

Узнай цену своей работы

Формулировка задачи:

Помогите решить лабораторные: 1,Задан символьный массив. Ввести с клавиатуры символ и вывести на консоль количество таких символов в массиве. 2,Ввести с клавиатуры элементы цифрового массива и ещё две цифры. Вывести на консоль сумму порядковых номеров нечётных элементов массива, значения которых лежат в диапазоне, определяемом введенными цифрами 3,Ввести с клавиатуры два цифровых массива одинакового размера и ещё одну цифру. Вывести на консоль сумму элементов первого массива, превышающих введённое число, и сумму элементов второго, не превышающих его. Я экономист по профессии, не знаю, зачем нам ввели системное программирование, но месяц я лежала в больнице и в этом языке совершенно ничего не смыслю. Прощу помощи специалистов, желательное с пояснением, что какая команда означает. Заранее спасибо - не хочется вылететь из-за этого.

Решение задачи: «Задан символьный массив. Ввести с клавиатуры символ и вывести на консоль количество таких символов в массиве.»

textual
Листинг программы
@stack  segment para stack
        db      1024 dup(?)
@stack  ends
 
@data   segment
        Result  db      ?
        Prompt  db      'Enter the char:', 0Dh, 0Ah, '$'
        Msg1    db      'In the string:', 0Dh, 0Ah, '"'
        A       db      'The quick brown fox jumps over the lazy dog.'
        LenA    equ     $-A
        Msg2    db      '"', 0Dh, 0Ah, 'symbol "'
        X       db      ?
        Msg3    db      '" found '
        Times   dw      ?
        Msg4    db      ' times.', 0Dh, 0Ah, '$'
        CrLf    db      0Dh, 0Ah, '$'
@data   ends
 
@code   segment
        assume  cs:@code, ds:@data, ss:@stack
 
main    proc
        ;инициализация сегментного регистра данных
        mov     ax,     @data
        mov     ds,     ax
 
        ;ввод символа для подсчёта вхождения в строку
        mov     ah,     09h
        lea     dx,     [Prompt]
        int     21h
        mov     ah,     01h
        int     21h
        mov     [X],    al
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
        ;вычисление суммы элементов первого массива,
        ;превышающих введённое число
        mov     cx,     LenA
        lea     bx,     [A]
        mov     si,     0       ;текущее значение индекса
        mov     dx,     0       ;количество найденных символов
        @@For:
                mov     al,     [bx+si]
                cmp     al,     [X]             ;if (A[si]>X)
                jne     @@Next
                                                ;then
                add     dx,     1               ;  Count:=Count+1
        @@Next:
                add     si,     1
        loop    @@For
        mov     [Result],       dl
        ;вывод результата
        mov     al,     [Result]
        aam
        add     ax,     '00'
        xchg    al,     ah
        mov     [Times],        ax
 
        mov     ah,     09h
        lea     dx,     [Msg1]
        int     21h
        ;завершение программы
        mov     ax,     4C00h
        int 21h
main    endp
 
@code   ends
 
        end     main

Объяснение кода листинга программы

  1. Ввод символа для подсчёта вхождения в строку Создается процедура ввода символа, которая использует BIOS-функцию int 21h с параметрами 09h и Prompt (введенный символ сохраняется в регистре al).
  2. Вычисление суммы элементов первого массива, превышающих введённое число Создается цикл, который проходит по всем элементам массива A. Если значение текущего элемента больше значения X, к переменной Count добавляется единица.
  3. Вывод результата Результат подсчета (количество найденных символов) выводится на экран с помощью BIOS-функции int 21h с параметрами 09h и Msg1 (подсчитанное количество символов выводится как 16-ричное число).
  4. Завершение программы Программа завершается с помощью BIOS-функции int 21h с параметрами 4C00h (код завершения работы программы).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы