Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2011, 21:10   #1
dezder
Пользователь
 
Регистрация: 15.12.2011
Сообщений: 17
По умолчанию нужны комментарии к программе !

include '%include%/win32ax.inc'
.data
a db 6
b db 8
c db 1
d db 3
r db 0
.code
start:
mov al,[ a ]
cmp al,[ b ]
jg n1
n3:
cmp al,[ c ]
ja n2
n4:
cmp al,[ d ]
ja n5
jmp exit
n1:
mov al,[ b ]
jmp n3
n2:
mov al,[ c ]
jmp n4
n5:
mov al,[ d ]
mov [ r ],al
exit:
add [ r ],al
add [ r ],'0'
invoke MessageBox,NULL,r,"Result",MB_OKCAN CEL
invoke ExitProcess,0
.end start

точнее тока к этому все остольно знаю
include '%include%/win32ax.inc'
.data
invoke MessageBox,NULL,r,"Result",MB_OKCAN CEL
invoke ExitProcess,0
.end start

кстати алгаритм программы начинаеться с .дата ??
dezder вне форума Ответить с цитированием
Старый 19.12.2011, 21:22   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Это код для фасма, а не масма.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 19.12.2011, 21:30   #3
dezder
Пользователь
 
Регистрация: 15.12.2011
Сообщений: 17
По умолчанию

я знаю=) мне комметари нужны , да и объясните человеку чем вообще различаюсться масм фасм и тасм
просто язык ассемблер 1 а коды разные
о чуть не забыл , а как сделать допустим так
что бы была 1 кнопка а не 2 ?
или бесконечно окошек что бы прога тока через диспечер закрывалась ?
dezder вне форума Ответить с цитированием
Старый 19.12.2011, 21:36   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)ассемблер вообще не язык, это представление опкодов процессора в текстовом виде.
разные компиляторы принимают код в разном виде(разный синтаксис).
2)чтоб программа не завершалась нужен вечный цикл(банальный jmp).
3)прочитайте описание функции MessageBox, поймете насчет кнопки.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.12.2011, 21:46   #5
dezder
Пользователь
 
Регистрация: 15.12.2011
Сообщений: 17
По умолчанию

точно jmp n
n: и в начало да ?
Функция MessageBox
Описание:
function MessageBox(Parent: HWnd; Txt, Caption: PChar; TextType: Word): Integer;

Создает и отобpажает блок диалога, содеpжащий указанное сообщение и заголовок, а также пpедопpеделенные пиктогpаммы и текстовые кнопки, в соответствии с паpаметpом TexType.
Параметры:
Parent: Окно, владеющее блоком сообщений.
Txt: Отобpажаемое сообщение (заканчивающееся пустым символом).
Caption: Заголовок блока диалога (заканчивающийся пустым символом) или nil для "Error" ("Ошибка").
TextType: Одна или комбинация констант mb_. См. pаздел "Флаги блока сообщения, mb_" в главе 1.

Возвpащаемое значение:
В случае успешного завеpшения одна из следующих констант: id_Abort, id_Cancel, id_Ignore, id_No, id_OK, id_Retry или id_Yes. См. pаздел "Идентификатоpы команд блока диалога, id_" в главе 1.
почитал мало что понял =)
тоесть например вот это
invoke MessageBox,NULL,message,message,MB_ OK даст кнопку ок
invoke MessageBox,NULL,message,message,MB_ отмена а это даст ошибку
если сразу вместе прописать
так друзья давайте вспомним что мне нужны коментарии=)
dezder вне форума Ответить с цитированием
Старый 19.12.2011, 21:52   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
точно jmp n
n: и в начало да ?
ну можно и в начало, а можно просто на метку перед invoke MessageBox.

Цитата:
TextType: Одна или комбинация констант mb_. См. pаздел "Флаги блока сообщения, mb_" в главе 1.
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
вообще предпочитаю оригиналы документации.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.12.2011, 21:58   #7
dezder
Пользователь
 
Регистрация: 15.12.2011
Сообщений: 17
По умолчанию

include '%include%/win32ax.inc'
.data
invoke MessageBox,NULL,r,"Result",MB_OKCAN CEL
invoke ExitProcess,0
.end start

комментарии к этому нужны
dezder вне форума Ответить с цитированием
Старый 19.12.2011, 22:03   #8
dezder
Пользователь
 
Регистрация: 15.12.2011
Сообщений: 17
По умолчанию

ну вот поставил метку jmp
теперь и через диспечер не выходит ХД
dezder вне форума Ответить с цитированием
Старый 19.12.2011, 22:10   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
include '%include%/win32ax.inc'
эта строчка будет заменена текстом указанного файла.
Цитата:
%include%/win32ax.inc
этот файл содержит описания Win32API функций, констант и структур к ним.
так же подключает файл с макросами(например invoke)
Цитата:
.data
обьявление секции данных
Код:
invoke MessageBox,NULL,r,"Result",MB_OKCAN CEL
макрос для легкого вызова функций, почти как в ЯПВУ.
равносильно
Код:
push dword(MB_OKCANCEL)
push "Result" ;правда не знаю позволяет ли FASM такое
push r
push dword(NULL)
call MessageBox
для чего нужна функция MessageBox вы знаете.

функция ExitProcess является правильным выходом из программы(хотя можно и иначе).
Код:
.end start
обозначает конец программы.
Цитата:
теперь и через диспечер не выходит ХД
там помоему нужно выбрать Завершить процесс, и потом закрыть окно от программы.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.12.2011, 22:23   #10
dezder
Пользователь
 
Регистрация: 15.12.2011
Сообщений: 17
По умолчанию

да все вышел спс большое=)
push "Result" ;правда не знаю позволяет ли FASM такое
позоляет выводит заголовок результат.
а не могли бы помочь с другой программкой ?
вообщем надо 2 возвести в степень сх, сх принимает значения от 1 до 4
это что то типо того будет ?
mov ax,2
mov cx,1
mul cx, ax
cmp ax,cx
mov cx,2
ну и по анологии
или что то типо этого
include '%include%/win32ax.inc'
.data
a db 2
b db 1
c db 2
d db 3
r db 4
.code
start:
include '%include%/win32ax.inc'
.data
a db 2
b db 1
c db 2
d db 3
r db 4
.code
start:
mov al,[ a ]
mul al,[ b ]
jg n1
n3:
mul al,[ c ]
ja n2
n4:
mul al,[ d ]
ja n5
jmp exit
n1:
mov al,[ b ]
jmp n3
n2:
mov al,[ c ]
jmp n4
n5:
mov al,[ d ]
mov [ r ],al
exit:
add [ r ],al
add [ r ],'0'
invoke MessageBox,NULL,r,"Result",MB_OKCAN CEL
invoke ExitProcess,0
.end start
dezder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужны комментарии protrence Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 08.12.2011 12:21
Очень нужны комментарии!!!!!!!! Tanusha_221 Помощь студентам 0 01.05.2010 20:00
Скрипт JS - нужны комментарии dropacid JavaScript, Ajax 3 04.04.2010 13:07
Pascal нужны комментарии к процедуре. RrR5 Помощь студентам 16 28.01.2009 15:26
Диспетчер задач нужны комментарии Naymen Общие вопросы Delphi 1 20.12.2008 12:28