1. Какую задачу необходимо выполнить на ассемблере, где вводятся два натуральных числа A и B, и в случае, если

  • 31
1. Какую задачу необходимо выполнить на ассемблере, где вводятся два натуральных числа A и B, и в случае, если A делится на B, выводится их частное, в противном случае выводятся оба числа?

2. Что необходимо сделать в программе на ассемблере, где вводится натуральное число, чтобы подсчитать количество простых множителей, равных 5, в этом числе?

3. Какую задачу нужно решить в программе на ассемблере, где вводится X натуральных чисел, чтобы посчитать количество четных и нечетных чисел среди введенных?

4. Что необходимо сделать в программе на ассемблере, где вводится натуральное число X, чтобы посчитать факториал X? Если факториал X не помещается в ячейку памяти (переполнение), что следует вывести?
Печенька
12
1. Для выполнения данной задачи на ассемблере, вам потребуется следующий код:


START:
; Ввод чисел A и B
MOV AH, 01h ; Ввод символа
INT 21h ; Считывание ввода
SUB AL, 30h ; Перевод из символа в число
MOV BL, AL ; Сохранение числа A в BL

MOV AH, 01h ; Ввод символа
INT 21h ; Считывание ввода
SUB AL, 30h ; Перевод из символа в число

; Проверка деления и вывод результатов
XOR DX, DX ; Обнуление регистра DX
DIV BL ; Деление числа AL на BL
CMP DX, 0 ; Проверка остатка от деления
JNE NOT_DIVISIBLE
; Вывод частного
ADD AL, 30h ; Перевод числа в символ
MOV AH, 02h ; Вывод символа
INT 21h
JMP END

NOT_DIVISIBLE:
; Вывод числа A
MOV AH, 02h ; Вывод символа
INT 21h

; Вывод числа B
MOV AL, BL ; Возвращение числа B в AL
ADD AL, 30h ; Перевод числа в символ
INT 21h

END:
; Завершение программы
MOV AH, 4Ch ; Завершение программы
INT 21h


2. Для подсчета количества простых множителей, равных 5 в заданном числе, вам потребуется следующий код:


START:
; Ввод числа
MOV AH, 01h ; Ввод символа
INT 21h ; Считывание ввода
SUB AL, 30h ; Перевод из символа в число

; Подсчет простых множителей
XOR BX, BX ; Обнуление регистра BX
XOR CX, CX ; Обнуление регистра CX
CHECK_FACTOR:
MOV DX, 5 ; Загрузка проверяемого множителя
DIV DX ; Деление числа AL на DX
CMP AH, 0 ; Проверка остатка от деления
JNE NOT_FACTOR
INC BX ; Увеличение счетчика простых множителей
NOT_FACTOR:
INC CX ; Увеличение счетчика проверенных множителей

; Проверка завершения подсчета
CMP AL, 1 ; Сравнение числа AL с 1
JG CHECK_FACTOR

; Вывод результата
MOV DL, BL ; Перенос счетчика простых множителей в DL
ADD DL, 30h ; Перевод числа в символ
MOV AH, 02h ; Вывод символа
INT 21h

; Завершение программы
MOV AH, 4Ch ; Завершение программы
INT 21h


3. Чтобы посчитать количество четных и нечетных чисел среди введенных X натуральных чисел, используйте следующий код:


START:
; Ввод количества чисел X
MOV AH, 01h ; Ввод символа
INT 21h ; Считывание ввода
SUB AL, 30h ; Перевод из символа в число

; Подсчет четных и нечетных чисел
XOR BL, BL ; Обнуление регистра BL (четные числа)
XOR BH, BH ; Обнуление регистра BH (нечетные числа)
MOV CX, AX ; Загрузка количества чисел в регистр CX
LOOP_START:
MOV AH, 01h ; Ввод символа
INT 21h ; Считывание ввода
SUB AL, 30h ; Перевод из символа в число
TEST AL, 1 ; Проверка на четность
JZ EVEN ; Переход, если число четное
INC BH ; Увеличение счетчика нечетных чисел
JMP NEXT ; Переход к следующему числу
EVEN:
INC BL ; Увеличение счетчика четных чисел
NEXT:
LOOP LOOP_START

; Вывод результатов
MOV DL, BL ; Перенос счетчика четных чисел в DL
ADD DL, 30h ; Перевод числа в символ
MOV AH, 02h ; Вывод символа
INT 21h
MOV DL, BH ; Перенос счетчика нечетных чисел в DL
ADD DL, 30h ; Перевод числа в символ
INT 21h

; Завершение программы
MOV AH, 4Ch ; Завершение программы
INT 21h


4. Чтобы выполнить конкретное действие в программе на ассемблере, где вводится натуральное число X, вам следует уточнить, какое именно действие вас интересует. Пожалуйста, предоставьте больше информации, и я смогу помочь вам лучше.