Assembly Language - Vending Machine Project
Assembly Language - Vending Machine Project
asm)
; Description: PROJECT GROUP: THE3
.686
.MODEL FLAT, STDCALL
.STACK
INCLUDE Irvine32.inc
.data
color DWORD ?
line1 byte " ",0
line2 byte " __________________________________
",0
line3 byte " __________________ | | ",0
line4 byte " | | | | ",0
line5 byte " | __ __ __ | | | ",0
line6 byte " || | | | | || |SELAMAT DATANG KE MESIN LAYAN
DIRI| ",0
line7 byte " | |__| |__| |__| | | | ",0
line8 byte " | __ __ __ | | | ",0
line9 byte " | | | | | | | | |
__________________________________| ",0
line10 byte " | |__| |__| |__| | ",0dh, 0ah
byte " | __ __ __ | ",0dh, 0ah
byte " || | | | | ||
",0
line11 byte " | |__| |__| |__| | ",0
line12 byte " | |
__________________________________ ",0
line13 byte " | | | | ",0
line14 byte " | ________________ | | | ",0
line15 byte " || || | | ",0
line16 byte " ||________________|| | MESIN LAYAN DIRI CS
Go | ",0
line17 byte " | | | | ",0
line18 byte " |__________________| | | ",0
line19 byte " |
__________________________________| ",0
line20 byte " ",0
D1 BYTE "
_____________________________________ " ,0
D2 BYTE " | 1. Yoyic RM6 | " ,0
D3 BYTE " | 2. Lemon Tea RM4 | " ,0
D4 BYTE " | 3. Cincau RM5 | " ,0
D5 BYTE " | 4. Milo RM3 | " ,0
D6 BYTE " | 5. Starbucks Double Shot RM10 | " ,0
D7 BYTE " | 6. Coffee Milk RM4 | " ,0
D8 BYTE " | 7. Pepsi RM3 | " ,0
D9 BYTE " | 8. Coca Cola RM3 | " ,0
D10 BYTE " | 9. Evian RM12 | " ,0
D11 BYTE " | 10. Yougurt RM4 | " ,0
D12 BYTE " |
_____________________________________| " ,0
total DWORD 0
change DWORD 0
choice DWORD 0
one DWORD 1
five DWORD 5
ten DWORD 10
cost1 DWORD 6
cost2 DWORD 4
cost3 DWORD 5
cost4 DWORD 3
cost5 DWORD 10
cost6 DWORD 4
cost7 DWORD 3
cost8 DWORD 3
cost9 DWORD 12
cost10 DWORD 4
.code
main PROC
call clrscr
call colour1 ;set the initial colour for the text
call ani ;proc for colour animation
;jmp prompt
call Crlf
call Crlf
;call D5 ;call user prompt
;call ReadDec ;input from user
;call Clrscr
prompt:
call crlf
mov edx, OFFSET q2
call WriteString
call crlf
call ReadDec
;mov choice, eax
call crlf
call crlf
;cmp choice,0
cmp eax,1 ;if input 1
je L1
cmp eax,2 ;if input 2
je how
cmp eax,3
je stop
;jmp Stop ;if input 3
L1:
call clrscr
mov edx, OFFSET D1
call WriteString
call crlf
mov edx, OFFSET D2
call WriteString
call crlf
mov edx, OFFSET D3
call WriteString
call crlf
mov edx, OFFSET D4
call WriteString
call crlf
mov edx, OFFSET D5
call WriteString
call crlf
mov edx, OFFSET D6
call WriteString
call crlf
mov edx, OFFSET D7
call WriteString
call crlf
mov edx, OFFSET D8
call WriteString
call crlf
mov edx, OFFSET D9
call WriteString
call crlf
mov edx, OFFSET D10
call WriteString
call crlf
mov edx, OFFSET D11
call WriteString
call crlf
mov edx, OFFSET D12
call WriteString
call crlf
jmp L2
L2:
call crlf
call crlf
mov edx, OFFSET str1
call WriteString
call crlf
mov edx, OFFSET str2
call WriteString
call ReadDec
mov input1, eax
mov eax, input1
mul one
mov total, eax
call crlf
mov edx, OFFSET str3
call WriteString
call ReadDec
mov input2, eax
mov eax,input2
mul five
add total, eax
call crlf
mov edx, OFFSET str4
call WriteString
call ReadDec
mov input3, eax
mov eax,input3
mul ten
add total, eax
call crlf
mov edx, OFFSET str5
call WriteString
mov eax, total
call WriteDec
mov edx, OFFSET RM
call WriteString
call crlf
jmp FLAV
FLAV:
mov edx, OFFSET str6
call WriteString
call ReadDec
mov flavour, eax
cmp flavour,1
jz F1
cmp flavour,2
jz F2
cmp flavour,3
jz F3
cmp flavour,4
jz F4
cmp flavour,5
jz F5
cmp flavour,6
jz F6
cmp flavour,7
jz F7
cmp flavour,8
jz F8
cmp flavour,9
jz F9
cmp flavour,10
jz F10
jmp FLAV
F1:
cmp total, 2
jge Cal1
jl SR
Cal1:
mov edx, OFFSET item1
call WriteString
call crlf
mov eax, total
sub eax, cost1
mov change, eax
mov edx, OFFSET str7
call WriteString
mov eax, change
call WriteDec
mov edx, OFFSET RM
call WriteString
call crlf
jmp ASK
F2:
cmp total, 3
jge Cal2
jl SR
Cal2:
mov edx, OFFSET item2
call WriteString
call crlf
mov eax, total
sub eax, cost2
mov change, eax
mov edx, OFFSET str7
call WriteString
mov eax, change
call WriteDec
mov edx, OFFSET RM
call WriteString
call crlf
jmp ASK
F3:
cmp total, 2
jge Cal3
jl SR
Cal3:
mov edx, OFFSET item3
call WriteString
call crlf
mov eax, total
sub eax, cost3
mov change, eax
mov edx, OFFSET str7
call WriteString
mov eax, change
call WriteDec
mov edx, OFFSET RM
call WriteString
call crlf
jmp ASK
F4:
cmp total, 2
jge Cal4
jl SR
Cal4:
mov edx, OFFSET item4
call WriteString
call crlf
mov eax, total
sub eax, cost4
mov change, eax
mov edx, OFFSET str7
call WriteString
mov eax, change
call WriteDec
mov edx, OFFSET RM
call WriteString
call crlf
jmp ASK
F5:
cmp total, 2
jge Cal5
jl SR
Cal5:
mov edx, OFFSET item4
call WriteString
call crlf
mov eax, total
sub eax, cost5
mov change, eax
mov edx, OFFSET str7
call WriteString
mov eax, change
call WriteDec
mov edx, OFFSET RM
call WriteString
call crlf
jmp ASK
F6:
cmp total, 2
jge Cal4
jl SR
Cal6:
mov edx, OFFSET item6
call WriteString
call crlf
mov eax, total
sub eax, cost6
mov change, eax
mov edx, OFFSET str7
call WriteString
mov eax, change
call WriteDec
mov edx, OFFSET RM
call WriteString
call crlf
jmp ASK
F7:
cmp total, 2
jge Cal7
jl SR
Cal7:
mov edx, OFFSET item7
call WriteString
call crlf
mov eax, total
sub eax, cost7
mov change, eax
mov edx, OFFSET str7
call WriteString
mov eax, change
call WriteDec
mov edx, OFFSET RM
call WriteString
call crlf
jmp ASK
F8:
cmp total, 2
jge Cal8
jl SR
Cal8:
mov edx, OFFSET item8
call WriteString
call crlf
mov eax, total
sub eax, cost8
mov change, eax
mov edx, OFFSET str7
call WriteString
mov eax, change
call WriteDec
mov edx, OFFSET RM
call WriteString
call crlf
jmp ASK
F9:
cmp total, 2
jge Cal9
jl SR
Cal9:
mov edx, OFFSET item9
call WriteString
call crlf
mov eax, total
sub eax, cost9
mov change, eax
mov edx, OFFSET str7
call WriteString
mov eax, change
call WriteDec
mov edx, OFFSET RM
call WriteString
call crlf
jmp ASK
F10:
cmp total, 2
jge Cal10
jl SR
Cal10:
mov edx, OFFSET item10
call WriteString
call crlf
mov eax, total
sub eax, cost10
mov change, eax
mov edx, OFFSET str7
call WriteString
mov eax, change
call WriteDec
mov edx, OFFSET RM
call WriteString
call crlf
jmp ASK
ASK:
call crlf
mov edx, OFFSET q1
call WriteString
call ReadDec
mov choice, eax
call crlf
call crlf
cmp choice,1
jz Continue
jmp Stop
Continue:
jmp L1
SR:
mov edx, OFFSET sry
call WriteString
call crlf
call crlf
JMP L2
; Your code here
jmp Stop
main ENDP
colour1 proc
mov ebx,green+7
mov eax,ebx
call SetTextColor
ret
colour1 endp
END main