J'ai écrit un code d'assemblage pour additionner cinq nombres. La valeur finale est ensuite stockée dans la mémoire.Impression d'une valeur de mémoire à l'écran dans l'assemblage
dtseg segment
data dw 27345,28521,29533,30105,32375
sum dw ?
MSG1 DB "The sum is : $"
dtseg ends
;---------------------
cdseg segment
main proc far
assume cs:cdseg,ds:dtseg,ss:stseg
mov ax,dtseg
mov ds,ax
clc ; clear the carry
mov si,offset data ; first location of data
mov cx,04 ; setting the counter
mov ax,0 ; clear ax
mov bx,ax ; clear bx
back:add ax,[si] ; the first round: 0+27345
adc bx,0 ; if there is a carry, add that to bx
inc si ; two inc because traversing words
inc si
dec cx ; count down
jnz back ; do that for other numbers
mov sum,ax ; the final value
mov sum+2,bx ; the carries are stored in bx
lea dx,MSG1 ; trying to display the result
mov ah,09h
int 21h
mov ah, 4cH ; return to DOS
int 21h
main endp
cdseg ends
end main
J'ai suivi l'exemple à partir de cette topic, mais il ne fonctionne pas dans EMU8086
Vous devez d'abord convertir 'sum' en une chaîne ASCII. Regardez [cet exemple] (http://stackoverflow.com/a/23682807/3512216) – rkhb
Voulez-vous afficher une valeur 32 bits? – rkhb
J'ai mis à jour le post. Bien qu'il y ait quelques similitudes entre ma question et l'exemple, mais le mien est seulement un extrait qui est meilleur à suivre – mahmood