Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         org     100h
  2.         jmp Start
  3. function_print:
  4.         mov     ah, $09
  5.         int     21h
  6.         ret
  7.  
  8. function_println:
  9.         call    function_print
  10.         mov     dx, LF
  11.         call    function_print
  12.         ret
  13.  
  14. function_print_LF:
  15.         mov     ah, $09                 ;printing LF
  16.         mov     dx, LF
  17.         int     21h
  18.         ret
  19.  
  20. function_read:
  21.         mov     ah, $0A                 ;reading string
  22.         int     21h
  23.         ret
  24.  
  25. function_read_cbuf:
  26.         mov     ax, $0C0A
  27.         int     21h
  28.         ret
  29.  
  30. function_await_input:
  31.         mov     ax, $0C08
  32.         int     21h
  33.         test    al, al
  34.         jnz     @F
  35.         mov     ah, $08
  36.         int     21h
  37. @@:
  38.         ret
  39.  
  40. Start:
  41.         mov     dx, promptMessage       ;displaying prompt
  42.         call    function_println
  43.  
  44.         mov     dx, string
  45.         call    function_read_cbuf
  46.  
  47.         call    function_print_LF
  48.  
  49. CheckLength:
  50.         CMP     [string + 1], 4
  51.         jge     CheckEquals
  52.         mov     dx, lengthMessage
  53.         call    function_println
  54.  
  55.         call    function_await_input
  56.         ret
  57.  
  58. CheckEquals:
  59.         mov     al, [string + 5]
  60.         CMP     [string + 2], al
  61.         je      CheckAdditional1
  62.         mov     dx, equalityMessage
  63.         call    function_println
  64.  
  65.         call    function_await_input
  66.         ret
  67.  
  68. CheckAdditional1:
  69.         CMP     [string + 4], '0'
  70.         jge     @F
  71.         mov     dx, nanMessage
  72.         call    function_println
  73.  
  74.         call    function_await_input
  75.         ret
  76. @@:
  77.         CMP     [string + 4], '9'
  78.         jle     CheckAdditional2
  79.         mov     dx, nanMessage
  80.         call    function_println
  81.  
  82.         call    function_await_input
  83.         ret
  84.  
  85. CheckAdditional2:
  86.         mov     eax, 0
  87.         mov     al, [string + 1]
  88.         mov     bl, [string + eax]
  89.         CMP     bl, '0'
  90.         jge     @F
  91.         mov     dx, nanMessage
  92.         call    function_println
  93.  
  94.         call    function_await_input
  95.         ret
  96. @@:
  97.         mov     eax, 0
  98.         mov     al, [string + 1]
  99.         mov     bl, [string + eax]
  100.         CMP     bl, '9'
  101.         jle     Finish
  102.         mov     dx, nanMessage
  103.         call    function_println
  104.  
  105.         call    function_await_input
  106.         ret
  107. Finish:
  108.         mov     dx, correctMessage
  109.         call    function_println
  110.  
  111.         call    function_await_input
  112.         ret
  113.  
  114. promptMessage   db 'Please enter string$'
  115. lengthMessage   db 'Your string''s length does not belong to range [4, 8]$'
  116. equalityMessage db 'Symbols 1 and 4 must be equal$'
  117. nanMessage      db 'Additional requirements were not met$'
  118. correctMessage  db 'String is correct$'
  119. string          db 9, 0, 9 dup('$')
  120. LF              db 10, '$'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement