Помогите исправить ошибки.Нужно вывести на консоль информации о системе, что-то наподобие SystemInf

Тема в разделе "TASM", создана пользователем Gid, 19 дек 2019.

  1. Gid

    Gid New Member

    Публикаций:
    0
    Регистрация:
    19 дек 2019
    Сообщения:
    1
    Помогите исправить ошибки.Нужно вывести на консоль информации о системе, что-то наподобие SystemInfo.exe.
    Заранее спасибо.
    Внес небольшие изменения в основной код
    Функции которые подключаю
    Код (ASM):
    1. includelib import32.lib
    2. includelib user32.lib
    3. includelib kernel32.lib
    4. extrn ExitProcess:near
    5. extrn GetCommandLineA:near
    6. extrn CreateFileA:near
    7. extrn CloseHandle:near
    8. extrn GetStdHandle:near
    9. extrn GetSystemInfo:near
    10. extrn GetComputerName:near
    11. extrn ReadFile:near
    12. extrn WriteFile:near
    13. extrn WriteConsoleA:near
    14. extrn CharToOemA:near
    15. extrn _wsprintfA:near
    16. extrn _lstrlenA:near
    17. ; присваивания для облегчения читаемости кода
    18. GetCommandLine equ GetCommandLineA
    19. CreateFile equ CreateFileA
    20. ; определения констант и типов
    21. STD_OUTPUT_HANDLE  equ -11
    22. GENERIC_READ   equ 80000000h
    23. GENERIC_WRITE   equ 40000000h
    24. OPEN_EXISTING   equ 3
    Основной код
    Код (ASM):
    1.  
    2. include console.inc
    3. .386
    4. .model FLAT,STDCALL
    5. .data
    6. hStdout dd ?
    7. SYS_INFO STRUC
    8. wProcessorArchitecture dw ?
    9. wReserved dw ?
    10. dwPageSize dd ?
    11. lpMinimumApplicationAddress dd ?
    12. lpMaximumApplicationAddress dd ?
    13. dwActiveProcessorMask dd ?
    14. dwNumberOfProcessors dd ?
    15. dwProcessorType dd ?
    16. dwAllocationGranularity dd ?
    17. wProcessorLevel dw ?
    18. wProcessorRevision dw ?
    19. SYS_INFO ENDS
    20. pattern db " Tip proccesora:",0
    21. pattern386 db "PROCESSOR_INTEL_386",13,10,0
    22. pattern486 db "PROCESSOR_INTEL_486 ",13,10,0
    23. pattern586 db "PROCESSOR_INTEL_PENTIUM",13,10,0
    24. pattern2200 db "PROCESSOR_INTEL_IA64",13,10,0
    25. pattern8664 db "PROCESSOR_AMD_X8664 ",13,10,0
    26. core db " Kolichestvo yader:%i",13,10,0
    27. nam db " PK name:%i",13,10,0
    28. arch db " Architecture:",0
    29. NAME_PC db "MY_PC",13,10,0
    30. arch9 db " PROCESSOR_ARCHITECTURE_AMD64",13,10,0
    31. arch5 db " PROCESSOR_ARCHITECTURE_ARM",13,10,0
    32. arch6 db " PROCESSOR_ARCHITECTURE_IA64",13,10,0
    33. arch0 db " PROCESSOR_ARCHITECTURE_INTEL",13,10,0
    34. buff    dd ?
    35. buff1   dd ?
    36. hcons dd ?
    37. hfile  dd ?
    38. buf db 100 dup(0)
    39. bufer db 300 dup(0)
    40. numb dd ?
    41. numw dd ?
    42. nameout db 'CONOUT$'
    43. .code
    44. _start:
    45. call GetStdHandle, offset STD_OUTPUT_HANDLE
    46.   mov hStdout,eax
    47.  call GetSystemInfo, offset SYS_INFO
    48.   call _wsprintfA,offset buff, offset pattern
    49.  call _lstrlenA, offset buff
    50.  call WriteConsoleA, hStdout, offset buff, eax, 0,0
    51.  mov edi, SYS_INFO.dwProcessorType
    52.  cmp edi , 386
    53.  je m386
    54.  cmp edi , 486
    55.  je m486
    56.  cmp edi , 586
    57.  je m586
    58.  cmp edi , 2200
    59.  je m2200
    60.  cmp edi , 8664
    61.  je m8664
    62. m386:call _wsprintfA,offset buff, offset pattern386
    63. jmp m2
    64. m486:call _wsprintfA,offset buff, offset pattern486
    65. jmp m2
    66. m586: call _wsprintfA,offset buff, offset pattern586
    67. jmp m2
    68. m2200: call _wsprintfA,offset buff, offset pattern2200
    69. jmp m2
    70. m8664: call _wsprintfA,offset buff, offset pattern8664
    71. m2: call _lstrlenA, offset buff
    72.  call WriteConsoleA, hStdout, offset buff, eax, 0,0
    73.  call _wsprintfA,offset buff, offset core, offset SYS_INFO.dwNumberOfProcessors
    74.  call _lstrlenA, offset buff
    75.  call WriteConsoleA, hStdout, offset buff, eax, 0,0
    76.   call _wsprintfA,offset buff, offset arch
    77.  call _lstrlenA, offset buff
    78.  call WriteConsoleA, hStdout, offset buff, eax, 0,0
    79.  cmp SYS_INFO.wProcessorArchitecture , 9
    80.  je mAMD
    81.  cmp SYS_INFO.wProcessorArchitecture, 5
    82.  je mARM
    83.  cmp SYS_INFO.wProcessorArchitecture , 6
    84.  je mIA
    85.  cmp SYS_INFO.wProcessorArchitecture , 0
    86.  je mInt
    87. mAMD:call _wsprintfA,offset buff, offset arch9
    88. jmp m3
    89. mARM:call _wsprintfA,offset buff, offset arch5
    90. jmp m3
    91. mIA: call _wsprintfA,offset buff, offset arch6
    92. jmp m3
    93. mInt: call _wsprintfA,offset buff, offset arch0
    94. jmp m3
    95. m3: call _lstrlenA, offset buff
    96.  call WriteConsoleA, hStdout, offset buff, eax, 0,0
    97.  call GetComputerName , buff1, 4
    98.  call _lstrlenA, offset buff1
    99.  call WriteConsoleA, hStdout, offset buff1, eax, 0,0
    100. m1:call ExitProcess,0
    101. end _start
    102.  
     
    Последнее редактирование: 19 дек 2019
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Так как ошибка не описана, а код полностью не читаем, то не имеет смысла пытаться искать ошибку в этом листинге.
     
  3. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.191
    Адрес:
    подполье
    Похоже, ошибка в том, что этот дикий код как то находит арм-архитектуру
     
  4. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    2.000
    Не большой знаток тасма, но директива offset по-моему здесь вообще некстати. Плюс структуру-то ты объявил, а тасм настолько крут что сам под нее буфер выделит? Или надо что-то вроде
    Код (ASM):
    1. binSysInfo SYS_INFO
    в секции данных объявить.
     
  5. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    631
    Адрес:
    Russia
    Не Тасм (автору темы я бы вообще предложил на TinyC перелезать, нет танцев с регистрами, оффсетами и прочими прелестями уровня ассемблера, а по сути - то же самое, крохотное!, с вызовами сишных принтфов), но в тему определения версий ОС, http://www.naughter.com/dtwinver.html , может кому пригодится.
     
    Diicorp95 нравится это.
  6. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    2.000
    Почему не басик? Почему не петон? Есть очень много чего без страшных директив страшного ассемблера, на котором к слову ИИ и бигдату не пишут и туда работать не возьмут с такими знаниями.
     
    _edge нравится это.
  7. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    Сейчас популярного басика нет и не будет в обозримом будущем, так что рассматривать басик с целью трудоустройства глупо более чем полностью. Ну а так да, есть пьюрбасик, есть ксоджо, есть гамбас и тд и тп, только они особо никому не нужны.

    Петон медленный как ппц, хоть и популярный в дата сайенсе, но имхо в дата сайенсе сейчас куда интереснее выглядит джулия.
    --- Сообщение объединено, 26 дек 2019 ---
    В 99% всей программистской работы по всему миру асм не нужон, для нативной разработки вполне хватает присловутых плюсов и сишечки, или более хипсторских растов, нимов, ады, ди и тд. В крайнем случае всегда можно заюзать ассемблерную вставку или интринсику компилятора. Более того ИОТ сейчас стало модно делать на всяких там петонах, эликсирах и тд за счет оптимизации их вм под всяческие мелкие железки.
     
    Diicorp95 и _edge нравится это.
  8. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    2.000
    Вот вроде бы умные все люди, но то ли галлюцинации наблюдают с просьбой дать совет какой яп выбрать, то ли считают это своим священным долгом.
     
  9. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    Каждому своё, кто-то яп впаривает, кто-то визоры, кто-то святое писание, васм он такой разный.