Skip to content

Instantly share code, notes, and snippets.

@ManuelWiki
Created October 21, 2023 18:09
Show Gist options
  • Save ManuelWiki/4a7ff726dbaff118ab6f7c7f4a2c42ff to your computer and use it in GitHub Desktop.
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, …
; 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