SoloCodigo
Programación General => ASM (Ensamblador) => Mensaje iniciado por: Ericka en Jueves 25 de Marzo de 2004, 18:51
-
Gracias por leerme... he econtrado informacion muy util en este foro y quisiera saber si pueden ayudarme a hacer un programa que sume los valores de 1 a 100 y los deje en AX, luego sume los valores de 50 a 200 y los coloque en BX, luego saque una diferencia entre AX y BX y la deje en CX, y la diferencia entre BX y AX la deje en CX, he estado leyendo acerca de como hacer sumas y restas :comp: , pero no se como hacer para que haga la sumatoria en ciclo de 1 a 100 y de 50 a 200... :( PLEASE HELP ME! :D
-
Por lo visto son dos bucles y dado que cx sólamente lo usas el las operaciones finales te recomiendo algo como lo siguiente("loops"):
mov cx,100 ; el loop termina en el 0 por lo que 101 repeticiones
xor ax,ax ; es lo mismo que 'mov ax,0' :) inicialización
xor bx,bx
etiqueta0: ;fijate bien en esto
add ax,cx ;ax es operando y destino a la vez por lo que nos vale
;como acumulador de los resultado parciales
loop etiqueta0 ; con cx=0 rompe el bucle, mientras repite y
;decrementa cx en cada repeticion
;hemos realizado 101 sumas pero en la última cx=0
;con lo que no ha sumado nada
;ahora repetimos pero com una pequeña trampa :devil:
mov cx,200
etiqueta1:
add bx,cx
cmp cx,50 ;miramos si cx=50
je fuera ; si cx=50 saltamos fuera del bucle con lo que lo rompemos
loop etiqueta1
fuera:
mov cx,ax
sub cx,bx ;primera diferencia en cx
;ahora realizamos las operaciones que sea
;(mostrar por pantalla...)
mov cx,bx
sub cx,ax
;y con esto finaliza el codigo de hoy B)
-
Muchas gracias me ha servido de mucho!!!!!! :devil: