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