mirror of
https://github.com/caperren/school_archives.git
synced 2025-11-09 21:51:15 +00:00
Added VERY old code. Very cringy to look at, but hey, we all had to start somewhere...
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,22 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2013
|
||||
VisualStudioVersion = 12.0.21005.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ASM_Project", "Assignement 2.vcxproj", "{4164AA65-1EF9-4E69-899B-D1BED776070B}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{4164AA65-1EF9-4E69-899B-D1BED776070B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{4164AA65-1EF9-4E69-899B-D1BED776070B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{4164AA65-1EF9-4E69-899B-D1BED776070B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{4164AA65-1EF9-4E69-899B-D1BED776070B}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
Binary file not shown.
@@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<MASM Include="main.asm" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{4164AA65-1EF9-4E69-899B-D1BED776070B}</ProjectGuid>
|
||||
<ProjectName>ASM_Project</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<MASM>
|
||||
<IncludePaths>c:\Irvine</IncludePaths>
|
||||
</MASM>
|
||||
<Link>
|
||||
<AdditionalDependencies>user32.lib;irvine32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>c:\Irvine;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Link>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<AdditionalLibraryDirectories>c:\Irvine;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
<AdditionalDependencies>user32.lib;irvine32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<MASM>
|
||||
<IncludePaths>c:\Irvine</IncludePaths>
|
||||
</MASM>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2013
|
||||
VisualStudioVersion = 12.0.21005.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ASM_Project", "Project 2.vcxproj", "{4164AA65-1EF9-4E69-899B-D1BED776070B}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{4164AA65-1EF9-4E69-899B-D1BED776070B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{4164AA65-1EF9-4E69-899B-D1BED776070B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{4164AA65-1EF9-4E69-899B-D1BED776070B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{4164AA65-1EF9-4E69-899B-D1BED776070B}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,268 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
TITLE Assignment 2 (main.asm)
|
||||
;Author: Corwin Perren
|
||||
;Date: 1/28/2014
|
||||
;Description:
|
||||
; This program will calculate and display the nth iteration of the fibonacci
|
||||
; sequence for n values between 1 and 46
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
|
||||
INCLUDE Irvine32.inc
|
||||
.data
|
||||
ProgramTitle BYTE "CS 271 - Assignment 2",0
|
||||
ProgrammersName BYTE "Programmed By: Corwin Perren",0
|
||||
|
||||
NamePrompt BYTE "By what name may I call you?",0
|
||||
NamePrompt2 BYTE "Your name: ", 0
|
||||
|
||||
NameResponse BYTE "Welcome, ", 0
|
||||
NameResponse2 BYTE ".", 0
|
||||
|
||||
FibPrompt BYTE "How many values of the fibonacci sequence would you like to calculate?", 0
|
||||
FibPrompt2 BYTE "Enter a value from 1 to 46: ", 0
|
||||
FibPromptIncorrect BYTE "Value was not between 1 and 46. Please try again.", 0
|
||||
|
||||
TabString BYTE 9, 0
|
||||
ExtraTab DWORD 1346269
|
||||
|
||||
TryAgainMessage BYTE "Would you like to run the program again?", 0
|
||||
TryAgainMessage2 BYTE "Answer (y/n): ", 0
|
||||
|
||||
IncorrectTryMessage BYTE "Please enter y or n....", 0
|
||||
|
||||
TermMessage BYTE "Goodbye, ", 0
|
||||
TermMessage2 BYTE ".", 0
|
||||
|
||||
FibMax DWORD 46
|
||||
FibMin DWORD 1
|
||||
|
||||
UserName BYTE 25 dup(0)
|
||||
KeyAnswer BYTE 2 dup(0)
|
||||
NumFib DWORD ?
|
||||
|
||||
FibVal DWORD 1
|
||||
FibVal2 DWORD 1
|
||||
|
||||
CurCol DWORD 0
|
||||
ColMax DWORD 5
|
||||
|
||||
Yep BYTE "y", 0
|
||||
Nope BYTE "n", 0
|
||||
|
||||
.code
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Simple procedure for printing a tab to the screen
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
InsertTab PROC
|
||||
mov edx,OFFSET TabString ;Moves the tab character into the buffer
|
||||
call WriteString ;Writes the tab to the screen
|
||||
ret ;Returns out of the procedure
|
||||
InsertTab ENDP
|
||||
|
||||
main PROC
|
||||
call Clrscr ;Clears the screen
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Write title and programmers name to screen
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
mov edx,OFFSET ProgramTitle ;Gets title ready to print
|
||||
call WriteString ;Prints title
|
||||
call Crlf ;Prints a new line
|
||||
|
||||
mov edx,OFFSET ProgrammersName ;Gets programmers name ready to print
|
||||
call WriteString ;Prints programmers name
|
||||
call Crlf ;Prints newline
|
||||
call Crlf ;Prints newline
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Prompt user for their name
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
mov edx,OFFSET NamePrompt ;Gets username prompt ready
|
||||
call WriteString ;Prints username prompt
|
||||
call Crlf ;Prints newline
|
||||
|
||||
mov edx,OFFSET NamePrompt2 ;Gets second half of username prompt ready
|
||||
call WriteString ;Prints username prompt part 2
|
||||
mov edx,OFFSET UserName ;Moves offset for username storage var into edx
|
||||
mov ecx,SIZEOF UserName ;Sets max number of characters to read in
|
||||
call ReadString ;Reads in username string from user
|
||||
call Crlf ;Prints newline
|
||||
call Crlf ;Prints newline
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Write user welcome message, with their name
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
DoAgain:
|
||||
call Clrscr ;Clears the screen to clean up output
|
||||
mov edx,OFFSET NameResponse ;Gets the welcome message part 1 ready to print
|
||||
call WriteString ;Prints welcome message part 1
|
||||
mov edx,OFFSET UserName ;Gets username ready to print
|
||||
call WriteString ;Prints username
|
||||
mov edx,OFFSET NameResponse2 ;Gets welcome message part 2 redy to print
|
||||
call WriteString ;Prints welcome message part 2
|
||||
call Crlf ;Prints a new line
|
||||
call Crlf ;Prints a new line
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Prompt user for number of fibonacci to calculate
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
mov edx,OFFSET FibPrompt ;Gets prompt for fibonacci number ready
|
||||
call WriteString ;Prints fib prompt
|
||||
call Crlf ;Prints a new line
|
||||
|
||||
jmp EnterNumber ;Jumps to enter number label to begin input
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;This prompt shows when the number enterred is not within 1 to 46
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
IncorrectInput:
|
||||
call Crlf ;Prints a new line
|
||||
mov edx,OFFSET FibPromptIncorrect ;Gets incorrect range prompt ready to print
|
||||
call WriteString ;Prints incorrect range prompt
|
||||
call Crlf ;Prints a new line
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Main prompt and read-in of fibonacci value from user
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
EnterNumber:
|
||||
mov edx,OFFSET FibPrompt2 ;Get main number entry prompt ready to print
|
||||
call WriteString ;Prints main input prompt
|
||||
call ReadInt ;Reads in int from user
|
||||
|
||||
cmp eax, FibMin ;Checks if input is less than 1
|
||||
jl IncorrectInput ;Jumps to incorrect input if true
|
||||
|
||||
cmp eax, FibMax ;Checks if input is greater than 46
|
||||
jg IncorrectInput ;Jumps to incorrect input if true
|
||||
|
||||
mov NumFib, eax ;Copies number to variable if in correct range
|
||||
call Crlf ;Prints a new line
|
||||
|
||||
mov FibVal, 1 ;Reset fib start vals
|
||||
mov FibVal2, 1 ;Reset fib start vals
|
||||
mov CurCol, 0 ;Reset current column position
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;This section prints the first fibonacci sequence value
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
mov eax, FibVal ;Gets first value of fibonacci sequence ready to print (1)
|
||||
call WriteInt ;Writes value to screen
|
||||
cmp NumFib, 1 ;Checks if only this one value should be displayed
|
||||
je FibDone ;If true, jump to end of program
|
||||
inc CurCol ;Increment column index
|
||||
call InsertTab ;Prints tab for column alignment
|
||||
call InsertTab ;Prints tab for column alignment
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;This section prints the second fibonacci sequence value
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Call WriteInt ;Prints the second value of the fibonacci sequence (also 1)
|
||||
cmp NumFib, 2 ;Checks if only these two should be displayed
|
||||
je FibDone ;If true, jump to end of program
|
||||
|
||||
inc CurCol ;Otherwise, increment column index
|
||||
call InsertTab ;Prints tab for column alignment
|
||||
call InsertTab ;Prints tab for column alignment
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Setup of registers for the impending loop
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
mov ecx, NumFib ;Sets loop ecx value
|
||||
sub ecx, 2 ;Subtracts two because of the first two have already been printed
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Main fibonacci calculation and print loop
|
||||
;PSEUDO
|
||||
;newval = FibVal2 + Fibval
|
||||
;print newval
|
||||
;FibVal = FibVal2
|
||||
;FibVal2 = newval;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
CalcFib:
|
||||
mov eax, FibVal2 ;Moves most recent fibonacci value into one reg
|
||||
add eax, FibVal ;Adds second to last to most recent
|
||||
call WriteInt ;Prints this fibonacci value to screen
|
||||
|
||||
push FibVal2 ;Moves old most recent to temp spot for move
|
||||
pop FibVal ;Replaces second to last old val
|
||||
mov FibVal2, eax ;Moves new most recent val to FibVal2
|
||||
|
||||
call InsertTab ;Prints tab for column alignment
|
||||
cmp eax, ExtraTab ;Check if output val requires extra tab on output
|
||||
jl OneExtra ;Jump to extra tab output label if necessary
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Return jump point for extra tab printing to make output alignment nice
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
MidCalcFib:
|
||||
inc CurCol ;Increment column index
|
||||
mov edx, CurCol ;Place index in reg for compare
|
||||
cmp edx, ColMax ;Compare current col index with max
|
||||
jne CalcFibLoop ;Jump to rest of loop if newline not needed
|
||||
|
||||
call Crlf ;Prints newline when needed
|
||||
mov CurCol, 0 ;Resets current column index
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Jump location used for avoiding printing a newline from above
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
CalcFibLoop:
|
||||
loop CalcFib ;Loops fib calc sequence until ecx counter 0
|
||||
jmp TryAgain ;Jumps to program end if loop done
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Jump location used for printing on screen tabs
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
OneExtra:
|
||||
call InsertTab ;Calls procedure to input tab when necessary
|
||||
jmp MidCalcFib ;Jumps back to where it was called
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;This section deals with jumping if the user wants to calculate more values
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
IncorrectTry:
|
||||
call Crlf ;Prints a new line
|
||||
mov edx,OFFSET IncorrectTryMessage ;Gets ready to print the incorrect try message
|
||||
call Writestring ;Prints the incorrect try message
|
||||
|
||||
TryAgain:
|
||||
call Crlf ;Prints a new line
|
||||
call Crlf ;Prints a new line
|
||||
mov edx,OFFSET TryAgainMessage ;Gets ready to print the try again message
|
||||
call WriteString ;Prints the try again message
|
||||
call Crlf ;Prints a new line
|
||||
|
||||
mov edx,OFFSET TryAgainMessage2 ;Gets ready to print the try again message part 2
|
||||
call WriteString ;Prints the try again message 2
|
||||
mov edx,OFFSET KeyAnswer ;Assigns edx to offset of keyanswer for keyboard input
|
||||
mov ecx,SIZEOF KeyAnswer ;Sets number of characters to read in
|
||||
call ReadString ;Reads in keyboard input
|
||||
|
||||
INVOKE Str_compare,OFFSET KeyAnswer,OFFSET Yep ;Uses a multi-input irvine procedure to do a string comparison
|
||||
je DoAgain ;Jump to DoAgain if the user answered 'y'
|
||||
|
||||
INVOKE Str_compare,OFFSET KeyAnswer,OFFSET Nope ;Uses a multi-input irvine procedure to do a string comparison
|
||||
je FibDone ;Jumps to end if user answered 'n'
|
||||
|
||||
jmp IncorrectTry ;Jumps to an incorrect input section if user enterred wrong values
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Section to show the termination message
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
FibDone:
|
||||
call Crlf ;Prints a new line
|
||||
call Crlf ;Prints a new line
|
||||
mov edx,OFFSET TermMessage ;Gets termination message part 1 ready to print
|
||||
call WriteString ;Prints termination message
|
||||
|
||||
mov edx,OFFSET UserName ;Gets username ready to print
|
||||
call WriteString ;Prints username
|
||||
|
||||
mov edx,OFFSET TermMessage2 ;Gets termination message part 2 ready to print
|
||||
call WriteString ;Prints termination messag part 2
|
||||
|
||||
call Crlf ;Prints a new line
|
||||
exit ;Ends main program
|
||||
main ENDP
|
||||
END main
|
||||
Reference in New Issue
Block a user