Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
Заблокирован

MASM, TASM, FASM: что выбрать для программирования в ядре

15.06.2012, 20:48. Показов 3448. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Какой асемлер выбрать для проганья в едре? вынь
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.06.2012, 20:48
Ответы с готовыми решениями:

Какие существуют среды программирования Assebler'a для процессоров ix86 помимо tasm, fasm, masm
Какие существуют среды программирования Assebler'a для процессоров ix86 помимо tasm, fasm, masm? Посоветуйте литературу по этому вопросу?...

Какой компилятор выбрать FASM, MASM или TASM?
Здравствуйте. Посоветуйте мне какой компилятор лучше выбрать. FASM, MASM или TASM. Какой из них сильнее, какой проще? Какой компилятор...

Какие базовые операции мне надо проделать чтобы переписать небольшой код например MASM для использования в FASM?
В ентернетах очень много различных примеров для различных ассемблеров, я решил что буду изучать FASM, но часто встречаю решения моих задач...

3
2 / 2 / 0
Регистрация: 15.06.2012
Сообщений: 9
15.06.2012, 20:56
"для проганья в едре? вынь"
скорее masm

мой совет: используй 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
include 'GreyAsm16.inc'
 
var hello1 : string = "Hello, world!!! (Press any key...)$"
var hello2 : string = "   it is a inner 'for'.$"
var hello3 : string = "The socond 'for'. (Press any key...)$"   
var press1 : string = "Press any key to exit$"
var for1_min : word = 1
var for1_max : word = 5
var for2_min : word = 1
var for2_max : word = 3
  
start
  set ax = [for1_min], bx = [for1_max]
  for ax to bx
    console.printline hello1
    console.waitkey 0    
    stack.set ax, bx
    set ax = [for2_min], bx = [for2_max]   
    for ax to bx
      console.printline hello2
    for.end    
    stack.get bx, cx  
  for.end  
  console.line  
  for 1 to 5
    console.printline hello3
    console.waitkey 0
  for.end
  console.line
  console.print press1
  console.waitkey 13
finish
вот макросы
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
use16
org 0x100
jmp maincodebegin
 
macro start
{
  maincodebegin:
}
 
macro finish
{
  maincodeend:
  exit 0x00  
}
 
macro goend
{
  jmp maincodeend:
}
 
macro convert.dec_to_str dc, st
{
    
}
 
macro for.init cond
{
  match a to b, cond
  \{
    push [__FOR.ST]
    push [__FOR.RS]
    local ..for.doing
    __FOR.DOING equ ..for.doing
    local  ..for.end.code
    __FOR.END.CODE equ ..for.end.code
    local  ..for.end
    __FOR.END equ ..for.end
    mov [__FOR.ST], a
    mov [__FOR.RS], b
    __FOR.DOING:
  \}
}
 
macro for [cond]
{
  for.init cond
}
 
macro for.end
{
  __FOR.END.CODE:
  push ax
  push dx
  mov ax, [__FOR.ST]
  mov dx, [__FOR.RS]
  cmp ax, dx
  pop dx
  pop ax
  je __FOR.END
  inc [__FOR.ST]
  jmp __FOR.DOING
  __FOR.END:
  restore __FOR.DOING
  restore __FOR.END.CODE
  restore __FOR.END
  pop [__FOR.RS]
  pop [__FOR.ST]
}
 
macro for.next
{
  jmp __FOR.END.CODE    
}
 
macro for.break
{
  jmp __FOR.END
}
 
macro while.set cond
{
  match (1==2), cond \{ while.make 1, 2, 0x01 \}    
}
 
macro while.make a, b, s
{
  push [__WHILE.FP]
  push [__WHILE.SF]
  push [__WHILE.SM]
  ;mov [__WHILE.FF], a
  ;mov [__WHILE.SF], b
  ;mov [__WHILE.SM], s
  __WHILE.DOING: 
}
 
macro while.end
{
  __WHILE.END:
}
 
macro while.break
{
  jmp __WHILE.END
}
 
macro console.print string
{
  push  dx
  mov   dx, string
  dos   0x09
  pop   dx
}
 
macro console.printline string
{
  console.print string
  console.print enter_str
}
 
macro console.line
{
  console.print enter_str
}
 
macro console.waitkey key
{
  local ..waitloop
  .waitloop equ ..waitloop
  stack.set ax
  .waitloop:
      dos 0x08
      cmp al, 0
      je .waitloop
      if key = 0
      else
        cmp al, key
        jne .waitloop
      end if
  stack.get ax
  restore .waitloop
}
 
macro exit exitcode
{
  mov al, 0x4C
  dos exitcode 
}
 
macro dos command
{
  push  ax
  mov   ah, command
  int   0x21
  pop   ax
}
 
macro var [command]
{
  match a:b==c, command
  \{
    if b eq string
      a db c
    end if
    if b eq byte
      a db c
    end if
    if b eq word
      a dw c
    end if
    if b eq double
      a dd c
    end if
  \}
}
 
macro goto label
{
  jmp label
}
 
macro clr [reg]
{
  xor reg, reg
}
 
macro stack.set [reg]
{
  push reg
}
 
macro stack.get [reg]
{
  pop reg
}
 
macro set [cond]
{
  match a==b, cond
  \{
    mov a, b  
  \}
}
 
macro max res, a, b
{
  stack.set ax, bx
  set ax = [a], bx = [b]
  cmp ax, bx
  jg .more
  mov [res], bx
  jmp .end
  .more:
  mov [res], ax
  .end:
  stack.get bx, ax
}
 
enter_str db 13, 10, "$"
null_str db "$"
__FOR.ST dw 0
__FOR.RS dw 0
__FOR.DR dw 0
__FOR.D1 dw 0
__FOR.D2 dw 1
__WHILE.FP dw 0
__WHILE.SF dw 0
__WHILE.SM dw 0
__BUFFER rw 255
__NULL dw 0
Плюс, на fasm есть хорошее ide(FASM Editor 2.0). Но для "для проганья в едре? вынь " скорее masm
0
Заблокирован
15.06.2012, 23:51  [ТС]
Цитата Сообщение от andrew.NET Посмотреть сообщение
Плюс, на fasm есть хорошее ide(FASM Editor 2.0)
Вчём ево гуд?
0
2 / 2 / 0
Регистрация: 15.06.2012
Сообщений: 9
16.06.2012, 12:14
Очень удобен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.06.2012, 12:14
Помогаю со студенческими работами здесь

Компиляторы MASM, FASM, TASM - в чем их различия
День добрый. Ребята я вот начинаю изучать язык программирования ассемблер, и и не могу понять различие между ними(уже запутался). Какой...

Подскажите книгу для программирования под Win32, MASM/TASM с большим количеством примеров
Ув. форумчане, подскажите пожалуйста какую-нибудь обучающую книгу для программирования на ассемблере под Win32, MASM/TASM с большим...

TASM, MASM, или что?
Помогите плиз, нужно срочно какой-нибудь ассемблер компилятор!! С Р О Ч Н О!! Пожалуйста помогите жду!

Полезные макросы для MASM и TASM
Не претендую на создание чего-то нового и гениального, но макросы довольно полезные. Часть из того, что я сделал, уже делали другие. Тем не...

FAQ для раздела Assembler, MASM, TASM
Краткое содержание раздела F.A.Q. Общее что лучше почитать по ассемблеру? Как автоматизировать сборку ассемблерных программ ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru