Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 18.06.2015
Сообщений: 8
1

И снова "hello world"

27.06.2015, 17:45. Показов 2019. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте форумчане.
Читаю Крупника на досуге самоучитель "Ассемблер". Есть вопрос (ща наверное ржать будите ). Почему вот эта программа выводит сообщение на экран?
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.386
.model flat, stdcall
option casemap: none
 
include /masm32/include/windows.inc
include /masm32/include/user32.inc
include /masm32/include/kernel32.inc
 
includelib /masm32/lib/user32.lib
includelib /masm32/lib/kernel32.lib
 
.data
msg_title db "Title", 0
msg_message db "Hello world", 0
 
.code
start:
invoke MessageBox, 0, addr msg_message, addr msg_title, MB_OK
invoke ExitProcess, 0
end start
а вот эта нет?
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.386
 
.model flat, stdcall
option casemap : none
 
ExitProcess proto: DWORD
GetStdHandle proto : DWORD
WriteConsoleA proto : DWORD, : DWORD, : DWORD, : DWORD, : DWORD
includelib\masm32\lib\kernel32.lib
 
.data
stdout DWORD ?
msg BYTE "la la  la",0dh, 0ah
cWritten DWORD ?
 
.code
invoke GetStdHandle, -11
mov stdout, eax
invoke WriteConsoleA, stdout, ADDR msg, sizeof msg, ADDR cWritten, 0
invoke ExitProcess, 0
end start
комп думает некоторое время и все. В отладчике в eax не появляется дискриптор, (в книге написано что должен) там стоят одни ноли. Что делаю не так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2015, 17:45
Ответы с готовыми решениями:

Андрей снова играет в свою любимую игру «World of Brawlcraft» вместо подготовки к олимпиаде
Андрей снова играет в свою любимую игру «World of Brawlcraft» вместо подготовки к олимпиаде. На...

Снова хром, снова сапопроизвольно открывается, снова bkrfdf.xyz и казино
Здравствуйте! Собственно, проблема уже не новая, хотя, как показывают сообщения форума, за...

ярлыки world of tanks и world of warships на рабочем столе
помогите удалить просканировал системы с помощью Farbar Recovery Scan Tool, файлы FRST.txt и...

Поменять слова местами то есть Hello World > World Hello C++
Ребят всем привет помогите решить задачку: Имеется предварительно созданный текстовый файл,...

Как сделать чтобы таймер дойдя до 0 стартовал снова и снова?
Здравствуйте :) Как сделать чтобы таймер дойдя до 0 стартовал снова и снова? TimerSec = 59;...

13
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
27.06.2015, 18:03 2
sana5n84,
а вторая программа компилируется как консольная?
0
0 / 0 / 0
Регистрация: 18.06.2015
Сообщений: 8
27.06.2015, 20:04  [ТС] 3
Честно говоря не понимаю что значит консольная....ни кампилятор ни линковщик ошибок не выводят...все как в первом исходнике. Создаются obj и exe файлы. Пример брал из книги...хотя на просторах сети он тоже присутствует...и там и там описывают, что программа выводит строку на экран....а каким именно раком х\з
0
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
27.06.2015, 20:21 4
см. листинг 1,2

Добавлено через 11 минут
/SUBSYSTEM:{NATIVE|WINDOWS|CONSOLE|WINDOWSCE|POSIX}[,#[.##]]
Состояние этого ключа?
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
28.06.2015, 06:52 5
sana5n84,
первая программа компилируется с ключом /SUBSYSTEM:WINDOWS, а вторая программа должна компилироваться с ключом /SUBSYSTEM:CONSOLE, внимательно перечитай Крупника
1
0 / 0 / 0
Регистрация: 18.06.2015
Сообщений: 8
28.06.2015, 09:26  [ТС] 6
EXEшник получаю с помощю пакета masm32 обычно вкладкой assemdle & link. Если использовать вкладку consoe assemdle & link, при запуске EXEшника появляется консоль с текстом! ..... и тут же пропадает . Возникает вопрос, так и должно быть? как добавить в исходник ожидание до нажатия клавишы?
0
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
28.06.2015, 09:38 7
получаете ещё и stdin, а потом ждете нажатия любой клавиши.
0
76 / 36 / 17
Регистрация: 24.07.2014
Сообщений: 357
29.06.2015, 19:08 8
Assembler
1
2
3
4
5
6
TxtIn db 0;пишеш гденить среди данных
...
invoke GetStdHandle, STD_INPUT_HANDLE;пишеш в начале проги
mov hStdIn, eax;
...
invoke ReadConsoleA, hStdIn, ADDR TxtIn, 1, ADDR csimb, NULL;пишеш в конце проги
0
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 4
07.03.2016, 22:55 9
Доброго времени суток.
Для ясности: я никогда не писал код. Но всегда хотел научится. Решил сам освоить это непростое дело. Столкнулся с проблемой.
На одном из ресурсов нашел простой урок:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.386
.model flat, stdcall
option casemap: none
 
include /masm32/include/windows.inc
include /masm32/include/user32.inc
include /masm32/include/kernel32.inc
 
includelib /masm32/lib/user32.lib
includelib /masm32/lib/kernel32.lib
 
.data
msg_title db "Title", 0
msg_message db "Hello world", 0
 
.code
start:
invoke MessageBox, 0, addr msg_message, addr msg_title, MB_OK
invoke ExitProcess, 0
end start
В MASM32 все прошло удачно.
На другом ресурсе аналогичный по смыслу, но не по форме урок:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
data segment
mes db 'Hello world!$'
data ends
 
code segment
start:
assume cs:code, ds: data
mov ax, data
mov ds, ax
 
mov ah, 9
lea dx, mes
int 21h
 
mov ax, 4c00h
int 21h
code ends
end start
Ни в MASM32 нив FASM никакого результата. Что я делаю не так?
P.S. С чего вообще начать изучение программирования?

Добавлено через 1 час 29 минут
Нашел электронный учебникMikl___, не все понятно, но интересно.
Буду учить.
0
183 / 121 / 26
Регистрация: 18.05.2015
Сообщений: 509
07.03.2016, 23:41 10
kolobok874, второй пример это под DOS

FASM

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
format MZ     
stack 256    
 
start:
push cs
pop ds
 
mov ah, 9
mov dx, mes
int 21h
 
mov ax, 4c00h
int 21h
                    
mes db 'Hello world!$'
0
70 / 70 / 52
Регистрация: 24.01.2013
Сообщений: 198
08.03.2016, 00:07 11
kolobok874, Вероятнее всего у вас 64-битная операционная система... Скомпилировать вы сможете, запустить нет. Лучшим вариантом будет виртуальная машина с Windows XP.

Если я правильно понял о чем речь
0
183 / 121 / 26
Регистрация: 18.05.2015
Сообщений: 509
08.03.2016, 00:19 12
skipaq, а не проще для дос установить Dosbox с оболочкой например Volkov ?
0
Эксперт Hardware
Эксперт Hardware
6103 / 2347 / 390
Регистрация: 29.07.2014
Сообщений: 3,108
Записей в блоге: 4
08.03.2016, 06:23 13
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
org 100h
jmp  start
 
mass  db  107,111,108,111,98,111,107,56,55,52,0
 
start:
   push  47104
   mov   di,11111000110b
   mov   ax,3
   int   16
;=================[ #1 ]========
   mov   ecx,4
   mov   eax,6f6c6548h
@print:
   int   29h
   ror   eax,8
   loop  @print
   mov   ax,0a0dh
   int   41
   shr   ax,8
   int   29h
;=================[ #2 ]========
   call  @f
   db    'Fucking stack!$'
@@:
   pop   dx
   mov   ah,9
   int   33
;=================[ #3 ]========
   pop   es
   mov   si,mass
   mov   ah,12
@@:
   lodsb
   or    al,al
   je    @exit
   stosw
   jmp   @b
 
@exit:
   xor   ax, ax
   int   16h
   int   20h
0
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 4
08.03.2016, 09:14 14
Всем спасибо за помощь.
Буду больше читать мануалы и учиться писать грамотный код.
0
08.03.2016, 09:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2016, 09:14
Помогаю со студенческими работами здесь

HP 625 снова и снова перезагружается в безопасный не заходит
Ребята помогите , проблема вот какая врубаю я ноут он доходит до заставки майкрософта и снова...

Почему функция вызывается снова и снова?
При просмотре всех учетных записей ( последняя функция = prosmotr_ych_z()) она не останавливается,...

Здравствуйте, снова проблема и снова к вам.
Имеется данный код: var iX, iY, fov: Integer; HD: HWND; sDC: hDC; begin HD :=...

Снова ТИС и снова делемма
Привет Ребята! Имею сканер-штрих-кода, который дал дамам на склад. Представьте себе такую...

Снова поток. Снова синхронизация
Приветствую всех. Тема измусолена до дыр, поэтому прошу не пинать. В программе создан поток. В...

И снова .htaccess и снова переезд
Казалось бы, столько написано. Ноне нашел ответа. Перезд с мультиязычного сайта на самостоятельный...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru