Created
October 21, 2023 18:09
-
-
Save ManuelWiki/4a7ff726dbaff118ab6f7c7f4a2c42ff to your computer and use it in GitHub Desktop.
Programa de Turbo Assembler (MASM/TASM) para calcular un número en la serie de Fibonacci. Este programa escrito en Turbo Assembler calcula el valor de la serie de Fibonacci para un número específico proporcionado en la variable 'n'. La serie de Fibonacci es una secuencia de números en la que cada número es la suma de los dos números anteriores, …
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; TITULO: La serie de Fibonacci para un determinado numero | |
ideal | |
dosseg | |
model small | |
stack 256 | |
dataseg | |
codsal db 0 | |
; Mis variables { | |
; Ambos son no signados | |
n db 20 ; <= la posicion de la serie de Fibonacci que se calculara | |
fib dw 0 ; <= el resultado de calcular esa posicion | |
x dw 0 ; <= variables que usaremos para calcular el resultado | |
y dw 1 ; <= | |
;} | |
codeseg | |
inicio: | |
mov ax, @data | |
mov ds, ax | |
; ###### MI CODIGO ####### { | |
; Comparo 'n' con 1 | |
cmp [n], 1 | |
; Si 'n' es 1 o menos, entonces saltamos a CeroOUno | |
jbe CeroOUno | |
; Si 'n' es mayor que 1, entonces hacemos lo siguiente { | |
; copiamos 'n' a 'cl' porque usaremos 'cx' como contador | |
mov cl, [n] | |
; limpiamos 'ch' | |
xor ch, ch | |
; restamos 1 a 'cx', para que se salte los pasos de cuando n es 0 o 1 | |
sub cx, 1 | |
ciclo: | |
; Sumaremos 'x' y 'y' a 'fib' | |
; limpiamos 'ax' | |
xor ax, ax | |
; sumamos 'x' y 'ax' | |
add ax, [x] | |
; sumamos 'y' y 'ax' | |
add ax, [y] | |
; copiamos ax a 'fib' | |
mov [fib], ax | |
; Luego debemos cambiar los valores de 'x' y 'y' | |
; x = y | |
mov ax, [y] | |
mov [x], ax | |
; y = fib | |
mov ax, [fib] | |
mov [y], ax | |
; le restamos 1 al contador | |
dec cx | |
jcxz salir ; si cx es 0, entonces salimos del ciclo | |
jmp ciclo ; si no, lo repetimos | |
; } | |
CeroOUno: | |
; Si 'n' es 1, el resultado es 1. Si 'n' es 0, el resultado es 0 | |
; Asi que copiamos 'n' a 'al' | |
mov al, [n] | |
; Y limpiamos 'ah' | |
xor ah, ah | |
; y luego copiamos 'ax' a 'fib' | |
mov [fib], ax | |
; } | |
salir: | |
mov ah, 04Ch | |
mov al, [codsal] | |
int 21h | |
end inicio |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment