Advertisement
yosikadoshi

LAB6 RAN

May 6th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; Lab6.asm
  2.  
  3.     .MODEL SMALL
  4.    .STACK 100h
  5.    .DATA
  6. OptionInsertion     DB 13,10,'Enter 1.Push 2.Pop 3.Min 4.Max 5.Exit',13,10,'$'
  7. PushPrompt          DB 13,10,'Enter a number to push: ','$'
  8. PopPrompt           DB 13,10,'Number Popped: X','$'
  9. MaxPrompt           DB 13,10,'Max Number: X','$'
  10. MinPrompt           DB 13,10,'Min Number: X','$'
  11. Goodbye             DB 13,10,'Program ended, Good bye!',13,10,'$'
  12. choice              DB ?
  13. stackSize           DW ?
  14. tmp                 DB ?
  15. Two                 DB 2
  16.     .CODE
  17. ProgStart:
  18.      MOV AX,@DATA
  19.      MOV DS,AX
  20.      MOV stackSize, SP
  21. Start:   
  22. ;set print options and print OptionInsertion
  23.      MOV AH,9
  24.      MOV DX,OFFSET OptionInsertion
  25.      INT 21h
  26.      
  27. ;set get character option and put it into "choice"
  28.      MOV AH,1
  29.      INT 21h
  30.      MOV choice, AL
  31. ;get to the relevant place, in accordance to the users choice
  32.  
  33. ;CHECK IF 1 WAS CHOSEN
  34.     CMP choice, '1'
  35.     JNE pop_chosen
  36. ;AFTER CHOSING 1.PUSH
  37. push_chosen:
  38.     MOV AH,9
  39.     MOV DX,OFFSET PushPrompt
  40.     INT 21h
  41. ;set get character option
  42.     MOV AH,1
  43.     INT 21h
  44.     MOV AH, 0
  45.     PUSH AX
  46.     JMP start
  47.    
  48. ;CHECK IF 2 WAS CHOSEN 
  49. pop_chosen:
  50.     CMP choice, '2'
  51.     JNE min_chosen
  52. ;AFTER CHOSING 2.POP
  53.     POP AX
  54.     MOV PopPrompt[17],AL
  55.     MOV AH,9
  56.     MOV DX,OFFSET PopPrompt;display_result
  57.     INT 21h
  58.     JMP start
  59.    
  60. ;CHECK IF 3 WAS CHOSEN
  61. min_chosen:  
  62.     CMP choice, '3'
  63.     JNE max_chosen
  64. ;AFTER CHOSING 3.MIN
  65.     MOV AX, stackSize
  66.     SUB AX, SP
  67.     DIV Two
  68.     MOV CX, AX
  69.     MOV BP, SP
  70.     MOV tmp, '9'
  71. minLoop:
  72.     MOV BX, [BP]
  73.     CMP BL, tmp
  74.     JG notlower
  75.     MOV tmp, BL
  76. notlower:
  77.      ADD BP, 2
  78.      Loop minLoop
  79.      MOV AL, tmp     
  80.      MOV MinPrompt[14],AL
  81.      MOV AH,9
  82.      MOV DX,OFFSET MinPrompt ;display_result
  83.      INT 21h
  84.      JMP start
  85.      
  86. ;CHECK IF 4 WAS CHOSEN
  87. max_chosen:
  88.     CMP choice, '4'
  89.     JNE EndProgram
  90. ;AFTER CHOSING 4.MAX
  91.     MOV AX, stackSize
  92.     SUB AX, SP
  93.     DIV Two
  94.     MOV CX, AX
  95.      MOV BP, SP
  96.      MOV tmp, '0'
  97. maxLoop:
  98.     MOV BX, [BP]
  99.      CMP BL, tmp
  100.      JL nothiger
  101.      MOV tmp, BL
  102. nothiger:
  103.      ADD BP, 2
  104.      Loop maxLoop
  105.      MOV AL, tmp
  106.      MOV MaxPrompt[14],AL
  107.      MOV AH,9
  108.      MOV DX,OFFSET MaxPrompt;display_result
  109.      INT 21h
  110.      JMP start
  111.  
  112. ;AFTER CHOSING 5.END     
  113. EndProgram:        
  114. ; Print bye, Set terminate option and return to DOS
  115.      MOV AH,9
  116.      MOV DX,OFFSET Goodbye
  117.      INT 21h
  118.      MOV AH,4Ch
  119.      INT 21h
  120.     END ProgStart
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement