Задано натуральное число, диапазон значений слово. Определить количество цифр кратных 3 в записи числа - Assembler

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

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

Помогите с выполнением задания: Задано натуральное число, диапазон значений слово. Определить количество цифр кратных 3 в записи числа (число задано в самой программе)

Решение задачи: «Задано натуральное число, диапазон значений слово. Определить количество цифр кратных 3 в записи числа»

textual
Листинг программы
  1. .model small
  2. .8086
  3.  
  4. .data
  5. var dw 12689
  6.  
  7. .stack
  8. db 255 dup(?)
  9.  
  10. .code
  11. start:
  12. mov ax,@data
  13. mov ds,ax
  14.  
  15. mov ax,var
  16. mov bx,10
  17. xor cx,cx
  18. get:
  19. xor dx,dx
  20. div bx
  21. push dx
  22. inc cx
  23.  
  24. or ax,ax
  25. jnz get
  26.  
  27. xor dx,dx
  28. mov bl,3
  29. bring:
  30. pop ax
  31.  
  32. div bl
  33.  
  34. or ah,ah
  35. jnz skip
  36.  
  37. inc dx
  38.  
  39. skip:
  40. loop bring
  41.  
  42. mov ah,02h
  43. add dl,30h
  44. int 21h
  45.  
  46. mov ah,4Ch
  47. mov al,00h
  48. int 21h
  49. end start

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

  1. В начале кода определены сегменты данных и стека, а также задан сегмент кода равным 8086.
  2. В сегменте данных определена переменная var типа dw (слово) со значением 12689.
  3. В сегменте стека выделена память под стек размером 255 байт.
  4. В сегменте кода определена точка входа в программу start.
  5. С помощью команды mov ax,@data в точку входа передаётся сегмент данных.
  6. С помощью команды mov ds,ax сегмент данных становится действующим сегментом.
  7. С помощью команды mov ax,var в переменную ax записывается значение переменной var.
  8. С помощью команды mov bx,10 в переменную bx записывается число 10.
  9. С помощью команды xor cx,cx в переменную cx записывается число 0.
  10. С помощью команды xor dx,dx в переменную dx записывается число 0.
  11. С помощью команды div bx выполняется деление переменной ax на переменную bx с сохранением частного в переменной dx и остатка в переменной ax.
  12. С помощью команды push dx в стек записывается число 0.
  13. С помощью команды inc cx значение переменной cx увеличивается на 1.
  14. С помощью команды or ax,ax выполняется побитовое ИЛИ между переменной ax и самим собой, результат сохраняется в переменной ax.
  15. С помощью команды jnz get выполняется переход к следующей итерации цикла, если переменная ax не равна 0.
  16. С помощью команды xor dx,dx в переменной dx записывается число 0.
  17. С помощью команды mov bl,3 в переменной bl записывается число 3.
  18. С помощью команды bring:... loop bring в цикле выполняется деление числа 10 на число 3 с сохранением частного в переменной ax и остатка в переменной dx.
  19. С помощью команды mov ah,02h в переменной ah записывается число 2.
  20. С помощью команды add dl,30h в переменной dl записывается число 30.
  21. С помощью команды int 21h выполняется вывод числа 30 на экран.
  22. С помощью команды mov ah,4Ch в переменной ah записывается число 4С.
  23. С помощью команды mov al,00h в переменной al записывается число 0.
  24. С помощью команды int 21h выполняется завершение работы программы.

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


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

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

9   голосов , оценка 4.444 из 5

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

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

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