Выполнение арифметических и логических операций - Assembler
Формулировка задачи:
В каждом из заданий переменные a, b, c, d определяются в сегменте данных
и имеют размерность слово. Необходимо выполнить над ними заданные
арифметические и логические операции, а результат поместить в регистр AX.
При выполнении умножения считаем, что результат вмещается в слово. При
выполнении деления считаем, что оно целочисленное.
Если a ^ 3 > b ^ 2 то
***Если c * d = a / b то
******Результат = a AND b
***Иначе
******Результат = найти 2 наименьших среди a,d,c,d и перемножить
Иначе
***Результат = с * d + b
У меня возникли трудности с написанием. Задачка вроде и простая, но в ассемблере я мало что понимаю. Прошу решения и небольших заметок по коду, чтобы прояснить ситуацию. Ну и пару книжек сверху
Решение задачи: «Выполнение арифметических и логических операций»
textual
Листинг программы
.model small .stack 100h .data a dw 6 b dw 3 c dw 2 d dw 1 .code start: mov ax, @data mov ds, ax cmp1: mov ax, a mov bx, a mul bx mul bx mov cx, ax mov ax, b mul ax cmp cx, ax jg cmp2 jmp res3 cmp2: mov ax, c mov bx, d mul bx mov cx, ax mov ax, a xor dx, dx mov bx, b div bx cmp cx, ax je res1 jmp res2 res1: mov ax, a mov bx, b and ax, bx jmp finish res2: mov ax, a mov bx, b cmp ax, bx jl skip1 mov cx, ax mov ax, bx mov bx, cx skip1: mov dx, c cmp bx, dx jl skip2 mov bx, dx skip2: cmp ax, bx jl skip3 mov cx, ax mov ax, bx mov bx, cx skip3: mov dx, d cmp bx, dx jl skip4 mov bx, dx skip4: cmp ax, bx jl skip5 mov cx, ax mov ax, bx mov bx, cx skip5: mul bx jmp finish res3: mov ax, c mov bx, d mul bx mov bx, b add ax, bx finish: mov ax, 4c00h int 21h end start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д