new

section .data
    promptMonth db “Enter your birth month (1-12): “, 0
    promptMonthL equ $ – promptMonth
    
    promptDay db “Enter your birth day (1-31): “, 0
    promptDayL equ $ – promptDay
    
    newline db 0xA, 0
    
    ariesSign db “Zodiac Sign is Aries”, 0
    ariesSignL equ $ – ariesSign
    
    ariesMsg db “Short description about Aries: “, 0
    ariesMsgL equ $ – ariesMsg
    
    ariesDesc db “Aries is a passionate, motivated, and confident leader who builds community with their cheerful disposition and relentless determination”, 0
    ariesDescL equ $ – ariesDesc
    
    taurusSign db “Zodiac Sign is Taurus”, 0
    taurusSignL equ $ – taurusSign
    
    taurusMsg db “Short description about Taurus: “, 0
    taurusMsgL equ $ – taurusMsg
    
    taurusDesc db “Taurus enjoy relaxing in serene, bucolic environments surrounded by soft sounds, soothing aromas, and succulent flavors”, 0
    taurusDescL equ $ – taurusDesc
    
    geminiSign db “Zodiac Sign is Gemini”, 0
    geminiSignL equ $ – geminiSign
    
    geminiMsg db “Short description about Gemini: “, 0
    geminiMsgL equ $ – geminiMsg
    
    geminiDesc db “Spontaneous, playful, and adorably erratic, Gemini is driven by its insatiable curiosity”, 0
    geminiDescL equ $ – geminiDesc
    
    cancerSign db “Zodiac Sign is Cancer”, 0
    cancerSignL equ $ – cancerSign
    
    cancerMsg db “Short description about Cancer: “, 0
    cancerMsgL equ $ – cancerMsg
    
    cancerDesc db “Cancer seamlessly weaves between the sea and shore representing Cancer’s ability to exist in both emotional and material realms”, 0
    cancerDescL equ $ – cancerDesc
    
    leoSign db “Zodiac Sign is Leo”, 0
    leoSignL equ $ – leoSign
    
    leoMsg db “Short description about Leo: “, 0
    leoMsgL equ $ – leoMsg
    
    leoDesc db “Passionate,, loyal and infamously dramatic, Leo is represented by the lion and these spirited fire signs are the kings and queens of the celestial jungle”, 0
    leoDescL equ $ – leoDesc
    
    virgoSign db “Zodiac Sign is Virgo”, 0
    virgoSignL equ $ – virgoSign
    
    virgoMsg db “Short description about Virgo: “, 0
    virgoMsgL equ $ – virgoMsg
    
    virgoDesc db “Virgos are logical, practical and systematic in their approach to life.”, 0
    virgoDescL equ $ – virgoDesc
    
    libraSign db “Zodiac Sign is Libra”, 0
    libraSignL equ $ – libraSign
    
    libraMsg db “Short description about Li: “, 0
    libraMsgL equ $ – libraMsg
    
    libraDesc db “Libra is obssessed with symmetry and strives to create equilibrium in all areas of life, especially when it comes to matters of the heart”, 0
    libraDescL equ $ – libraDesc
    
    scorpioSign db “Zodiac Sign is Scorpio”, 0
    scorpioSignL equ $ – scorpioSign
    
    scorpioMsg db “Short description about Scorpio: “, 0
    scorpioMsgL equ $ – scorpioMsg
    
    scorpioDesc db “Scorpio is a water sign that uses emotional energy as fuel, cultivating powerful wisdom through both the physical and unseen realms”, 0
    scorpioDescL equ $ – scorpioDesc
    
    sagittariusSign db “Zodiac Sign is Sagittarius”, 0
    sagittariusSignL equ $ – sagittariusSign
    
    sagittariusMsg db “Short description about Sagittarius: “, 0
    sagittariusMsgL equ $ – sagittariusMsg
    
    sagittariusDesc db “Represented by the archer, Sagittarius is always on a quest for knowledge.”, 0
    sagittariusDescL equ $ – sagittariusDesc
    
    capricornSign db “Zodiac Sign is Capricorn”, 0
    capricornSignL equ $ – capricornSign
    
    capricornMsg db “Short description about Capricorn: “, 0
    capricornMsgL equ $ – capricornMsg
    
    capricornDesc db “Capricorn is climbing the mountain straight to the top and knows that patience, perseverance, and dedication is the only way to scale”, 0
    capricornDescL equ $ – capricornDesc
    
    aquariusSign db “Zodiac Sign is Aquarius”, 0
    aquariusSignL equ $ – aquariusSign
    
    aquariusMsg db “Short description about Aquarius: “, 0
    aquariusMsgL equ $ – aquariusMsg
    
    aquariusDesc db “Innovative, progressive and shamelessly revolutionary, Aquarius is represented by the water bearer, the mystical healer who bestows water, or life, upon the land.”, 0
    aquariusDescL equ $ – aquariusDesc
    
    piscesSign db “Zodiac Sign is pisces”, 0
    piscesSignL equ $ – piscesSign
    
    piscesMsg db “Short description about pisces: “, 0
    piscesMsgL equ $ – piscesMsg
    
    piscesDesc db “Innovative, progressive and shamelessly revolutionary, Aquarius is represented by the water bearer, the mystical healer who bestows water, or life, upon the land.”, 0
    piscesDescL equ $ – piscesDesc

    invalidMsg db “Invalid input. Please enter a valid number.”
    invalidMsgL equ $ – invalidMsg
    
