Лабораторная - римская система счисления

Тема в разделе "WASM.ASSEMBLER", создана пользователем Elakisa, 16 янв 2020.

Статус темы:
Закрыта.
  1. Elakisa

    Elakisa New Member

    Публикаций:
    2
    Регистрация:
    16 янв 2020
    Сообщения:
    1
    Ребят, срочно нужна помощь) Вообще не могу разобраться в заданиях(
    Надежда только на вас
    Условие: написать подпрограмму, выполняющее заданное действие и демонстрирующее ее работу программу. Числа передаются в регистрах, строки в стеке.
    Задача: перевести значения из римской записи в число. Напишите все подробно, пожалуйста​
     
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
  3. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.954
    Римская система одна из самых тупых, каждая буква представляет собой число. В зависимости от очередной буквы в строке нужно складывать в регистр числа.
    Код (ASM):
    1.  
    2. format pe console 4.0
    3. include 'win32ax.inc'
    4. entry main
    5. section '.code' code data readable executable
    6. proc main
    7. push 0 'XIII' 'MLcd'
    8. call spqr
    9. add esp,12
    10. ret
    11. endp
    12. proc spqr
    13. lea esi,[esp + 4]
    14. xor edx,edx
    15. @@:
    16. lodsb
    17. test al,al
    18. je @F
    19. cmp al,'I'
    20. je i
    21. cmp al,'i'
    22. jne ni
    23. i:
    24. inc edx
    25. jmp @B
    26. ni:
    27. cmp al,'V'
    28. je v
    29. cmp al,'v'
    30. jne nv
    31. v:
    32. add edx,5
    33. jmp @B
    34. nv:
    35. cmp al,'X'
    36. je x
    37. cmp al,'x'
    38. jne nx
    39. x:
    40. add edx,10
    41. jmp @B
    42. nx:
    43. cmp al,'L'
    44. je l
    45. cmp al,'l'
    46. jne nl
    47. l:
    48. add edx,50
    49. jmp @B
    50. nl:
    51. cmp al,'C'
    52. je c
    53. cmp al,'c'
    54. jne nc
    55. c:
    56. add edx,100
    57. jmp @B
    58. nc:
    59. cmp al,'D'
    60. je d
    61. cmp al,'d'
    62. jne nd
    63. d:
    64. add edx,500
    65. jmp @B
    66. nd:
    67. cmp al,'M'
    68. je m
    69. cmp al,'m'
    70. jne @F
    71. m:
    72. add edx,1000
    73. jmp @B
    74. @@:
    75. mov eax,edx
    76. ret
    77. endp
    78.  
    ЗЫ: бигдата говорили они, AI, говорили они, ассемблеру нигде не учат.
     
    Последнее редактирование: 16 янв 2020
    UbIvItS, LastNoob и Elakisa нравится это.
  4. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    Оставлю эту единственную тему.
    Автор улетел в бан за спам.
     
    M0rg0t, Rel и Indy_ нравится это.
Статус темы:
Закрыта.