.model dw 742 priceroticanai dw 212 pricenasilemak dw


.model small.stack 100h.386.data         rusername db 13,0,14 dup(‘$’)   ;input for register username    rpassword db 17,0,35 dup(‘$’)   ;input for password username        lusername db 13,0,14 dup(‘$’)   ;input for register username    lpassword db 17,0,35 dup(‘$’)   ;input for password username        newline db 10,13, “$” receivemoney dw ?   ;amount of money paid   foodquantity dw ?   ;food quantity   totalpaymoney dw ? ;food quantity multiple with the price moneybuffer dw ? ;first section of input before dot countdieu dw ? ;store the result of minus pricenasikampung dw 742 priceroticanai dw 212 pricenasilemak dw 636 pricenasipattaya dw 848 pricemeerojak dw 530 pricemaggigoreng dw 636 putdot db “.$” countfordot dw 1   inputbuffer db 15 dup(‘$’)    ;as a input buffer typeoffood dw ? ;define the type of food        welcome db 10,13, “******************************************************”             db 10,13, “*                                                    *”            db 10,13, “*  WELCOME TO MODESTO CHAIN RESTAURANT CASH SYSTEM   *”            db 10,13, “*                                                    *”                 db 10,13, “******************************************************”            db 10,13, “”             db 10,13, “1. Register”            db 10,13, “2. Login”            db 10,13, “3. Exit”            db 10,13, “”            db 10,13, “Enter your choice: $”                 errorwelcome db 10,13, “======================================”                    db 10,13, “#               Error                #”                   db 10,13, “======================================”                 db 10,13, “”                   db 10,13, ”    Please enter a valid input      ”                 db 10,13, “”                  db 10,13, ” Press any key to back to main menu..$”                  rusernamemsg db 10,13, “——————————————–”                   db 10,13, “|                 Register                 |”                   db 10,13, “——————————————–”                  db 10,13, “”                   db 10,13, “Enter new username: $”                       rpasswordmsg db 10,13, “Enter new password: $”          registersuccess db 10,13, “======================================”                    db 10,13, “#        Register Successfully       #”                    db 10,13, “======================================”                    db 10,13, “”                     db 10,13, ”  Press any key to back to main menu.$”                          lusernamemsg db 10,13, “——————————————–”                   db 10,13, “|                 Login                    |”                   db 10,13, “——————————————–”                    db 10,13, “”                 db 10,13, “Enter username: $”                           lpasswordmsg db 10,13, “Enter password: $”         loginsuccess db 10,13, “======================================”                 db 10,13, “#         Login Successfully         #”                 db 10,13, “======================================”                 db 10,13, “”                  db 10,13, ”  Logging into the system…………$”                   loginfail db 10,13, “======================================”              db 10,13, “#           Login Failled            #”              db 10,13, “======================================”              db 10,13, “”               db 10,13, ”  Invalid username and password.”               db 10,13, “”              db 10,13, ”  Press any key to back to main menu.$”     mainmenuuseroption db 10,13, “*****************************”                        db 10,13, “*                           *”                       db 10,13, “*         MAIN MENU         *”                       db 10,13, “*                           *”                            db 10,13, “*****************************”                       db 10,13, “”                        db 10,13, “1. Cash System”                         db 10,13, “2. Back”                         db 10,13, “”                      db 10,13, “Enter Your Choice: $”                       allfood db 10,13, “************************************”             db 10,13, “*                              *”            db 10,13, “*         Choose your food         *”            db 10,13, “*                              *”                 db 10,13, “************************************”            db 10,13, “”  db 10,13, “”             db 10,13, “1. Nasi Goreng Kampung    RM 7.00”             db 10,13, “2. Roti Canai    RM 2.00”            db 10,13, “3. Nasi Lemak Ayam    RM 6.00” db 10,13, “4. Nasi Pattaya   RM 8.00”             db 10,13, “5. Mee Rojak RM 5.00”                db 10,13, “6. Maggi Goreng       RM 6.00” db 10,13, “”  db 10,13, “7. Cancel Order       ” db 10,13, “”         db 10,13, “Enter Your Choice: $” selectedngk db 10,13, “====================================================” db 10,13, “| Selected Food = Nasi Goreng Kampung   |” db 10,13, “====================================================$” selectedrt db 10,13, “====================================================”    db 10,13, “| Selected Food = Roti Canai   |”    db 10,13, “====================================================$” selectednly db 10,13, “====================================================”     db 10,13, “|     Selected Food = Nasi Lemak Ayam   |”     db 10,13, “====================================================$” selectednp db 10,13, “====================================================”    db 10,13, “|       Selected Food = Nasi Pattaya        |”    db 10,13, “====================================================$”     selectedmr db 10,13, “====================================================”    db 10,13, “|         Selected Food = Mee Rojak        |”    db 10,13, “====================================================$”    selectedmg db 10,13, “====================================================”    db 10,13, “|        Selected Food = Maggi Goreng        |”    db 10,13, “====================================================$”     paythequantity db 10,13, “”     db 10,13, “Please enter quantity: $”  totalpricewithgst db 10,13, “”    db 10,13, “Total price with 6% gst (RM): $” paythemoney db 10,13, “”             db 10,13, “Please enter amount (in cents): $” taketheremaining db 10,13, “”  db 10,13, “Change (RM): $”   presstocontinue db 10,13, “”  db 10,13, “Press any key to continue….$”   .code  MAIN PROC mov ax, @data mov ds, ax   ;display welcome messagemainmenu: call clearscreen                       mov ah, 09h             mov dx, offset welcome       int 21h             mov ah, 01h            ;read the user input option       int 21h                cmp al, ‘1’                      je register            ;jump to register                   cmp al, ‘2’          je login               ;jump to login                   cmp al, ‘3’          jne erroroption          ;other than input 1,2,3                          jmp exit         ;exit erroroption: call clearscreen                          mov ah, 09h             mov dx, offset errorwelcome             int 21h                                 mov ah, 08h       ;wait user to press any key             int 21h                            jmp mainmenu               register: call clearscreen                    mov ah, 09h          mov dx, offset rusernamemsg          int 21h                                 mov ah, 0Ah                    ;get the input new username and save to rusername           mov dx, offset rusername          int 21h                       mov ah, 09h          mov dx, offset rpasswordmsg          int 21h                                 mov ah, 0Ah                    ;get the input new password and save to rpassword           mov dx, offset rpassword          int 21h                       call clearscreen                    mov ah, 09h                             mov dx, offset registersuccess          int 21h                    mov ah ,01h                    ;wait user press any key          int 21h                                         jmp mainmenu                       login: call clearscreen              mov ah, 09h       mov dx, offset lusernamemsg       int 21h                              mov ah, 0Ah                    ;get the input username and save to lusername        mov dx, offset lusername       int 21h                    mov ah, 09h       mov dx, offset lpasswordmsg       int 21h                              mov ah, 0Ah                    ;get the input password and save to lpassword        mov dx, offset lpassword       int 21h                                     call checklengthoflogin               ;compare the length              call clearregisterforusername           call compareusernameandpassword                           mainmenuoption: call clearscreen                mov ah, 09h                mov dx, offset mainmenuuseroption                int 21h                                mov ah, 01h            ;read the user input option             int 21h                      cmp al, ‘1’            ;go to pay cash                je cashsystemmain                                cmp al, ‘2’                je mainmenu                                jmp erroroption2                erroroption2: call clearscreen                          mov ah, 09h             mov dx, offset errorwelcome             int 21h                                 mov ah, 08h       ;wait user to press any key             int 21h                            jmp mainmenuoption                                        cashsystemmain: call clearscreen mov ah, 09h                mov dx, offset allfood                int 21h                                mov ah, 01h             ;read the user input option             int 21h cmp al, ‘1’             ;add price to nasi kampung                je nasikampung                               cmp al, ‘2’             ;add price to roti canai                je roticanai                                cmp al, ‘3’     ;add price to nasi lemak                je nasilemak cmp al, ‘4’ ;add price to nasi pattaya                je nasipattaya cmp al, ‘5’ ;add price to mee rojak                je meerojak cmp al, ‘6’ ;add price to maggi goreng                je maggigoreng cmp al, ‘7’ ;add price to maggi goreng                je mainmenuoption jmp erroroption4 nasikampung: call clearscreen mov ah, 09h             mov dx, offset selectedngk             int 21h mov ah, 09h             mov dx, offset paythequantity             int 21h   call startcalculate mov foodquantity, cx ;copy the result to food quantity   mov bx, pricenasikampung ;copy the price to dx mov ax, foodquantity ;move the input quantity to ax mul bx ;multiply together  mov totalpaymoney, ax ;put to totalpaymoney   call callprintchangeandcalculatetheremainmoeny   jmp cashsystemmain    roticanai:  call clearscreen mov ah, 09h            mov dx, offset selectedrt            int 21h mov ah, 09h            mov dx, offset paythequantity            int 21h   call startcalculate mov foodquantity, cx ;copy the result to food quantity   mov bx, priceroticanai ;copy the price to dx mov ax, foodquantity ;move the input quantity to ax mul bx ;multiply together  mov totalpaymoney, ax ;put to totalpaymoney   call callprintchangeandcalculatetheremainmoeny   jmp cashsystemmainnasilemak: call clearscreen mov ah, 09h            mov dx, offset selectednly            int 21h mov ah, 09h            mov dx, offset paythequantity            int 21h   call startcalculate mov foodquantity, cx ;copy the result to food quantity   mov bx, pricenasilemak ;copy the price to dx mov ax, foodquantity ;move the input quantity to ax mul bx ;multiply together  mov totalpaymoney, ax ;put to totalpaymoney   call callprintchangeandcalculatetheremainmoeny   jmp cashsystemmainnasipattaya: call clearscreen mov ah, 09h            mov dx, offset selectednp            int 21h mov ah, 09h            mov dx, offset paythequantity            int 21h   call startcalculate mov foodquantity, cx ;copy the result to food quantity   mov bx, pricenasipattaya ;copy the price to dx mov ax, foodquantity ;move the input quantity to ax mul bx ;multiply together  mov totalpaymoney, ax ;put to totalpaymoney   call callprintchangeandcalculatetheremainmoeny   jmp cashsystemmainmeerojak: call clearscreen mov ah, 09h            mov dx, offset selectedmr            int 21h mov ah, 09h            mov dx, offset paythequantity            int 21h   call startcalculate mov foodquantity, cx ;copy the result to food quantity   mov bx, pricemeerojak ;copy the price to dx mov ax, foodquantity ;move the input quantity to ax mul bx ;multiply together  mov totalpaymoney, ax ;put to totalpaymoney   call callprintchangeandcalculatetheremainmoeny   jmp cashsystemmainmaggigoreng: call clearscreen mov ah, 09h            mov dx, offset selectedmg            int 21h mov ah, 09h            mov dx, offset paythequantity            int 21h   call startcalculate mov foodquantity, cx ;copy the result to food quantity   mov bx, pricemaggigoreng ;copy the price to dx mov ax, foodquantity ;move the input quantity to ax mul bx ;multiply together  mov totalpaymoney, ax ;put to totalpaymoney   call callprintchangeandcalculatetheremainmoeny   jmp cashsystemmain erroroption4: call clearscreen                           mov ah, 09h              mov dx, offset errorwelcome              int 21h                        mov ah, 08h       ;wait user to press any key              int 21h                             jmp cashsystemmain MAIN ENDPcompareusernameandpassword proccmpusername: lea si, lusername     ; get the login username address and store in si register lea di, rusername     ; get the register username address and store in di register                      add si, 2              add di, 2 ;add 2 to point to the actual data   add si, cx ;add cx into it so both will move together to the next character add di, cx   push cx ;push the current cx value into the stack   mov ch, si mov cl, di cmp ch, cl   jne errormessageinvalid    cmp ch, ‘$’                  ;check the end of the string               je clearcxforpassword ;if equal then continue compare password   pop cx ;pop the stored cx value   inc cx ;increase by one to the next character               jmp cmpusername      ;if not same then pop out message                             cmppassword: lea si, lpassword     ; get the login password address and store in si register             lea di, rpassword     ; get the register password address and store in di register                                     add si, 2              add di, 2 ;add 2 to point to the actual data   add si, cx ;add cx into it so both will move together to the next character add di, cx   push cx ;push the current cx value into the stack   mov ch, si mov cl, di cmp ch, cl   jne errormessageinvalid    cmp ch, ‘$’                  ;check the end of the string   je correcturnpw    pop cx ;pop the stored cx value   inc cx ;increase by one to the next character               jmp cmppassword  errormessageinvalid: call clearscreen                       mov ah, 09h                     mov dx, offset loginfail                        int 21h                                          mov ah,01h       ;wait for a click                     int 21h                                           call mainmenu clearcxforpassword: mov cx, 0 mov ax, 0 mov bx, 0 mov dx, 0 jmp cmppassword               correcturnpw: call clearscreen                            mov ah, 09h              mov dx, offset loginsuccess              int 21h                            mov ah, 01h              int 21h                            call mainmenuoption                ;jump to system main menucompareusernameandpassword endpchecklengthoflogin proc mov bh, rusername  ;Find the total length of the register username             mov bl, lusername  ;Find the total length of the login username                          cmp bh, bl               ;compare the length username                            jne errormessageinvalid  ;if the length is not equal then error                          mov bh, rpassword  ;Find the total length of the register password             mov bl, lpassword  ;Find the total length of the login password                              cmp bh, bl               ;compare the length of password                              jne errormessageinvalid  ;if the length is not equal then error                          ret                      ;return back to the login functionschecklengthoflogin endpclearregisterforusername proc mov ax ,0                      ;reset all the registers for computer user    mov cx, 0    mov dx, 0  retclearregisterforusername endpusingzeroaddnumber dw 10 ;use for the input callprintchangeandcalculatetheremainmoeny proc mov ah, 09h mov dx, offset totalpricewithgst int 21h   mov ax, totalpaymoney call printoutfinal mov ah, 09h                    ;get the input new username and save to receivemoney  mov dx, offset paythemoney int 21h   call startcalculate mov moneybuffer, cx   mov ax, moneybuffer sub ax, totalpaymoney mov countdieu, ax   mov ah, 09h    mov dx, offset taketheremaining int 21h   mov ax, countdieu call printoutfinal   mov ah, 09h mov dx, offset presstocontinue int 21h   mov ah,01h       ;wait for a click int 21h  retcallprintchangeandcalculatetheremainmoeny endpstartcalculate proc  mov cx, 0  mov cs:inputbuffer, 0      scan1:    mov ah, 01h    int 21h     cmp al, 13 jne loopgtocheckinteger ret    loopgtocheckinteger: cmp al, 08h je backspacegotla cmp al, 30h     ; compare with the ASCII value number 0      jb errorinstartcalculate  ;bellow then delete      cmp al, 39h     ; compare with the ASCII value number 9      jg errorinstartcalculate    ;over then deelte         push ax mov ax, cx ;mov the current store data in cx to ax mul cs:usingzeroaddnumber ;add cx has the current store value then x 10 after it because 0 is for the new input digit then store at ax mov cx, ax ;copy to cx pop ax                       sub al, 48 ;substrac to get the integer number                     mov ah, 0                     add cx, ax jmp scan1    errorinstartcalculate: mov ah, 02h    mov dl, 08h    int 21h        mov dl, 20h    int 21h          mov dl, 08h    int 21h        jmp scan1    backspacegotla: mov ah, 02h     mov dl, 20h int 21h       mov dl, 08h int 21h     jmp scan1        startcalculate endpprintoutfinal proc mov cx, 0 ;clear cx for counter function nextprocess: mov dx, 0 mov bx, 10 div bx ;divide by 10 and get the last digit of the answer  push dx ;push into stack inc cx ;increase cx with the total number of word inc countfordot ;count total number of word for the usage of put dot   cmp ax, 0 jnz nextprocess ;jump if not zero    printtheresultout: dec countfordot    cmp countfordot, 2 ;check if the current counter is 2    je printdot        pop dx    mov ah, 02h        add dl, 48 ;add 48 based on ascii table to point to the number    int 21h        loop printtheresultout        ret    printdot: mov ah, 09h   mov dx, offset putdot   int 21h      pop dx   mov ah, 2      add dl, 48 ;add 48 based on ascii table to point to the number   int 21h       loop printtheresultoutprintoutfinal endpclearscreen proc mov ah, 00        mov al, 02        int 10h                        ret                 ;return back to where it called  clearscreen endpexit proc mov ah, 4ch int 21hexit endpEND MAIN

x

Hi!
I'm William!

Would you like to get a custom essay? How about receiving a customized one?

Check it out