;Somma di due valori di 4 byte
;Procedimento
;in ax i 2 byte meno significativi di n1: A005
;in bx i 2 byte meno significativi di n2: 8451
;somma (add) di ax e bx risultato in ax
;copia del risultato nella variabile ris
;in ax i 2 byte piu’ significativi di n1: B42F
;in bx i 2 byte piu’ significativi di n2: 2DD0
;somma (adc) di ax, bx e dell’eventuale riporto (carry) della somma precedente
;risultato in ax
;copia del risultato nella variabile ris (nella posizione [ris+2])
data segment
n1 dd b42fa005h ;variabile di 4 byte dd = dword = double word
n2 dd 2dd08451h ;variabile di 4 byte
ris dd ? ;variabile di 4 byte
pkey db “press any key…$”
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
mov ax,word ptr[n1]
mov bx,word ptr[n2]
add ax,bx ;somma di ax e bx risultato in ax ed eventuale carry
mov word ptr[ris],ax ;copia del risultato in ris
mov ax,word ptr[n1 + 2]
mov bx,word ptr[n2 + 2]
adc ax,bx ;adc: somma di ax,bx e flag di carry; risultato in ax
mov word ptr[ris + 2],ax ;copia del risultato in ris+2
;——– operazioni di chiusura
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for any key….
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start