Professional Documents
Culture Documents
Coal Project
Coal Project
inc
.data
accounts DWORD 10 DUP(0) ; array to store account information
accountCount DWORD 0 ; number of accounts created
; Mobile interface
BY1 BYTE " _____________________________________________",0
BY2 BYTE " | | O ----- O | ____ |",0
BY3 BYTE " | 6:54 o o `---------------` .|| .|____||",0
BY4 BYTE " | |",0
BY5 BYTE " | |",0
BY6 BYTE " | |",0
BY7 BYTE " | |",0
BY8 BYTE " | |",0
BY9 BYTE " | |",0
BY10 BYTE " | |",0
BY11 BYTE " | |",0
BY35 BYTE " | |",0
BY12 BYTE " | |",0
BY36 BYTE " | |",0
BY13 BYTE " | |",0
BY14 BYTE " | |",0
BY15 BYTE " | |",0
BY16 BYTE " | |",0
BY17 BYTE " | |",0
BY18 BYTE " | |",0
BY19 BYTE " | |",0
BY20 BYTE " | |",0
BY21 BYTE " | |",0
BY22 BYTE " | |",0
BY23 BYTE " | |",0
BY24 BYTE " | |",0
BY25 BYTE " | |",0
BY26 BYTE " | |",0
BY27 BYTE " | |",0
BY28 BYTE " | |",0
BY29 BYTE " | |",0
BY30 BYTE " | |",0
BY31 BYTE " | |",0
BY32 BYTE " | _. __ __ |",0
BY33 BYTE " | |__| |__| `__| |",0
BY34 BYTE " |_____________________________________________|",0
.code
main PROC
; initialize accounts array
mov ecx, 10
mov esi, OFFSET accounts
mov eax, 0
;rep stosd
; create account
createAccount:
; get account number
call clrscr
call displayMobileInterface
mov dh, 10
mov dl, 20
call Gotoxy
mov edx, OFFSET createAccountPrompt
call WriteString
call readInt
mov ebx, accountCount
shl ebx, 3 ; ebx = accountCount * 8
mov [accounts + ebx], eax
; get initial balance
mov dh, 11
mov dl, 20
call Gotoxy
mov edx, OFFSET createAccountBalancePrompt
call WriteString
call readInt
mov [accounts + ebx + 4], eax
inc accountCount
call crlf
mov dh, 13
mov dl, 20
call Gotoxy
mov edx, OFFSET accountCreatedMsg
call WriteString
call crlf
call crlf
jmp loop1
; deposit money
depositMoney:
; get account number
call clrscr
call displayMobileInterface
mov dh, 10
mov dl, 20
call Gotoxy
mov edx, OFFSET depositPrompt
call WriteString
call readInt
mov ebx, eax
mov esi, OFFSET accounts
mov ecx, accountCount
loop2:
cmp ebx, [esi]
je foundAccount
add esi, 8
loop loop2
; account not found, display error message
mov dh, 11
mov dl, 20
call Gotoxy
mov edx, OFFSET accountNotFoundMsg
call WriteString
call crlf
call crlf
jmp loop1
foundAccount:
; get amount to deposit
mov dh, 11
mov dl, 20
call Gotoxy
mov edx, OFFSET depositAmountPrompt
call WriteString
call readInt
add [esi+4], eax
mov dh, 13
mov dl, 20
call Gotoxy
mov edx, OFFSET depositedMsg
call WriteString
call crlf
call crlf
jmp loop1
; withdraw money
withdrawMoney:
; get account number
call clrscr
call displayMobileInterface
mov dh, 10
mov dl, 20
call Gotoxy
mov edx, OFFSET withdrawPrompt
call WriteString
call readInt
mov ebx, eax
mov esi, OFFSET accounts
mov ecx, accountCount
loop3:
cmp ebx, [esi]
je foundAccount2
add esi, 8
loop loop3
; account not found, display error message
mov dh, 11
mov dl, 20
call Gotoxy
mov edx, OFFSET accountNotFoundMsg
call WriteString
call crlf
call crlf
jmp loop1
foundAccount2:
; get amount to withdraw
mov dh, 11
mov dl, 20
call Gotoxy
mov edx, OFFSET withdrawAmountPrompt
call WriteString
call readInt
cmp eax, [esi+4]
ja insufficientFunds
; subtract amount from account balance
sub [esi+4], eax
mov dh, 13
mov dl, 20
call Gotoxy
mov edx, OFFSET withdrawnMsg
call WriteString
call crlf
call crlf
jmp loop1
insufficientFunds:
; display error message
mov dh, 13
mov dl, 20
call Gotoxy
mov edx, OFFSET insufficientFundsMsg
call WriteString
call crlf
call crlf
jmp loop1
exitProgram:
; exit the program
ret
main ENDP
displayMenu PROC
; Display the menu options
call displayMobileInterface
mov dh, 10
mov dl, 20
call Gotoxy
mov edx, OFFSET menuMsg
call WriteString
mov dh, 11
mov dl, 20
call Gotoxy
mov edx, OFFSET option1
call WriteString
mov dh, 12
mov dl, 20
call Gotoxy
mov edx, OFFSET option2
call WriteString
mov dh, 13
mov dl, 20
call Gotoxy
mov edx, OFFSET option3
call WriteString
mov dh, 14
mov dl, 20
call Gotoxy
mov edx, OFFSET option4
call WriteString
mov dh, 15
mov dl, 20
call Gotoxy
mov edx, OFFSET option5
call WriteString
mov dh, 16
mov dl, 20
call Gotoxy
mov edx, OFFSET option6
call WriteString
mov dh, 18
mov dl, 20
call Gotoxy
mov edx, OFFSET promptMsg
call WriteString
ret
displayMenu ENDP
displayError PROC
; Display an error message
call displayMobileInterface
mov dh, 10
mov dl, 20
call Gotoxy
mov edx, OFFSET errorMsg
call WriteString
call crlf
ret
displayError ENDP
displayMobileInterface PROC
; Display the mobile-like interface
mov dh, 1
mov dl, 1
call Gotoxy
mov edx, OFFSET BY1
call WriteString
mov dh, 2
mov dl, 1
call Gotoxy
mov edx, OFFSET BY2
call WriteString
mov dh, 3
mov dl, 1
call Gotoxy
mov edx, OFFSET BY3
call WriteString
mov dh, 4
mov dl, 1
call Gotoxy
mov edx, OFFSET BY4
call WriteString
mov dh, 5
mov dl, 1
call Gotoxy
mov edx, OFFSET BY5
call WriteString
mov dh, 6
mov dl, 1
call Gotoxy
mov edx, OFFSET BY6
call WriteString
mov dh, 7
mov dl, 1
call Gotoxy
mov edx, OFFSET BY7
call WriteString
mov dh, 8
mov dl, 1
call Gotoxy
mov edx, OFFSET BY8
call WriteString
mov dh, 9
mov dl, 1
call Gotoxy
mov edx, OFFSET BY9
call WriteString
mov dh, 10
mov dl, 1
call Gotoxy
mov edx, OFFSET BY10
call WriteString
mov dh, 11
mov dl, 1
call Gotoxy
mov edx, OFFSET BY11
call WriteString
mov dh, 12
mov dl, 1
call Gotoxy
mov edx, OFFSET BY12
call WriteString
mov dh, 13
mov dl, 1
call Gotoxy
mov edx, OFFSET BY13
call WriteString
mov dh, 14
mov dl, 1
call Gotoxy
mov edx, OFFSET BY14
call WriteString
mov dh, 15
mov dl, 1
call Gotoxy
mov edx, OFFSET BY15
call WriteString
mov dh, 16
mov dl, 1
call Gotoxy
mov edx, OFFSET BY16
call WriteString
mov dh, 17
mov dl, 1
call Gotoxy
mov edx, OFFSET BY17
call WriteString
mov dh, 18
mov dl, 1
call Gotoxy
mov edx, OFFSET BY18
call WriteString
mov dh, 19
mov dl, 1
call Gotoxy
mov edx, OFFSET BY19
call WriteString
mov dh, 20
mov dl, 1
call Gotoxy
mov edx, OFFSET BY20
call WriteString
mov dh, 21
mov dl, 1
call Gotoxy
mov edx, OFFSET BY21
call WriteString
mov dh, 22
mov dl, 1
call Gotoxy
mov edx, OFFSET BY22
call WriteString
mov dh, 23
mov dl, 1
call Gotoxy
mov edx, OFFSET BY23
call WriteString
mov dh, 24
mov dl, 1
call Gotoxy
mov edx, OFFSET BY24
call WriteString
mov dh, 25
mov dl, 1
call Gotoxy
mov edx, OFFSET BY25
call WriteString
mov dh, 26
mov dl, 1
call Gotoxy
mov edx, OFFSET BY26
call WriteString
mov dh, 27
mov dl, 1
call Gotoxy
mov edx, OFFSET BY27
call WriteString
mov dh, 28
mov dl, 1
call Gotoxy
mov edx, OFFSET BY28
call WriteString
mov dh, 29
mov dl, 1
call Gotoxy
mov edx, OFFSET BY29
call WriteString
mov dh, 30
mov dl, 1
call Gotoxy
mov edx, OFFSET BY30
call WriteString
mov dh, 31
mov dl, 1
call Gotoxy
mov edx, OFFSET BY31
call WriteString
mov dh, 32
mov dl, 1
call Gotoxy
mov edx, OFFSET BY32
call WriteString
mov dh, 33
mov dl, 1
call Gotoxy
mov edx, OFFSET BY33
call WriteString
mov dh, 34
mov dl, 1
call Gotoxy
mov edx, OFFSET BY34
call WriteString
ret
displayMobileInterface ENDP
readIntt PROC
; read an integer from the keyboard
call ReadInt
ret
readIntt ENDp
END main