Help,Help, Help We need you help
You are to write a username/password verification program that
(a) Prompts the user for a username and a password.
(b) Reads the username (up to 10 characters).
(c) Opens the file pass.txt and searches in the file for a matching username. For each username read, the corresponding password is read as well.
(d) If no matching username is found, the message Incorrect username is printed on the screen and the program terminates.
(e) If a matching username is found, the user enters a password (up to 30 characters).
(f) If the password does not match the password read from the file, the message Incorrect password is printed on the screen and the program terminates. Otherwise, the message Successful login is printed on the screen and the program terminates.
(g) If the file pass.txt cannot be opened, the message Open file error is printed on the screen and the program terminates.
The file pass.txt has the following structure:
username[1]
password[1]
username[2]
password[2]
...
where each username[i] consists of 10 characters and is followed by a carriage return and a line feed, and each password[i] consists of 30 characters and is followed by a carriage return and a line feed. If a username has less than 10 characters then spaces are added to the end of it until 10 characters are on that line. Passwords are also padded with spaces if they are less than 30 characters. Your program should be based on the following procedures.
1. Show
Procedure Show will clear the screen. The procedure then prints 'Username: ' on the middle of the screen (row 12, column 30). Afterwards, 'Password: ' is printed on the next line (row 13, column 30).
2. GetUser
Procedure GetUser receives through the stack the offset to a byte array in which a username will be stored. The procedure reads a username of up to 10 characters until enter is pressed (the enter and any backspaces are not included in the username). Make sure that the characters are echoed next to the prompt 'Username: '. If the username is less than 10 characters long, the procedure will fill the rest with spaces.
3. TestUser
Procedure TestUser receives through the stack the offset of a null-terminated string (a filename), the offset of a 10-byte string (a username), and the offset of a 44-byte string in which a block will be stored. The procedure should open the file and repeatedly read blocks of 44 bytes from the file, until the first 10 characters of a block match the 10 characters of the username, or until the end of file is reached. The procedure stores 0 in edx if no match is found, 1 in edx if there is a match, or 1 in edx if the file cannot be opened.
4. GetPass
Procedure GetPass receives through the stack the offset of a 30-byte array in which a password will be stored. The procedure will read a password until enter is pressed or 30 characters are read (excluding enter and backspaces). If a character, other than enter and backspace, is pressed a '*' is printed on the screen. The '*'s are printed next to the prompt 'Password: '. If a backspace is pressed, the previous '*' is erased, unless no '*' exists next to the prompt. If the password is less than 30 characters long, the procedure will fill the rest with spaces.
5. TestPass
Procedure TestPass receives through the stack an offset of an array which contains a password read in from pass.txt and an offset of an array which contains the password typed in by the user. The procedure stores 1 in edx if the two strings are equal or 0 in edx otherwise.

