Выполнение арифметических и логических операций - 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

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


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

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

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