Форум программистов, компьютерный форум, киберфорум
Наши страницы
FASM
Войти
Регистрация
Восстановить пароль
 
Garik11
0 / 0 / 0
Регистрация: 09.04.2017
Сообщений: 18
1

Из ASM в FASM

16.11.2018, 11:31. Просмотров 87. Ответов 1

На лабе по ассемблеру задали переделать код под FASM из 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
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
.386p
.model          flat, stdcall
include                 Const.inc
includelib      import32.lib
 
 
_data           segment dword public use32 'Data'
 
cv              db      0, 0
 
Msg             MsgStruct <?>
Hinst           dd      0
NameRes                 db      'DIALOG_1', 0
HelloMsg                db      80      dup (0)
CaptionMsg      db      80      dup (0)
CaptionAnswer   db      'Результат.', 0
 
ErrorMsg                db      'Ошибка при создании диалога.', 0
ErrorCpt                db      'Ошибка.', 0
 
InfoCpt         db      'Информация', 0
InfoStrF1               db      'Программа считает по формуле: B1 - B2 + W1 * W2 - D1 / B3.', 0
InfoStrF2               db      'Программа считает по формуле: (B1orB2)xorW1 and W2or(D1xorB3).', 0
InfoStrF3               db      'Программа считает по формуле: W2 or (D1 xor B3).', 0
InfoStrF4               db      'Циклический сдвиг D1 влево (2).', 0
InfoStrF5               db      'Сдвиг байта B1 на (1).', 0
InfoStrF6               db      'Арифметический сдвиг W1 вправо (2).', 0
InfoStrF7               db      'Программа выполняет циклический сдвиг B1 вправо черз флаг переноса.', 0
 
HelpCpt         db      'Подсказка.', 0
HelpStr         db      'Для того чтобы все считало правильно нужно:', 10, 13
                db      '1. Вводить значения для байта до 127;', 10, 13
                db      '2. Вводить значения для слова до 32767;', 10, 13
                db      '3. Вводить значения для двойного слова до 2147483647.', 10, 13
        db      '4. Программа не работает с отрицательными цифрами.', 10, 13
        db      '5. Всегда вводите ВСЕ значения в ячейки B,W,D.', 10, 13, 0
 
Buffer          db      100     dup (0)
LenVar          db      0
prom            dd      0
LogMin          db      0, 0
MinusSymb               db      ' '
ResultSymb      db      13      dup (' '), 0
 
X               db      0
CheckVar                db      0
rez1 dd 0
rez2 dd 0
rez3 dd 0
rez4 dd 0
 
b1              db      0
b2              db      0
b3              db      0
w1              dw      0
w2              dw      0
d1              dd      0
cfStr           db      'Флаг cf = '
cf              db      0,0
Result          dq      0
_data           ends
 
 
_text           segment dword public use32 'Code'
Start:
                push    0
                call    GetModuleHandleA
                mov     [Hinst], rax
 
;***
                push    80
                push    offset HelloMsg
                push    502
                push    [Hinst]
                call    LoadStringA
 
                push    80
                push    offset CaptionMsg
                push    501
                push    [Hinst]
                call    LoadStringA
 
;***
                push    0
                push    offset HelloMsg
                push    offset CaptionMsg
                push    0
                call    MessageBoxA
 
;***
                push    0
                push    offset WndProc
                push    0
                push    offset NameRes
                push    [Hinst]
                call    DialogBoxParamA
                cmp     eax, -1
                jne     NextError
 
                push    0
                push    offset ErrorCpt
                push    offset ErrorMsg
                push    0
                call    MessageBoxA
 
NextError:
                push    0
                call    ExitProcess
 
WndProc         proc
                push    ebp
                mov     ebp, esp
                push    ebx
                push    esi
                push    edi
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2018, 11:31
Ответы с готовыми решениями:

Вызываю dll (написанную на vc++2008) из Fasm. Через 40 секунд вылет из программы.Без вызова dll из Fasm программа не вылетает.
Программа на vc++2008: #include &quot;MathFuncsDll.h&quot; #include &lt;stdexcept&gt; using namespace std; ...

При сборке выдает ошибку "MASM: fatal error A1000: : 1.asm.asm"
&quot;MASM : fatal error A1000: : 1.asm.asm :\1&gt;link16 /TINY 1.asm.obj, 1.asm.com&quot; Вопользовался...

fasm
org 100h mov cl,0 mov ch,255 cikl: mov ah,0eh shl ch,1 jc perivod mov al, '0' jmp label2...

Си и FASM
Можно ли компилировать asm-код(FASM) с подключенными файлами Си? К примеру: use32 mov ax , 0...

Структуры FASM
как в фасме описать структуру и объявить переменную структуры? пробовал так: struc descriptor ...

1
Mikl___
Автор FAQ
11987 / 6254 / 596
Регистрация: 11.11.2010
Сообщений: 11,317
16.11.2018, 13:32 2
Garik11,
начнем с того, что у тебя не ASM, а TASM. Чтобы начать "шарить", нужно начинать с разбора маленьких программ, которые делают одно и то же, тогда их различия будут отчетливо видны, посмотри тему А что находится внутри функции MessageBox или как еще можно создать MessageBox? найди там фрагмент написанный на TASM и сравни его с фрагментом FASM. Потом начинай задавать вопросы. И еще, любой фрагмент программы на ассемблере должен обрамляться тэгами [аsm] и [/аsm]
3
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2018, 13:32

WriteFile в FASM
Плз подскажите как пользоваться с функцией WriteFile в FASM. Файл создал с помощью CreateFile, но...

прерывание в fasm
Я создал программу вывода на экран веке кода клавиши. С помощью int 16h .но за into 16h скрывается...

WinApi и fasm
Есть ли толковая документации по использованию winapi в fasm'e ?


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

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

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