Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/98: Рейтинг темы: голосов - 98, средняя оценка - 4.55
6 / 6 / 5
Регистрация: 15.02.2013
Сообщений: 56

Fasm, Hello World x64 компилится но не работает

28.02.2014, 14:19. Показов 20498. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На винде x32 программа нормально работала код был
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
format binary
use16
org 100h
 
mov ah,9
mov dx,msg
int 21h
 
mov ah,0
int 16h
 
int 20h
 
msg db 'Hello World$'
Попытался переписать под x64, компилируется без ошибок, но при запуске как только открывается консоль, выскакивает сообщение "Прекращена работа программы". Подскажите что я нетак изменил в коде. И если не сложно покажите пример простого консольного приложения на asm под x64. Вот код:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
format PE64
use64
 
mov ah,9
mov rdx,msg
int 21h
 
mov ah,0
int 16h
 
int 20h
 
msg db 'Hello World$'
Добавлено через 57 минут
Все понял в чем проблема. Посоветуйте плз чтонибудь почитать по assembler'у, только не старье под DOS. Под x64 желательно на русском. И чтоб были примеры консольных приложений(к примеру вводим массив, выполняем сортировку, и выводим).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.02.2014, 14:19
Ответы с готовыми решениями:

Из-за чего разница в FPS между Windows 7 x64 и Windows 10 x64 в игре World Of Tanks?
В Общем DirectX отметается сразу! Во первых! Разница на одном и том же железе меж Dx11 и Dx12 НЕ СУЩЕСТВЕННА! Так как в игре...

Перенести программу из tasm в fasm x64
Уважаемые программисты!!! прошу помочь переделать простую прогу из tasm в fasm x64!!! буду благодарен за любую помощь!!!

Behavior не компилится, не хватает конструктора. Объявляю, не компилится. Не пойму
В общем, такой вот код, но не компилируется. Что не так? Чёт не пойму вообще. /// <summary> /// Поведение, которое...

15
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
28.02.2014, 15:27
Цитата Сообщение от Sonance Посмотреть сообщение
Посоветуйте плз чтонибудь почитать по assembler'у, только не старье под DOS. Под x64 желательно на русском
Sonance,
https://www.cyberforum.ru/asse... 51124.html это для Windows XP, но под х64 должно работать
1
Эксперт быдлокодинга
 Аватар для Полный 30h
2095 / 529 / 70
Регистрация: 04.11.2010
Сообщений: 1,314
28.02.2014, 15:29
64 бита тема не паханая. Насколько знаю есть книга
Программирование на ассемблере на платформе x86-64
Руслан Аблязов
на сколько хороша плоха не в курсе, не читал. Пирогов в своём ЖЖ что то по 64 бит писал.

А вообще конечно консоль на DOSовских прерываниях от тебя первого увидел. Вроде как на API функциях всё уже идёт, иначе какой смысл?
Консоль кстати 64 бита практически всё как в 32, за исключением регистров разве что и передачей параметров. Во всяком случае на мой сугубо дилетантский взгляд.
FASM
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
format PE64 Console 5.0
entry Start
 
include 'win64a.inc'
 
section '.text' code readable executable
 
Start:
  invoke SetConsoleTitleA, conTitle
  test eax, eax
  jz Exit
 
  invoke GetStdHandle, [STD_OUTP_HNDL]
  mov [hStdOut], eax
 
  invoke GetStdHandle, [STD_INP_HNDL]
  mov [hStdIn], eax
 
  invoke WriteConsoleA, [hStdOut], mes, mesLen, chrsWritten, 0
 
  invoke ReadConsoleA, [hStdIn], readBuf, 1, chrsRead, 0
 
Exit:
  invoke  ExitProcess, 0
 
section '.data' data readable writeable
 
  conTitle    db 'Console', 0
  mes         db 'Hello World!', 0dh, 0ah, 0
  mesLen      = $-mes
 
  hStdIn      dd 0
  hStdOut     dd 0
  chrsRead    dd 0
  chrsWritten dd 0
 
  STD_INP_HNDL  dd -10
  STD_OUTP_HNDL dd -11
 
section '.bss' readable writeable
 
  readBuf  db ?
 
section '.idata' import data readable
 
  library kernel,'KERNEL32.DLL'
 
  import kernel,\
    SetConsoleTitleA, 'SetConsoleTitleA',\
    GetStdHandle, 'GetStdHandle',\
    WriteConsoleA, 'WriteConsoleA',\
    ReadConsoleA, 'ReadConsoleA',\
    ExitProcess, 'ExitProcess'
0
6 / 6 / 5
Регистрация: 15.02.2013
Сообщений: 56
28.02.2014, 16:06  [ТС]
Хорошо бы коментарии что происходит в каждой строчке, насколько я понял код делает тоже самое что этот, но написано в 3 раза больше
Assembler
1
2
3
4
5
6
7
8
9
format PE Console
include 'win32ax.inc'
MsgText db "Hello World!!!"
start:
    invoke GetStdHandle,STD_OUTPUT_HANDLE
    lea edx, [MsgText]
    invoke WriteConsole, eax, edx, 14,0,0
    jmp $
.end start
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
28.02.2014, 16:34
Цитата Сообщение от Sonance Посмотреть сообщение
Хорошо бы коментарии что происходит в каждой строчке
Sonance,
не плохо бы разориться и купить книжку, например, Юрова, Марека, Ирвинга или Пирогова, а комментарии сам пиши, разбирайся с каждой строкой и пиши
1
6 / 6 / 5
Регистрация: 15.02.2013
Сообщений: 56
28.02.2014, 17:24  [ТС]
Цитата Сообщение от Mikl___ Посмотреть сообщение
не плохо бы разориться и купить книжку, например, Юрова, Марека, Ирвинга или Пирогова, а комментарии сам пиши, разбирайся с каждой строкой и пиши
Да я согласен что нужно разбираться, вот только большая часть того что можно найти в интернете устарела. Собственно с ассемблером не впервые дело имею, когда в работе ОС разбирался писал простенький загрузчик ядра, и само ядро, точнее жалкое подобие. Так вот по x16 куча инфы и разобраться что к чему несоставляет труда, по x32 и x64 инфы практически нет.
По вашей ссылке работа с winapi, а хотелось бы чтото более общее. Собственно нужно то именно x64 чтобы переписать тот самый загрузчик под UEFI на моем ноуте.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
28.02.2014, 18:08
Sonance,
после старта микропроцессор, даже 64 разрядный, находится в реальном режиме, переключить микропроцессор в long mode должен уже твой загрузчик ядра. И этот форум не самый подходящий для обсуждения ОС-енаписания

Добавлено через 6 минут
и посмотри F.A.Q. https://www.cyberforum.ru/cgi-bin/latex.cgi?\rightarrow "Особенности кодинга под x64" (часть первая, часть вторая, часть третья)
0
Эксперт быдлокодинга
 Аватар для Полный 30h
2095 / 529 / 70
Регистрация: 04.11.2010
Сообщений: 1,314
02.03.2014, 15:12
Цитата Сообщение от Sonance Посмотреть сообщение
Хорошо бы коментарии что происходит в каждой строчке, насколько я понял код делает тоже самое что этот, но написано в 3 раза больше
Цитата Сообщение от Sonance Посмотреть сообщение
Собственно с ассемблером не впервые дело имею
Логика такая логика.
Цитата Сообщение от Sonance Посмотреть сообщение
я понял код делает тоже самое что этот, но написано в 3 раза больше
Напомнило эпизод из рассказа Арсеньева "Дерсу Узала" где с аборигенами расплатились дав каждому по 10 рублей. Только одному одной бумажкой 10р, а второму двумя по пять. Первый обиделся.
Если тебе не лень считать символы для вывода в ручную, опять же в ручную убивать запущеную программу, грузить систему бесконечным циклом, плевать на шапку окна, то таки да, твой код круче.
0
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 34
26.09.2015, 18:49
А как ты решил эту проблему???
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
27.09.2015, 09:50
Цитата Сообщение от мажор Посмотреть сообщение
А как ты решил эту проблему???
мажор,
"ты" -- это кто? Sonance, Полный 30h или Mikl___?
0
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 34
27.09.2015, 09:58
Я про Sonance,у него же ошибка про то что програ не отвечает,у меня тоже самое происходит компилится без ошибок но при запуске пишет что не отвечает.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
27.09.2015, 11:16
мажор,
если читать внимательно, то можно найти сообщение Полный 30h, в котором есть готовая рабочая программа для вывода на экран "Hello World!" под Win64
0
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 34
27.09.2015, 13:13
а без API не как?
я бы хотел привет мир на mov!
вот что у меня:
Assembler
1
2
3
4
5
6
Format PE64
use64
mov ah,9
mov rdx,hello
int 21h
hello db 'hewllo',24h
но увы не отвечает!
как исправить код не используя API?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
28.09.2015, 07:57
Цитата Сообщение от мажор Посмотреть сообщение
а без API не как?
я бы хотел привет мир на mov!
А ты готов к этому? Взялся за программирование под Win64, но упорно толкаешь DOSские обращения к системе через int 21h , читай https://www.cyberforum.ru/asse... 45951.html
0
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 34
21.10.2015, 22:17
Сонансе так как вы решили проблемму? В чем причина и как ее исправить?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
22.10.2015, 03:52
мажор,
  • Последняя активность пользователя Sonance: 11.02.2015
  • тема Fasm, Hello World x64 компилится но не работает создана пользователем Sonance 28.02.2014, тогда же был последний ответ Sonance в этой теме.
  • так что, ответа на вопрос "как вы решили проблемму? В чем причина и как ее исправить?" ты от Sonance не дождешься
P.S. и не стоит добавлять свои вопросы в чужие темы в разделе "Assembler: статьи, проба пера" это примерно то же самое, что писать на страницах библиотечных книг. Раздел "Assembler: статьи, проба пера" создан совсем не для этого
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.10.2015, 03:52
Помогаю со студенческими работами здесь

"Hello, world" на FASM
В общем, скачал я SASM (среда разработки для ассемблера со встроенными компиляторами ассемблерами, поддерживает MASM, FASM, NASN и GAS), в...

не работает hello world
Здравствуйте, не работает даже печать строки текста. Компилируется, но выводится один и тот же результат: 7.66248е+053. Использую среду...

Не работает hello world
Сорри за совсем новичковый вопрос, только вчера начал знакомиться с ангуляром. Скопировал пример из статьи: <!DOCTYPE html> ...

Не работает Hello, World
тока начал читать книгу оп СИ, и ввел пример и результата никакого #include <stdio.h> main() { printf("Hello,");...

Не работает Hello World
Добрый день! Я являюсь начинающим программистом C++ На данный момент ознакамливаюсь с первыми видеоуроками и сруз же столкнулся с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru