Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Assembler

Автор: bomzzz
Дата сообщения: 31.10.2011 19:59
еще бы найти где это написано

Добавлено:
http://elancev.h1.ru/texno/raznoe/driver.htm
нашел хоть что то
Автор: pkbasu
Дата сообщения: 17.11.2011 17:57
Может и не в тему пишу и следовало бы новую тему открыть, но не хочу с бухты-барахты плодить темы, если что, то подскажите, как быть, пожалуйста. А напишу о следующем языке...

Sphinx C-- (Сфинкс Си минус минус) -- ресурсы о нём и обсуждения.

Язык низкого уровня (типа МАКРО ассемблера, но с синтаксисом и возможностями оооочень сильно приближенными к Си).
Насколько я осведомлён, то компилятор за время существования двумя человеками поддерживался:
-- автором языка SPHINX C-- является Peter Cellik (CANADA);
-- и на данный момент успешно заброшен Михаилом Шекером (Sheker) АВТОРСКИЙ САЙТ
Был форум, но где-то в 2010 истёк срок регистрации.
Хотел бы найти форум, где теперь обитают люди, которые его используют, а то за долгое время поиска гуглом ничего объединяющего не нашёл (в течении полугода время от времени искал). У самого две маленьких утилитки на нём написано. Да и в инете натыкался на авторские сайты пользователей, которые на этом языке написали свои программы (графические редакторы, звуковые проигрыватели; в демосцене применяли).
Помогите найти ресурс, где теперь сообщество обитает.
Автор: bomzzz
Дата сообщения: 17.11.2011 18:34


Добавлено:
вообще зря ты тратишь время на такой язык
Автор: akaGM
Дата сообщения: 17.11.2011 19:00
ведь пишет же человек
Цитата:
за долгое время поиска гуглом ничего объединяющего не нашёл (в течении полугода время от времени искал).
главное отметиться...
Автор: Sphinx114
Дата сообщения: 17.11.2011 19:06

Цитата:
главное отметиться...

Вот и я так думаю.
Автор: bomzzz
Дата сообщения: 17.11.2011 19:19
если гугл не знает то никто. если ты конечно правильно им пользуешься. посмотри какой из ассемблеров похож по синтаксису или Си. Си вообще самый распространенный
Автор: kentuki13
Дата сообщения: 20.11.2011 08:03
Ребят, где почитать/разобраться (на русском языке, с инглишем к сожалению не дружу, пока, msdn не прочитаю ) как работать с классом TabStrip (вкладки) в диалоговом окне загружаемом с ресурсов? Какими, например, api-функциями или сообщениями добавить вкладку? Как сделать что б при переключении вкладки менялось содержимое окна?) Простите за такой вопрос, я понимаю что ГУГЛ, однако мне показалось, что на тему создания оконных приложений на асме через win api вообще оч мало инфы.
Автор: bomzzz
Дата сообщения: 20.11.2011 11:59
kentuki13
очень много переведено на русский. очень немного осталось такого чего на русском нет. использование апи функций одинаковое на всех языках, часто выручают примеры на дельфи, Си, смежных асмах (фасм тасм масм32) - у которых синтаксис конечно отличается, но всегда можно понять, что с апи функциями. да на ассемблер мало материала, сравнительно. микрософт все усилия кинул на Си, ассемблер в большой мере это усилия коммерческих проектов и любительских. такой вопрос как создание окон достаточно освещен и на асме

Добавлено:
Сишников глобально больше и они все знают - всегда в теме Си можно спросить там кто нибудь поможет

Добавлено:
если на Масме32 програмулируешь скачай MBuilder и MasmED

Добавлено:
ассемблер это обычно второй язык и большая часть литературы подразумевает наличие базы. особенно написанная не педагогами а любителями. и английский надо знать даже для дельфи - все документация изначально на наглийском
Автор: Molniev
Дата сообщения: 20.11.2011 12:08
kentuki13

Цитата:
Ребят, где почитать/разобраться

Win32 API. Эффективная разработка приложений - Питер (2007)(DJVU) Русский, 5-469-01361-8

Цитата:
msdn не прочитаю

Очень плохо. Надо пользоваться оригиналом, насколько возможно.

Цитата:
Какими, например, api-функциями или сообщениями добавить вкладку

SendMessage*/PostMessage* слать сообщения из группы TCM_*

Цитата:
тему создания оконных приложений на асме через win api

1. Мало оно кому надо из тех кто не умеет / c msdn не дружит.
2. На сях примеров полно. Язык на api не влияет.
Автор: bomzzz
Дата сообщения: 20.11.2011 14:46
kentuki13
кажется ты ничего по этому поводу не нашел потому что TabStrip это чисто фенька Visual Basic
Автор: Molniev
Дата сообщения: 20.11.2011 14:48
kentuki13
bomzzz
В api это называется "Tab control".
Автор: kentuki13
Дата сообщения: 20.11.2011 21:11

Цитата:
если на Масме32 програмулируешь скачай MBuilder и MasmED

Есть среда, в которой необходимо писать...) синтаксис - масм32

В принципе, уже удалось создать 3 вкладки через отправку сообщения ТСМ_INSERTITEM, понемногу получаеться, спасибо за ответы) А английский действительно нужно знать...


Цитата:
TabStrip это чисто фенька Visual Basic


В той среде, которую мне приходиться использовать, нужно создать диалоговое окно в каком то стрёмном конструкторе и там контрол с вкладками так и зовётся...))


Цитата:
Win32 API. Эффективная разработка приложений - Питер (2007)(DJVU) Русский, 5-469-01361-8

Спасибо, почитаю.



Добавлено:
Теперь осталось разобраться какое сообщение отправляется при переключении вкладки и как его обработать)
Автор: bomzzz
Дата сообщения: 20.11.2011 21:44

Цитата:
MBuilder и MasmED

они сразу тебе болванку делают на масме и самые простые контролы туда можно воткнуть а потом уже дальше двигаться
Автор: kentuki13
Дата сообщения: 20.11.2011 21:50

Цитата:
они сразу тебе болванку делают на масме и самые простые контролы туда можно воткнуть а потом уже дальше двигаться

Нужно будет попробовать...

Когда переключаю вкладку, отправляется сообщение WM_NOTIFY и как lParam - TCN_SELCHANGE, правильно?
Вот я пытаюсь изменить иконку при переключении вкладки, не могу понять что не так:


Код: .elseif eax==WM_NOTIFY
        mov eax, lParam
        .if eax==TCN_SELCHANGE
            invoke LoadIcon,hInstance,1002
            mov hIco2,eax
            invoke SendMessage,hWin,WM_SETICON,ICON_BIG,hIco2
        .endif
Автор: Abs62
Дата сообщения: 20.11.2011 22:01
kentuki13

Цитата:
Когда переключаю вкладку, отправляется сообщение WM_NOTIFY и как lParam - TCN_SELCHANGE, правильно

Неправильно. В сообщении WM_NOTIFY в LPARAM сидит указатель на структуру NMHDR, а код сообщения ( в том числе и TCN_SELCHANGE) находится в поле code этой структуры.
Автор: bomzzz
Дата сообщения: 20.11.2011 22:06
меня Free_Soft-ик уже два раза просил ему такое окно сделать, а я даже не знал как оно называется - это TAB Control

Добавлено:

Цитата:
    .elseif uMsg==WM_NOTIFY
        push edi
        mov edi,lParam
        assume edi:ptr NMHDR
        mov eax,[edi].hwndFrom
        .if eax==hList
            .if [edi].code==LVN_COLUMNCLICK



для лист контрола делал уже это нмхдр, вот так примерно это выглядит

Добавлено:
а как делается (называется) окно в котором текст который можно выделить, как в едит контроле, но нельзя туда курсор засунуть и ничего впечатать????
Автор: kentuki13
Дата сообщения: 20.11.2011 22:57
а, ну ясно. а как определить активную вкладку? я так понимаю, в нмхдр такой инфы нет?

Добавлено:

Цитата:
а как делается (называется) окно в котором текст который можно выделить, как в едит контроле, но нельзя туда курсор засунуть и ничего впечатать????


нужно именно что-бы было поле для ввода, но статичное? хз, мож просто можна как-то Edit заблочить? ну а если нужен просто текст, без "белого фона с рамкой" то Static
Автор: Abs62
Дата сообщения: 20.11.2011 23:12
kentuki13

Цитата:
а, ну ясно. а как определить активную вкладку? я так понимаю, в нмхдр такой инфы нет?

Нет. Надо запрашивать через сообщение TCM_GETCURSEL.

Добавлено:
bomzzz

Цитата:
а как делается (называется) окно в котором текст который можно выделить, как в едит контроле, но нельзя туда курсор засунуть и ничего впечатать????

EDIT и есть. Со стилем ES_READONLY.
Автор: bomzzz
Дата сообщения: 20.11.2011 23:17

Цитата:
EDIT и есть. Со стилем ES_READONLY.



Добавлено:
он сереньким стал а как его белым оставить? . курсор там болтается но не печатает

Добавлено:
субклассировать что ли
Автор: bomzzz
Дата сообщения: 21.11.2011 10:33

ниче сложного
Автор: bomzzz
Дата сообщения: 22.11.2011 11:53
люди я чета понять не могу - гуглю гуглю... это что типа надо для отрисовки каждой вкладки при переключении прятать элементы одной вкладки и отображать элементы той на которую переключились?

Добавлено:
скажите это правильно в принципе?

Цитата:

.if [edi].code==TCN_SELCHANGE
;invoke MessageBox,0,0,0,0
invoke SendMessage, hSysTab, TCM_GETCURSEL, 0, 0
.if eax==0
INVOKE ShowWindow,hwndButton1,SW_SHOW
.elseif eax==1
INVOKE ShowWindow,hwndButton2,SW_SHOW
.elseif eax==2
INVOKE ShowWindow,hwndButton3,SW_SHOW
.elseif eax==3
INVOKE ShowWindow,hwndButton4,SW_SHOW
.endif
.elseif [edi].code==TCN_SELCHANGING
invoke SendMessage, hSysTab, TCM_GETCURSEL, 0, 0
.if eax==0
INVOKE ShowWindow,hwndButton1,SW_HIDE
.elseif eax==1
INVOKE ShowWindow,hwndButton2,SW_HIDE
.elseif eax==2
INVOKE ShowWindow,hwndButton3,SW_HIDE
.elseif eax==3
INVOKE ShowWindow,hwndButton4,SW_HIDE
.endif

Автор: bomzzz
Дата сообщения: 22.11.2011 13:54



Цитата:

    .elseif uMsg==WM_NOTIFY
        mov edi,lParam
        assume edi:ptr NMHDR
        mov eax,[edi].hwndFrom
        .IF eax==hSysTab
            invoke SendMessage, eax, TCM_GETCURSEL, 0, 0
            mov ebx, [edi].code
            add ebx, 552
            shl eax, 2
            add eax, offset hwndButton1
            INVOKE ShowWindow,[eax],ebx
        .ENDIF


не могу с уверенностью сказать, что тут меньше тактов требуется, но размер кода упал в разы точно
Автор: staff007
Дата сообщения: 23.11.2011 23:03
Всем привет, ребята помогите дописать программу

Тактовый режим прерываний (int 1) процедуры обработки, которая определяет команду add r/m + непосредственный операнд. Эта процедура должна проверить, был ли перерыв (interrupt) до или после команды add второго варианта, если да, то на экране показать сообщение и всю информацию о команде: адрес, код, мнемоника, операнд.

Например. На экране могли бы вывести такую информацию: Тактовый режим прерывания! 0000:0128 80C412 add ah, 12h; ah=00


Код:
.model small

.stack 100h

.data
msgADD db "ADD r/m+immediate operand$"
kenter db 13, 10, "$"
msgNO db "not ADD r/m+immediate operand", 13, 10, "$"

.code
start_program:
MOV ax, @data
MOV ds, ax

MOV ax, 0
MOV es, ax

PUSH es:[4]
PUSH es:[6]

MOV word ptr es:[4], offset HandleInt
MOV es:[6], cs

PUSHF
PUSHF
POP ax
OR ax, 0100h
PUSH ax
POPF
NOP

MOV ax, bx
MOV ax, cs
MOV al, 22h
INC ax

POPF

POP es:[6]
POP es:[4]

MOV ah, 4Ch
MOV al, 0
INT 21h

PROC HandleInt
PUSH ax
PUSH bx
PUSH dx
PUSH bp
PUSH es
PUSH ds

MOV ax, @data
MOV ds, ax

MOV bp, sp
ADD bp, 12
MOV bx, [bp]
MOV es, [bp+2]
MOV dl, [es:bx]

ADD al, dl
AND al, 0F0h
CMP al, 0B0h
JE mov2

MOV ah, 9
MOV dx, offset msgNO
INT 21h
JMP end_program

Mov1:
AND dl, 1
ADD dl, 30h
JMP print

Mov2:
MOV cl, 3
SHR dl, cl
JMP Mov1

print:
PUSH dx
MOV ah, 9
MOV dx, offset msgADD
INT 21h

;MOV ah, 2
POP dx
;INT 21h

MOV ah, 9
MOV dx, offset kenter
INT 21h

end_program:
POP ds
POP es
POP bp
POP dx
POP bx
POP ax
IRET
HandleInt ENDP

END start_program
Автор: indapublic
Дата сообщения: 05.12.2011 17:28
Сейчас еще программируют на нем? Я грешным делом уже решил, что он ушел в прошлое вместе с примитивными компьютерами УКНЦ и тому подобное. Извините, если кого обидел, но просто сильно удивился.
Автор: bomzzz
Дата сообщения: 05.12.2011 17:33
на примитивных компьютерах програмировали с помощью кодов, а не ассемблера, записанных на перфоленту
Автор: indapublic
Дата сообщения: 05.12.2011 17:54
Ну, это совсем уж примитивные, на компьютерах типа Агат (годах в 89), по-моему использовалось что наподобие ассемблера
Автор: bomzzz
Дата сообщения: 05.12.2011 20:57
ты наверно путаешь примтивизм с языками высокого уровня. высокий уровень это и есть примитивизм

Добавлено:
микрософт Си всем навязывает, по своим соображениям типа, чтоб софт не писали эффективнее чем микрософтовский или типа такого, но в любом языке высокого уровня нельзя обойтись безассемблерных вставок. а под виндой вообще никакой разницы на чем писать
Автор: KChernov
Дата сообщения: 05.12.2011 21:50
indapublic

Цитата:
Сейчас еще программируют на нем? Я грешным делом уже решил, что он ушел в прошлое вместе с примитивными компьютерами УКНЦ и тому подобное. Извините, если кого обидел, но просто сильно удивился.

У каждого языка своя ниша.
Если нужно напрямую работать с железом (почему - возможны варианты), то вариантов нет, ибо ассемблер и есть язык самого железа.
Но если вы не знаете, зачем вам субж, скорее всего он вам и не нужен.
В больших проектах как правило субж если и есть, то это самые критичные по производительности куски кода (а может запросто и не быть вообще).
Автор: bomzzz
Дата сообщения: 05.12.2011 22:10
а по моему это предрассудок, что асм какой то сложный, язык железа - язык как язык, ничем от других не отличается, а для винды вообще граница стерлась
Автор: KChernov
Дата сообщения: 05.12.2011 22:21
Чтобы эффективно делать большие проекты на ассемблере, как минимум надо написать кучу обёрток, чтобы не изобретать велосипед на каждом шагу.
И кстати как у субжа с ООП?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384

Предыдущая тема: .NET GUI компоненты


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.