Advertisement
Guest User

Untitled

a guest
Feb 25th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. model tiny
  2. .code
  3. org 100h
  4.  
  5. start:
  6. ;в cx будет номер состояния(от 0 до 13) (фактически номер строки)
  7. mov cx, 0
  8. mov si, 82h
  9. jmp go
  10.  
  11. ;автомат выглядит как таблица, у которой строки это состояния а в
  12. ;каждой строке указания на какое состояние идти
  13. ;в случае если очередная буква равна n, s или а
  14.  
  15. automat db 1,  9,  9,  9,  9,  9, 9, 9, 9
  16.         db 9,  9,  9,  9,  9,  9, 2, 9, 9  
  17.         db 9, 10, 10, 10, 10, 10, 9, 9, 9
  18.  
  19. ;в T таблица, где буква а закодирована как 2, буква n как 0, буква s как 1, остальные буквы как 3
  20. T db 13 dup (8), 7, 18 dup (8), 0, 60 dup (8), 6, 12 dup (8), 1, 2, 8, 5, 7 dup (8), 3, 8, 4, 137 dup (8)
  21.  
  22. line_length db 9
  23. no db "huy not found$"
  24. yes db "huy found$"
  25.  
  26. go:
  27. mov bx, offset T ;закинули таблицу в bx
  28. lodsb ;прочитали очередной символ из аргументов и закинули его в ax
  29. xlat ;перекодировали ax в цифру из таблицы Т(новое значение в ax будет задавать смещение по столбцам в таблице automat)
  30. push ax ;сохраняем ах, он понадобится еще
  31. mov bx, offset automat
  32. mov ax, cx ;закинем в ах номер текущей строки в автомате
  33. mul line_length ;умножим ее на 9(ведь у нас на самом деле не таблица а одномерный массив)
  34. pop cx
  35.  
  36. add ax, cx ;здесь смещаем по столбцам на нужное количество ячеек
  37. xlat
  38. cmp ax, 1 ; сука тут я сравниваю на символ. h у меня греьбаная единица
  39. je h
  40. mov cx, ax
  41.  
  42. h:
  43. mov cx, ax
  44. cmp cx, 10 ; а десять - терминал
  45. je found
  46. cmp si, 100h
  47. je not_found
  48. jmp go
  49.  
  50. not_found:
  51. mov ah, 09h
  52. mov dx, offset no
  53. int 21h
  54. ret
  55.  
  56. found:
  57. mov ah, 09h
  58. mov dx, offset yes
  59. int 21h
  60. ret
  61.  
  62. end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement