Вычисление функции, разветвление - Assembler

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

Решение задачи: «Вычисление функции, разветвление»

textual
Листинг программы
LOCALS
 
.model small
 
.stack 100h
 
.data
        A       dw      157
        B       dw      100
        R       dw      ?
.code
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        mov     ax,     A
        cmp     ax,     B
        je      @@Equal
        jg      @@Greater
@@Lower:
        add     ax,     A       ;ax:=3*A
        add     ax,     A
        sub     ax,     5       ;ax:=3*A-5
        cwd                     ;(dx:ax):=3*A-5
        idiv    B               ;ax:=(3*A-5)/B
@@Greater:
        imul    ax              ;(dx:ax):=A*A*A
        imul    A
        add     ax,     B       ;(dx:ax):=A*A*A+B
        adc     dx,     0
        idiv    A               ;ax:=(dx:ax)/A
        jmp     @@Finish
@@Equal:
        mov     ax,     4       ;ax:=4
@@Finish:
        mov     ax,     R
 
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main

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

8   голосов , оценка 4.125 из 5