section .bss
    month resb 2
    day resb 2

section .text
    global _start

_start:
    mov eax, 4
    mov ebx, 1
    mov ecx, promptMonth
    mov edx, promptMonthL
    int 0x80
    
    mov eax, 3
    mov ebx, 0
    mov ecx, month
    mov edx, 2
    int 0x80
    
    cmp [month], 1
    jl invalidInput
    cmp [month], 12
    jg invalidInput
    
    mov eax, 4
    mov ebx, 1
    mov ecx, promptDay
    mov edx, promptDayL
    int 0x80
    
    mov eax, 3
    mov ebx, 0
    mov ecx, day
    mov edx, 2
    int 0x80
    
    cmp [day], 1
    jl invalidInput
    cmp [day], 31
    jg invalidInput
    
    cmp [month], 1
    jne checkFeb
    cmp [day], 20
    jl zodiacSignCapricorn
    jmp zodiacSignAquarius
    
invalidInput:
    mov eax, 4
    mov ebx, 1
    mov ecx, invalidMsg
    mov edx, invalidMsgL
    int 0x80
    jmp _start:
    
checkFeb:
    cmp [month], 2
    jne checkMar
    cmp [day], 19
    jl zodiacSignAquarius
    jmp zodiacSignPisces

checkMar:
    cmp [month], 3
    jne checkApr
    cmp [day], 21
    jl zodiacSignPisces
    jmp zodiacSignAries

checkApr:
    cmp [month], 4
    jne checkMay
    cmp [day], 20
    jl zodiacSignAries
    jmp zodiacSignTaurus

checkMay:
    cmp [month], 5
    jne checkJun
    cmp [day], 20
    jl zodiacSignTaurus
    jmp zodiacSignGemini

checkJun:
    cmp [month], 6
    jne checkJul
    cmp [day], 21
    jl zodiacSignGemini
    jmp zodiacSignCancer

checkJul:
    cmp [month], 7
    jne checkAug
    cmp [day], 22
    jl zodiacSignCancer
    jmp zodiacSignLeo

checkAug:
    cmp [month], 8
    jne checkSep
    cmp [day], 23
    jl zodiacSignLeo
    jmp zodiacSignVirgo

checkSep:
    cmp [month], 9
    jne checkOct
    cmp [day], 23
    jl zodiacSignVirgo
    jmp zodiacSignLibra

checkOct:
    cmp [month], 10
    jne checkNov
    cmp [day], 23
    jl zodiacSignLibra
    jmp zodiacSignScorpio

checkNov:
    cmp [month], 11
    jne checkMay
    cmp [day], 22
    jl zodiacSignScorpio
    jmp zodiacSignSagittarius

checkDec:
    cmp [month], 12
    jne checkMay
    cmp [day], 22
    jl zodiacSignSagittarius
    jmp zodiacSignCapricorn

