Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на Ассемблере как общего так и конкретного характера.
 
важное примечание
для тех кто считает, что здесь место халявных исполнений курсовых и лабораторных работ.
тут обычно помогают тем, кто сам хоть что-то пытается понять и сделать, но что-то не понимает, что-то не получается...
ведь ассемблер изучают и задачки на нём дают обычно не менеджерам по продажам и даже не всем физ.-мат. специальностям
вы сами избрали этот путь? вот и идите по нему сами, ножками... с ручками и с головой...
 
короче, тут не сборище придурков-альтруистов, которым нечего делать и они ждут-не дождутся когда вы их попросите
что-то сделать _за_ вас
если позарез надо и вы даже готовы заплатить, тогда вам сюда
удачи
 
некоторые ресурсы
http://www.wasm.ru/ Самый популярный русскоязычный ресурс. https://wasm.in/
Ассемблер - книги (ASM, Assembler)
 
Просьба все большие листинги оформлять тегом more.
 
если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:42 29-11-2006 | Исправлено: akaGM, 17:44 11-06-2020
kentuki13

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребят, где почитать/разобраться (на русском языке, с инглишем к сожалению не дружу, пока, msdn не прочитаю ) как работать с классом TabStrip (вкладки) в диалоговом окне загружаемом с ресурсов? Какими, например, api-функциями или сообщениями добавить вкладку? Как сделать что б при переключении вкладки менялось содержимое окна?) Простите за такой вопрос, я понимаю что ГУГЛ, однако мне показалось, что на тему создания оконных приложений на асме через win api вообще оч мало инфы.

Всего записей: 9 | Зарегистр. 23-10-2011 | Отправлено: 10:03 20-11-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kentuki13
очень много переведено на русский. очень немного осталось такого чего на русском нет. использование апи функций одинаковое на всех языках, часто выручают примеры на дельфи, Си, смежных асмах (фасм тасм масм32) - у которых синтаксис конечно отличается, но всегда можно понять, что с апи функциями. да на ассемблер мало материала, сравнительно.  микрософт все усилия кинул на Си, ассемблер в большой мере это усилия коммерческих проектов и любительских. такой вопрос как создание окон достаточно освещен и на асме
 
Добавлено:
 Сишников глобально больше и они все знают - всегда в теме Си можно спросить там кто нибудь поможет
 
Добавлено:
если на Масме32 програмулируешь скачай MBuilder и MasmED
 
Добавлено:
ассемблер это обычно второй язык и большая часть литературы подразумевает наличие базы. особенно написанная не педагогами а любителями. и английский надо знать даже для дельфи - все документация изначально на наглийском

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 13:59 20-11-2011 | Исправлено: bomzzz, 14:05 20-11-2011
Molniev

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kentuki13

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

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

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

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

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

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

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

1. Мало оно кому надо из тех кто не умеет / c msdn не дружит.
2. На сях примеров полно. Язык на api не влияет.

Всего записей: 176 | Зарегистр. 13-03-2008 | Отправлено: 14:08 20-11-2011 | Исправлено: Molniev, 14:08 20-11-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kentuki13
кажется ты ничего по этому поводу не нашел потому что TabStrip это чисто фенька Visual Basic

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 16:46 20-11-2011
Molniev

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kentuki13
bomzzz
В api это называется "Tab control".

Всего записей: 176 | Зарегистр. 13-03-2008 | Отправлено: 16:48 20-11-2011
kentuki13

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

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

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

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

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

Спасибо, почитаю.
 
 
 
Добавлено:
Теперь осталось разобраться какое сообщение отправляется при переключении вкладки и как его обработать)

Всего записей: 9 | Зарегистр. 23-10-2011 | Отправлено: 23:11 20-11-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
MBuilder и MasmED  

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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 23:44 20-11-2011
kentuki13

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

Нужно будет попробовать...
 
Когда переключаю вкладку, отправляется сообщение 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

Всего записей: 9 | Зарегистр. 23-10-2011 | Отправлено: 23:50 20-11-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kentuki13

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

Неправильно. В сообщении WM_NOTIFY в LPARAM сидит указатель на структуру NMHDR, а код сообщения ( в том числе и TCN_SELCHANGE) находится в поле code этой структуры.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 00:01 21-11-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
меня 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

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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 00:06 21-11-2011
kentuki13

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а, ну ясно. а как определить активную вкладку? я так понимаю, в нмхдр такой инфы нет?
 
Добавлено:

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

 
нужно именно что-бы было поле для ввода, но статичное? хз, мож просто можна как-то Edit заблочить? ну а если нужен просто текст, без "белого фона с рамкой" то Static

Всего записей: 9 | Зарегистр. 23-10-2011 | Отправлено: 00:57 21-11-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kentuki13

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

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

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

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

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 01:12 21-11-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 01:17 21-11-2011 | Исправлено: bomzzz, 01:27 21-11-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 
ниче сложного    

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 12:33 21-11-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
люди я чета понять не могу - гуглю гуглю... это что типа надо для отрисовки каждой вкладки при переключении прятать элементы одной вкладки и отображать элементы той на которую переключились?
 
Добавлено:
скажите это правильно в принципе?

Цитата:
 
           .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

 

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 13:53 22-11-2011 | Исправлено: bomzzz, 15:42 22-11-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 
 

Цитата:
 
    .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
 

 
не могу с уверенностью сказать, что тут меньше тактов требуется, но размер кода упал в разы точно

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:54 22-11-2011 | Исправлено: bomzzz, 19:56 23-11-2011
staff007

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет, ребята помогите дописать программу
 
Тактовый режим прерываний (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
 

Всего записей: 3 | Зарегистр. 21-12-2010 | Отправлено: 01:03 24-11-2011
indapublic



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

Всего записей: 200 | Зарегистр. 05-02-2008 | Отправлено: 19:28 05-12-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
на примитивных компьютерах програмировали с помощью кодов, а не ассемблера, записанных на перфоленту

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 19:33 05-12-2011
indapublic



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну, это совсем уж примитивные, на компьютерах типа Агат (годах в 89), по-моему использовалось что наподобие ассемблера

Всего записей: 200 | Зарегистр. 05-02-2008 | Отправлено: 19:54 05-12-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru