Форум программистов, компьютерный форум, киберфорум
Наши страницы

Assembler: х64/long mode

Войти
Регистрация
Восстановить пароль
 
Феликс Фалько
2 / 2 / 0
Регистрация: 05.08.2016
Сообщений: 69
#1

ASM + C++ Как вывести в консоль ? - Assembler

17.09.2017, 17:35. Просмотров 248. Ответов 2
Метки нет (Все метки)

Прикрепил файл .asm к проекту на с++ а в примере, который скачал указан лишь вывод в окно windows. А как вывести на консоль ? Вот код файла асм и файла с++

с++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
 
extern "C"
{
    void hello_world_asm();
};
 
int main(int argc, char** argv)
{
    hello_world_asm();
    
    _getch();
    return 0;
}
asm
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
PUBLIC hello_world_asm
 
_TEXT   SEGMENT
 
EXTERN MessageBoxA: PROC
EXTERN GetForegroundWindow: PROC
 
hello_world_asm PROC
 
    push rbp ; save frame pointer
    mov rbp, rsp ; fix stack pointer
    sub rsp, 8 * (4 + 2) ; allocate shadow register area + 2 
    
    call GetForegroundWindow
    mov rcx, rax
 
    mov rdx, offset hello_msg
    mov r8, offset info_msg
    mov r9, 0 ; MB_OK
 
    and rsp, not 8 ; align stack to 16 bytes prior to API call
    
    call MessageBoxA
 
    mov rsp, rbp
    pop rbp
 
    ret 
hello_world_asm ENDP
 
_TEXT   ENDS
 
 
_DATA SEGMENT
    hello_msg db "HELLO ASM WORLD", 0
    info_msg  db "Info", 0
    buf dw 2048 DUP ('eb')
_DATA ENDS
 
END
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2017, 17:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ASM + C++ Как вывести в консоль ? (Assembler):

Ввести в консоль строку, программа должна вывести в консоль слова из этого предложения в столбик - Assembler
Доброго времени суток! Задание: нужно ввести в консоль строку, а программа должна вывести в консоль слова из этого предложения в столбик ...

Как вывести переменную в консоль - Assembler
Помогите, пожалуйста, поставленную задачу решил, а вот в консоль значение вывести не могу... Как вывести то? data segment ; ...

Как вывести результат программы в консоль - Assembler
Привет, недавно начал разбирать в ассемблере TASM. Написал программу, но не могу придумать, как вывести результат в консоль. Если a ^ 3...

Как вывести строку в консоль - Assembler
Здрасьте всем кто смотрит,такая проблема:Есть пример из книги Владислава Пирогова "ассемблер на примерах". вывод на консоль. прога всё...

Delphi и ASM - не работает вызов функции Invoke через asm - Assembler
В Delphi не работает вызов функции Invoke через asm. часть кода: asm invoke CloseHandle,ebx; invoke ExitProcess,0; ...

Массив: вывести следующий элемент после максимального (asm-вставки) - Assembler
Помогите пожалуйста сделать задачу. нужно вывести следующий элемент после максимального. #include <conio.h> #include <iostream> ...

2
ФедосеевПавел
Модератор
2656 / 1559 / 648
Регистрация: 01.02.2015
Сообщений: 5,421
17.09.2017, 17:43 #2
Создание консольных приложений в 64-разрядной Windows Seven
Скорее всего, нужна последовательность вызовов Win API
GetStdHandle(STD_OUTPUT_HANDLE)
WriteConsole
0
Jin X
Евгений, Самара
2044 / 825 / 128
Регистрация: 14.12.2014
Сообщений: 1,855
Записей в блоге: 2
Завершенные тесты: 2
21.09.2017, 16:35 #3
Лучше WriteFile, чтобы можно было перенаправить в файл, если что.
Или просто printf, без заморочек (crt_printf он может называться в MASM).

Добавлено через 2 минуты
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
.686P
.MODEL Flat,StdCall
OPTION CASEMAP:NONE
 
INCLUDE         \MASM32\INCLUDE\WINDOWS.INC
INCLUDE         \MASM32\INCLUDE\KERNEL32.INC
INCLUDE         \MASM32\INCLUDE\USER32.INC
INCLUDE         \MASM32\INCLUDE\MSVCRT.INC
 
INCLUDELIB      \MASM32\LIB\KERNEL32.LIB
INCLUDELIB      \MASM32\LIB\USER32.LIB
INCLUDELIB      \MASM32\LIB\MSVCRT.LIB
 
.DATA
 
Text            DB      'Hello world!',0
 
.CODE
 
Start:
 
                invoke  crt_printf, ADDR Text
                invoke  ExitProcess, NULL
 
END             Start
С 64 битами аналогично...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2017, 16:35
Привет! Вот еще темы с ответами:

При сборке выдает ошибку "MASM: fatal error A1000: : 1.asm.asm" - Assembler
"MASM : fatal error A1000: : 1.asm.asm :\1>link16 /TINY 1.asm.obj, 1.asm.com" Вопользовался кодом из темы Собирал через...

Вывести байты в консоль - Assembler
Есть буффер, нужно вывести его содержимое в консоль функцией WriteConsole. Только нужно, чтобы в консоли отображались не ASCII-символы...

Вывести текст в консоль - Assembler
Всем привет) Опять мне нужна помощь. Изучаю простое консольное приложение под Win. Писал программу по книжке, а она не выводит...

Вывести сообщение на консоль - Assembler
Ребят помогите пожалуйста новичку. Я нажимаю Компиляция === Компилировать с TASM ==Создать EXE32. Он мне создает TLINK.EXE, но когда я его...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru