Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
LinBat
Заблокирован
1

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

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

Какой асемлер выбрать для проганья в едре? вынь
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2012, 20:48
Ответы с готовыми решениями:

FASM/MASM/TASM
В ентернетах очень много различных примеров для различных ассемблеров, я решил что буду изучать...

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

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

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

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

3
andrew.NET
2 / 2 / 0
Регистрация: 15.06.2012
Сообщений: 9
15.06.2012, 20:56 2
"для проганья в едре? вынь"
скорее 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
LinBat
Заблокирован
15.06.2012, 23:51  [ТС] 3
Цитата Сообщение от andrew.NET Посмотреть сообщение
Плюс, на fasm есть хорошее ide(FASM Editor 2.0)
Вчём ево гуд?
0
andrew.NET
2 / 2 / 0
Регистрация: 15.06.2012
Сообщений: 9
16.06.2012, 12:14 4
Очень удобен.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2012, 12:14

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

Глоссарий для раздела Assembler, MASM, TASM
Thread, AFP, Charles Kludge, 6a6kin, Убежденный, Ethereal, выкладывайте свои глоссарии - разложу...

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


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

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

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