В натуральном числе определить цифры, входящие по одному разу, более одного раза - Assembler

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

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

Здравствуйте. У меня стоит задача - Задано натуральное число К. Разработать программу, которая выводит за ростом все цифры, которые входят в это число по одному разу, и все цифры, которые в входят в это число более одного раза. Если есть идеи или алгоритмы - подкинтьте их мне... Аналогов найти в интернете не могу... Буду очень благодарен за помощь!

Решение задачи: «В натуральном числе определить цифры, входящие по одному разу, более одного раза»

textual
Листинг программы
  1. LOCALS
  2.  
  3. .model small
  4.  
  5. .stack 100h
  6.  
  7. .data
  8.         K       dw      12234
  9.         Digits  db      10 dup(0)
  10.  
  11.         msgOnce db      'Once:', 0Dh, 0Ah, '$'
  12.         msgMore db      'More:', 0Dh, 0Ah, '$'
  13.         CrLf    db      0Dh, 0Ah, '$'
  14.  
  15. .code
  16.  
  17. main    proc
  18.         mov     ax,     @data
  19.         mov     ds,     ax
  20.  
  21.         mov     ax,     K
  22.         mov     bx,     10
  23.  
  24. @@Repeat:
  25.         mov     dx,     0       ;делим (dx:ax) на bx.
  26.         div     bx              ;получаем остаток в dx, частное а ax
  27.  
  28.         mov     si,     dx
  29.         inc     byte ptr Digits[si]     ;Inc(Digits[D])
  30.  
  31.         or      ax,     ax              ;если ax>0 повторить вычисления
  32.         jnz     @@Repeat
  33.  
  34.         ;вывод результата
  35.         mov     ah,     09h
  36.         lea     dx,     msgOnce
  37.         int     21h
  38.  
  39.         mov     cx,     10
  40.         mov     si,     0
  41. @@ForOnce:
  42.         mov     dl,     Digits[si]
  43.         cmp     dl,     1
  44.         jne     @@SkipOnce
  45.         mov     ah,     02h
  46.         mov     dx,     si
  47.         add     dl,     '0'
  48.         int     21h
  49.         mov     dl,     ' '
  50.         int     21h
  51. @@SkipOnce:
  52.         inc     si
  53.         loop    @@ForOnce
  54.         mov     ah,     09h
  55.         lea     dx,     CrLf
  56.         int     21h
  57.  
  58.         mov     ah,     09h
  59.         lea     dx,     msgMore
  60.         int     21h
  61.  
  62.         mov     cx,     10
  63.         mov     si,     0
  64. @@ForMore:
  65.         mov     dl,     Digits[si]
  66.         cmp     dl,     1
  67.         jbe     @@SkipMore
  68.         mov     ah,     02h
  69.         mov     dx,     si
  70.         add     dl,     '0'
  71.         int     21h
  72.         mov     dl,     ' '
  73.         int     21h
  74. @@SkipMore:
  75.         inc     si
  76.         loop    @@ForMore
  77.         mov     ah,     09h
  78.         lea     dx,     CrLf
  79.         int     21h
  80.  
  81.         mov     ax,     4C00h
  82.         int     21h
  83. main    endp
  84.  
  85. end     main

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


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

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

12   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы