Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Assembler Задачи с ветвлениями https://www.cyberforum.ru/asm-beginners/thread369265.html
Помогите с задачками val1=1;val2=2;val3=10;val4=4 1.Определить переменные va1l,val2,val3,val4 числами 2.Вычислить первое выражение n=5*(val1+val2) ответ записать в переменную n 3.Вычислить...
Assembler В описании прототипа функции на C параметры это сами данные или адрес данных
И всётаки как самому читать мсдн? Нужен в голове твёрдый конвертер! Всегда с боем сдаётся. msdn.microsoft.com/en-us/library/windows/desktop/ms633534(v=vs.85).aspx __in int nWidth, __in int...
Найти первое число Фибоначчи, большее заданного числа Assembler
Добрый вечер.Не могу понять в чем ошибка.Задание:числа Фибоначчи определяются так f1=1,f2=1,а каждое следующее число равно сумме двух предыдущих fk+1=fk+fk-1,при k =2,3,...,N.Найти первое число...
Assembler Сложение 5 чисел Нужно реализовать сложение 5 чисел, покажу как это выглядит на pascal: var s,a: INTEGER; begin s:=0; FOR i:= 1 to 5 DO begin Readln(a); sum = sum + a; end; https://www.cyberforum.ru/asm-beginners/thread369122.html
Assembler Помогите решить две задачки двумя способами https://www.cyberforum.ru/asm-beginners/thread369049.html
A4-13. Дан массив из 10 элементов (натуральные числа). Вычис-лить сумму элементов, индексы которых есть числа Фибоначчи (1, 2, 3, 5, 8). Б4-13. Дана матрица 5х5. Найти количество строк, в каждой из...
Проверить число X на принадлежность диапазону [0, a]V[b, 255] Assembler
Ребята, тут парюсь с лабораторкой. Такая ситуация что на примитивном уровне я могу написать программу через условные переходы, типа вот этого: mov AX, X mov BX, 0 cmp AX, BX jge l1 mov Z, -1...
Assembler Объединить два массива. Вычислить количество нулевых элементов в результирующем массиве.
Была поставлена такая задача: есть два массива х,у. 1 - Дописать массив х к массиву у. 2 - Вычислить количество нулевых элементов в результирующем массиве 3 - найти сумму наибольшего и...
Assembler Посчитать Y= (1*J) /(Z+S)*K-4 Помогите исправить программу, считает неправильно и в чем собственно ошибка немогу понять( За ответы зарание благодарен вот формула по котрой должна считать программа Y= (1*J) /(Z+S)*K-4 вот сам... https://www.cyberforum.ru/asm-beginners/thread368585.html
Assembler Сложение и вычитание чисел https://www.cyberforum.ru/asm-beginners/thread368011.html
Добрый вечер! вот мой код программы: .386 .MODEL flat,stdcall .STACK 100h ExitProcess PROTO, dwExitCode:DWORD DumpRegs PROTO .data
Assembler Из строки выделить путь к файлу Как получить "путь\к\файлу" ? Сначала думал мне scasb поможет, но что-то не то делаю include '%fasm%/win32ax.inc' section '.code' executable start: invoke... https://www.cyberforum.ru/asm-beginners/thread367566.html
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
22.10.2011, 11:30 0

Написать программу, выводящую строку "Hello World" на экран

22.10.2011, 11:30. Просмотров 95017. Ответов 41
Метки (Все метки)

Ответ

я пытаюсь откомпилировать программу под виндовс, всплывающего окна стандартного окна с надписью hello word , но почему-то происходят ошибки указывающие на то, что процессы ExitProcess, MessageBoxA не известны, хотя все делаю как описано в тутариале.

компилировал по разному, даже пытался использовать параметры компиляции из экземпляров которые идут вместе с Tasm 5.0

в туторе написанно что компелировать надо так
tasm32 /m3 /ml program,,;
tlink32 /Tpe /aa program,program,,import32.lib

я даже пытался инклудить всякие билиотеки в самом исходнике, но что-то не выходит (
вот сам исходник

прошу извинить если оффтоп

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
;---[ CUT HERE ]-------------------------------------------------------------
 
.386                            ; Процессор (386+)
.model flat                     ; Использует 32-х битные
 
;регистры
 
 extrn          ExitProcess:proc                ; Функции API, которые
 extrn          MessageBoxA:proc                ; использует программа
 
 ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·;
 ; С помощью директивы "extrn" мы указываем, какие API мы будем использовать;
 ; ExitProcess возвращает контроль операционной системе, а MessageBoxA      ;
 ; показывает классическое виндовозное сообщение.                           ;
 ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·;
 
 .data
 szMessage       db      "Hello World!",0       ; Message for MsgBox
 szTitle         db      "Win32 rocks!",0       ; Title of that MsgBox
 
 ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·;
 
 ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·;
 
                .code                           ; Поехали!
 
 HelloWorld:
                push    00000000h               ; Стиль MessageBox
                push    offset szTitle          ; Заголовок MessageBox
                push    offset szMessage        ; Само сообщение
                push    00000000h               ; Хэндл владельца
 
                call    MessageBoxA             ; Вызов функции
 
 ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·;
 ; int MessageBox(                                                          ;
 ;   HWND hWnd,          // хэндл окна-владельца                            ;
 ;   LPCTSTR lpText,     // адрес текста сообщения                          ;
 ;   LPCTSTR lpCaption,  // адрес заголовка MessageBox'а                    ;
 ;   UINT uType          // стиль MessageBox'а                              ;
 ;  );                                                                      ;
 ;                                                                          ;
 ; Мы помещаем параметры в стек до вызова самой API-функции, и если вы      ;
 ; помните, стек построен согласно принципу LIFO (Last In First Out),       ;
 ; поэтому мы должны помещать параметры в перевернутом порядке (при всем    ;
 ; уважении к автору данного туториала, я должен сказать, что он не прав    ;
 ; вовсе не поэтому мы должны помещать данные в перевернутом порядке - прим.;
 ; пер.). Давайте посмотрим на краткое описание каждого из параметров этой  ;
 ; функции:                                                                 ;
 ;                                                                          ;
 ; ¦ hWnd: идентифицирует окно-владельца messagebox'а, который должен быть  ;
 ;   создан. Если этот параметр равняется NULL, у окна с сообщением не будет;
 ;   владельца.                                                             ;
 ; ¦ lpText: указывает на ASCIIZ-строку, содержащую сообщение, которое нужно;
 ;   отобразить.                                                            ;
 ; ¦ lpCaption: указывает на ASCIIZ-строку, содержащую заголовок окна       ;
 ;   сообщения. Если этот параметр равен NULL, будет использован заголовок  ;
 ;   по умолчанию.                                                          ;
 ; ¦ uType: задает флаги, которые определяют содержимое и поведение         ;
 ;   диалогового окна. Это параметр может быть комбинацией флагов.          ;
 ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·;
 
                push    00000000h
                call    ExitProcess
 
 ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·;
 ; VOID ExitProcess(                                                        ;
 ;   UINT uExitCode      // код выхода для всех ветвей                      ;
 ;  );                                                                      ;
 ;                                                                          ;
 ; Эта функция эквивалентна хорошо известному Int 20h или функциям 00, 4С   ;
 ; Int 21h. Она просто завершает выполнение текущего процесса. У нее только ;
 ; один параметр:                                                           ;
 ;                                                                          ;
 ; ¦ uExitcode: задает код выхода для процесса и всех ветвей, выполнение    ;
 ;   которых будет прервано вызовом данной функции. Используйте функцию     ;
 ;   GetExitCodeProcess, чтобы получить код возврата процесса, а функцию    ;
 ;   GetExitCodeThread, чтобы получить код возврата треда.                  ;
 ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·;
 
 end HelloWorld
 
;---[ CUT HERE ]-------------------------------------------------------------
Написать программу, выводящую строку "Hello World" на экран


Вернуться к обсуждению:
Написать программу, выводящую строку "Hello World" на экран
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2011, 11:30
Готовые ответы и решения:

Программа "Hello World" из книги Крупника А. "Изучаем ассемблер" не выводит строку
Здравствуйте! :) Начал изучать Ассеблер по книге Крупника А. "Изучаем ассемблер". Переписал...

Написать программу на ассемблере, выводящую на экран строку 100 раз
Написать программу на ассемблере, выводящую на экран строку 100 раз.

Составьте программу, выводящую на экран 5 строк «Hello, World!»
Всем доброго времени суток! Есть задание: 1.Составьте программу, выводящую на экран 5 строк...

Напишите программу, выводящую на экран "бегущую строку"
Напишите программу, выводящую на экран "бегущую строку" (бегущую строку можно оформить в виде...

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