Untitled

 avatar
unknown
plain_text
a year ago
3.4 kB
4
Indexable
org 100h                          ; Setează adresa de început a programului

jmp start                        ; Sari la eticheta 'start'

MA dw 0100101111100000b, 0110011001100110b ; 46,304
MB dw 0110101011000110b, 1001011001110110b ; 26,986

MD dw ?, ?, ?, ?    ; sumă intermediară
MS dw ?, ?, ?, ?    ; sumă finală

PA db 8 ; 46,304 este 2 la puterea 8
PB db 8 ; 26,986 este 2 la puterea 8
PD db ?
PS db ?

start:
 mov al, PA                     ; Mută valoarea din PA în AL
 add al, PB                     ; Adaugă valoarea din PB la AL
 mov PD, al                     ; Mută rezultatul din AL în PD
 mov PS, al                     ; Mută rezultatul din AL în PS

 ; Prima înmulțire
 mov ax, MA                     ; Mută valoarea din MA în AX
 mul MB                         ; Înmulțește AX cu MB
 mov MD, AX                     ; Mută rezultatul din AX în MD
 mov MD+2, DX                   ; Mută rezultatul cu ordinul mare din DX în al doilea cuvânt al lui MD
 
 mov ax, MA                     ; Mută valoarea din MA în AX
 mul MB+2                       ; Înmulțește AX cu al doilea cuvânt al lui MB
 add ax, MD+2                   ; Adaugă rezultatul la al doilea cuvânt al lui MD
 mov MD+2, AX                   ; Mută rezultatul din AX în al doilea cuvânt al lui MD
 mov MD+4, DX                   ; Mută rezultatul cu ordinul mare din DX în al patrulea cuvânt al lui MD

 ; A doua înmulțire
 mov ax, MA+2                   ; Mută al doilea cuvânt al lui MA în AX
 mul MB                         ; Înmulțește AX cu MB
 mov MS, AX                     ; Mută rezultatul din AX în MS
 mov MS+2, DX                   ; Mută rezultatul cu ordinul mare din DX în al doilea cuvânt al lui MS
 
 mov ax, MA+2                   ; Mută al doilea cuvânt al lui MA în AX
 mul MB+2                       ; Înmulțește AX cu al doilea cuvânt al lui MB
 add ax, MS+2                   ; Adaugă rezultatul la al doilea cuvânt al lui MS
 mov MS+2, AX                   ; Mută rezultatul din AX în al doilea cuvânt al lui MS
 mov MS+4, DX                   ; Mută rezultatul cu ordinul mare din DX în al patrulea cuvânt al lui MS

 ; Calculează suma MD + MS
 suma:
    mov AX, MS                   ; Mută valoarea din MS în AX
    add AX, MD                   ; Adaugă valoarea din MD la AX
    mov MS, AX                   ; Mută rezultatul din AX în MS
    mov AX, MS+2                 ; Mută valoarea celui de-al doilea cuvânt al lui MS în AX
    add AX, MD+2                 ; Adaugă valoarea celui de-al doilea cuvânt al lui MD la AX
    mov MS+2, AX                 ; Mută rezultatul din AX în al doilea cuvânt al lui MS
    mov AX, MS+4                 ; Mută valoarea celui de-al patrulea cuvânt al lui MS în AX
    add AX, MD+4                 ; Adaugă valoarea celui de-al patrulea cuvânt al lui MD la AX
    mov MS+4, AX                 ; Mută rezultatul din AX în al patrulea cuvânt al lui MS
    mov AX, MS+6                 ; Mută valoarea celui de-al șaselea cuvânt al lui MS în AX
    add AX, MD+6                 ; Adaugă valoarea celui de-al șaselea cuvânt al lui MD la AX
    mov MS+6, AX                 ; Mută rezultatul din AX în al șaselea cuvânt al lui MS

ret                              ; Întoarce-te din subrutină
Editor is loading...
Leave a Comment