.model #” db 10,13, “======================================” db 10,13,

.model small.stack 100h.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, “$”        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. View Inventory”                           db 10,13, “3. Exit”                         db 10,13, “”                      db 10,13, “Enter Your Choice: $”                       cashmainsystemoption db 10,13, “*****************************”                          db 10,13, “*                           *”                         db 10,13, “*        Cash System        *”                         db 10,13, “*                           *”                              db 10,13, “*****************************”                         db 10,13, “”                          db 10,13, “1. Cash System”                          db 10,13, “2. View Inventory”                             db 10,13, “3. Exit” 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.10”            db 10,13, “3. Nasi Lemak Ayam    RM 6.30” db 10,13, “4. Nasi Pattaya   RM 7.00”             db 10,13, “5. Mee Rojak RM 5.30”                db 10,13, “6. Maggi Goreng       RM 6.00” db 10,13, “”         db 10,13, “Enter Your Choice: $”   inventorymainoption db 10,13, “*****************************”                         db 10,13, “*                           *”                        db 10,13, “*         Inventory         *”                        db 10,13, “*                           *”                             db 10,13, “*****************************”                        db 10,13, “”                         db 10,13, “1. View Food Menu”                         db 10,13, “2. View Total Sales”                            db 10,13, “3. Back” db 10,13, “”                     db 10,13, “Enter Your Choice: $” .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’          je exit                ;exit                      jmp erroroption        ;other than input 1,2,3erroroption: 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 checklength               ;compare the length              mov ax ,0                      ;reset all the registers for computer user       mov cx, 0       mov dx, 0               jmp cmpusername                ;jump to compare username and check              hlt                            ;haltchecklength: mov dh, rusername + 1  ;Find the total length of the register username             mov dl, lusername + 1  ;Find the total length of the login username                          cmp dh, dl               ;compare the length username                            jne errormessageinvalid  ;if the length is not equal then error                          mov dh, rpassword + 1  ;Find the total length of the register password             mov dl, lpassword + 1  ;Find the total length of the login password                              cmp dh, dl               ;compare the length of password                              jne errormessageinvalid  ;if the length is not equal then error                          ret                      ;return back to the login functions               errormessageinvalid: call clearscreen                       mov ah, 09h                     mov dx, offset loginfail                        int 21h                                          mov ah,01h       ;wait for a click                     int 21h                                           call mainmenu                   cmpusername: mov di, offset rusername     ; get the register username address and store in di register             add di, 2                    ; add 2 to skip to the actual string                          mov si, offset lusername     ; get the login username address and store in si register             add si, 2                    ; add 2 to skip to the actual string                               add di, cx                   ; add the index to the address so that it can know which character to go through             add si, cx                                               push cx                      ;maintain the index count                                                                                    mov ch, di                 ;put di to ch             mov cl, si                 ;put si to cl             cmp cl, ch                   ;compare two username                             jne errormessageinvalid      ;if not same then pop out message                                           ;jne = not equal                          cmp ch, ‘$’                  ;check the end of the string                          je clearregisterforpassword  ;reset al the registers for the next password compare                                             ;je = equality                          pop cx                       ;pop the index back so it can be increased                          inc cx                       ;increase index to go next character                          jmp cmpusername              ;back to the compare username              clearregisterforpassword: mov ax, 0                                              mov bx, 0                                              mov cx, 0                                              mov dx, 0                                                     jmp cmppassword ;jump to password compare                            cmppassword: mov di, offset rusername     ; get the register password address and store in di register             add di, 2                    ; add 2 to skip to the actual string                          mov si, offset lusername     ; get the login password address and store in si register             add si, 2                    ; add 2 to skip to the actual string                               add di, cx                   ; add the index to the address so that it can know which character to go through             add si, cx                                               push cx                      ;maintain the index count                                                                                    mov ch, di                 ;put di to ch             mov cl, si                 ;put si to cl             cmp cl, ch                          jne errormessageinvalid                           cmp ch, ‘$’                  ;check the end of the string                          je correcturnpw              ;if correct username and password then go to function print login success                                           ;je = equality                          pop cx                       ;pop the index back so it can be increased                          inc cx                       ;increase index to go next character                          jmp cmppassword                 correcturnpw: call clearscreen                            mov ah, 09h              mov dx, offset loginsuccess              int 21h                            mov ah, 01h              int 21h                            jmp mainmenuoption              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’            ;go to the inventory                je inventorymain                                cmp al, ‘3’                je exit                                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 jmp erroroption4 nasikampung: mov ah, 09h             mov dx, offset paythequantity             int 21h   call validatenumber mov foodquantity, cx ;store quantity of food mov ah, 09h             mov dx, offset paythemoney             int 21h   mov ah, 0Ah                    ;get the input new username and save to receivemoney  mov dx, offset receivemoney int 21h roticanai: nasilemak: nasipattaya:meerojak:maggigoreng: 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 inventorymain: call clearscreen               mov ah, 09h               mov dx, offset inventorymainoption               int 21h                               mov ah, 01h            ;read the user input option            int 21h                     cmp al, ‘1’            ;go to modify food menu               ;je modifyfoodmenufunction                              cmp al, ‘2’            ;go to the view total sales               ;je viewtotalsales                               cmp al, ‘3’               ;je exit                          jmp erroroption3erroroption3: call clearscreen                           mov ah, 09h              mov dx, offset errorwelcome              int 21h                        mov ah, 08h       ;wait user to press any key              int 21h                             jmp inventorymain                                                                       clearscreen: mov ah, 00             mov al, 02             int 10h                             ret                 ;return back to where it called               exit: mov ah, 0      int 21hMAIN ENDPvalidatenumber proc push ax push dx push si         mov cx, 0 ;clear cx mov ah, 01h                     ;get the character input quantity     int 21h mov cx,0dh ;check does the enter key press cmp al, cl      je doneclick ;entered key cmp al, 08h ;backspace? je gotbackspace ;pressed jne gotnobackspace ;no press gotbackspace: mov dx, 0   mov dl, 20h   int 21h   gotnobackspace:doneclick: pop ax    pop dx    pop si        ret  validatenumber endpEND MAIN