Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Lab6.asm
- .MODEL SMALL
- .STACK 100h
- .DATA
- OptionInsertion DB 13,10,'Enter 1.Push 2.Pop 3.Min 4.Max 5.Exit',13,10,'$'
- PushPrompt DB 13,10,'Enter a number to push: ','$'
- PopPrompt DB 13,10,'Number Popped: X','$'
- MaxPrompt DB 13,10,'Max Number: X','$'
- MinPrompt DB 13,10,'Min Number: X','$'
- Goodbye DB 13,10,'Program ended, Good bye!',13,10,'$'
- choice DB ?
- stackSize DW ?
- tmp DB ?
- Two DB 2
- .CODE
- ProgStart:
- MOV AX,@DATA
- MOV DS,AX
- MOV stackSize, SP
- Start:
- ;set print options and print OptionInsertion
- MOV AH,9
- MOV DX,OFFSET OptionInsertion
- INT 21h
- ;set get character option and put it into "choice"
- MOV AH,1
- INT 21h
- MOV choice, AL
- ;get to the relevant place, in accordance to the users choice
- ;CHECK IF 1 WAS CHOSEN
- CMP choice, '1'
- JNE pop_chosen
- ;AFTER CHOSING 1.PUSH
- push_chosen:
- MOV AH,9
- MOV DX,OFFSET PushPrompt
- INT 21h
- ;set get character option
- MOV AH,1
- INT 21h
- MOV AH, 0
- PUSH AX
- JMP start
- ;CHECK IF 2 WAS CHOSEN
- pop_chosen:
- CMP choice, '2'
- JNE min_chosen
- ;AFTER CHOSING 2.POP
- POP AX
- MOV PopPrompt[17],AL
- MOV AH,9
- MOV DX,OFFSET PopPrompt;display_result
- INT 21h
- JMP start
- ;CHECK IF 3 WAS CHOSEN
- min_chosen:
- CMP choice, '3'
- JNE max_chosen
- ;AFTER CHOSING 3.MIN
- MOV AX, stackSize
- SUB AX, SP
- DIV Two
- MOV CX, AX
- MOV BP, SP
- MOV tmp, '9'
- minLoop:
- MOV BX, [BP]
- CMP BL, tmp
- JG notlower
- MOV tmp, BL
- notlower:
- ADD BP, 2
- Loop minLoop
- MOV AL, tmp
- MOV MinPrompt[14],AL
- MOV AH,9
- MOV DX,OFFSET MinPrompt ;display_result
- INT 21h
- JMP start
- ;CHECK IF 4 WAS CHOSEN
- max_chosen:
- CMP choice, '4'
- JNE EndProgram
- ;AFTER CHOSING 4.MAX
- MOV AX, stackSize
- SUB AX, SP
- DIV Two
- MOV CX, AX
- MOV BP, SP
- MOV tmp, '0'
- maxLoop:
- MOV BX, [BP]
- CMP BL, tmp
- JL nothiger
- MOV tmp, BL
- nothiger:
- ADD BP, 2
- Loop maxLoop
- MOV AL, tmp
- MOV MaxPrompt[14],AL
- MOV AH,9
- MOV DX,OFFSET MaxPrompt;display_result
- INT 21h
- JMP start
- ;AFTER CHOSING 5.END
- EndProgram:
- ; Print bye, Set terminate option and return to DOS
- MOV AH,9
- MOV DX,OFFSET Goodbye
- INT 21h
- MOV AH,4Ch
- INT 21h
- END ProgStart
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement