Cálculo de programación en ensamblaje: S=1 2 3 ... N ≤100 número máximo de términos N y la suma correspondiente S. Muestra el resultado como un número hexadecimal en la pantalla.
El total almacena un valor que no se puede superar. Puedes intentar cambiarlo a otros números.
segmento dseg
total dw 100
bufout db 10 dup(?)
msg1 db 'N = $'
msg2 db 'S = $'
msglf db 0ah, 0dh, '$'
dseg termina
segmento cseg1
supongamos cs: cseg1, ds: dseg
inicio:
mov ax, dseg
mov ds, ax
mov bx , 1
mov hacha, 1
mov dx, total
Acumular::
cmp hacha, dx
jaDone
inc bx
añadir ax, bx
jmp acumular
Listo:
sub ax , bx
dec bx
mov di, ax; guardar temporalmente
lea dx, msg1
mov ah, 9 p >
int 21h
mov ax, bx
lea si, bufout
llama a I16toa
lea dx, bufout
p>mov ah, 9
int 21h
lea dx, msglf
mov ah, 9
int 21h
lea dx, msg2
mov ah, 9
int 21h
mov ax, di
lea si , bufout
llama a I16toa
lea dx, bufout
mov ah, 9
int 21h
mov ah, 4ch
int 21h
cseg1 termina
segmento cseg2
se supone cs:cseg2
I16toa proc lejos usa bx cx dx
mov bx, 10
xor cx, cx
Siguiente:
xor dx, dx
p>div bx
o dl, 30h
push dx
inc cx
cmp hacha, 0 p >
jnz Next
Tienda:
pop dx
mov [si], dl
inc si
almacenamiento de bucle
mov byte ptr[si], '$'
ret
I16toa endp
cseg2 termina< / p>
fin inicio