zodiacSignAries:
    mov eax, 4
    mov ebx, 1
    mov ecx, ariesSign
    mov edx, ariesSignL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4 
    mov ebx, 1
    mov ecx, ariesMsg
    mov edx, ariesMsgL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, ariesDesc
    mov edx, ariesDescL
    int 0x80

    jmp exit

zodiacSignTaurus:
    mov eax, 4
    mov ebx, 1
    mov ecx, taurusSign
    mov edx, taurusSignL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4 
    mov ebx, 1
    mov ecx, taurusMsg
    mov edx, taurusMsgL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, taurusDesc
    mov edx, taurusDescL
    int 0x80

    jmp exit
    
zodiacSignGemini:
    mov eax, 4
    mov ebx, 1
    mov ecx, geminiSign
    mov edx, geminiSignL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4 
    mov ebx, 1
    mov ecx, geminiMsg
    mov edx, geminiMsgL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, geminiDesc
    mov edx, geminiDescL
    int 0x80

    jmp exit
    
zodiacSignCancer:
    mov eax, 4
    mov ebx, 1
    mov ecx, cancerSign
    mov edx, cancerSignL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4 
    mov ebx, 1
    mov ecx, cancerMsg
    mov edx, cancerMsgL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, cancerDesc
    mov edx, cancerDescL
    int 0x80

    jmp exit

zodiacSignLeo:
    mov eax, 4
    mov ebx, 1
    mov ecx, leoSign
    mov edx, leoSignL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4 
    mov ebx, 1
    mov ecx, leoMsg
    mov edx, leoMsgL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, leoDesc
    mov edx, leoDescL
    int 0x80

    jmp exit

zodiacSignVirgo:
    mov eax, 4
    mov ebx, 1
    mov ecx, virgoSign
    mov edx, virgoSignL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4 
    mov ebx, 1
    mov ecx, virgoMsg
    mov edx, virgoMsgL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, virgoDesc
    mov edx, virgoDescL
    int 0x80

    jmp exit

zodiacSignLibra:
    mov eax, 4
    mov ebx, 1
    mov ecx, libraSign
    mov edx, libraSignL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4 
    mov ebx, 1
    mov ecx, libraMsg
    mov edx, libraMsgL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, libraDesc
    mov edx, libraDescL
    int 0x80

    jmp exit

zodiacSignScorpio:
    mov eax, 4
    mov ebx, 1
    mov ecx, scorpioSign
    mov edx, scorpioSignL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4 
    mov ebx, 1
    mov ecx, scorpioMsg
    mov edx, scorpioMsgL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, scorpioDesc
    mov edx, scorpioDescL
    int 0x80

    jmp exit

zodiacSignSagittarius:
    mov eax, 4
    mov ebx, 1
    mov ecx, sagittariusSign
    mov edx, sagittariusSignL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4 
    mov ebx, 1
    mov ecx, sagittariusMsg
    mov edx, sagittariusMsgL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, sagittariusDesc
    mov edx, sagittariusDescL
    int 0x80

    jmp exit

zodiacSignCapricorn:
    mov eax, 4
    mov ebx, 1
    mov ecx, capricornSign
    mov edx, capricornSignL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4 
    mov ebx, 1
    mov ecx, capricornMsg
    mov edx, capricornMsgL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, capricornDesc
    mov edx, capricornDescL
    int 0x80

    jmp exit

zodiacSignAquarius:
    mov eax, 4
    mov ebx, 1
    mov ecx, aquariusSign
    mov edx, aquariusSignL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4 
    mov ebx, 1
    mov ecx, aquariusMsg
    mov edx, aquariusMsgL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, aquariusDesc
    mov edx, aquariusDescL
    int 0x80

    jmp exit

zodiacSignPisces:
    mov eax, 4
    mov ebx, 1
    mov ecx, piscesSign
    mov edx, piscesSignL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4 
    mov ebx, 1
    mov ecx, piscesMsg
    mov edx, piscesMsgL
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80
    
    mov eax, 4
    mov ebx, 1
    mov ecx, piscesDesc
    mov edx, piscesDescL
    int 0x80

    jmp exit

exit:
    mov eax, 1
    xor ebx, ebx
    int 0x80
    

Scroll to Top