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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2010, 23:45   #11
zverozavr
Пользователь
 
Регистрация: 22.03.2010
Сообщений: 22
По умолчанию

не компилится ... масм 10й выдаёт кучу ошибок ... Масм билдер вобще наглухо виснет
zverozavr вне форума Ответить с цитированием
Старый 03.06.2010, 23:56   #12
Polos
 
Регистрация: 02.06.2010
Сообщений: 9
По умолчанию

Тасмом копилируй!
Polos вне форума Ответить с цитированием
Старый 08.06.2010, 12:49   #13
zverozavr
Пользователь
 
Регистрация: 22.03.2010
Сообщений: 22
По умолчанию

**Error** 1.asm(12) Need colon
**Error** 1.asm(27) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(28) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(31) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(32) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(36) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(37) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(40) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(41) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(42) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(43) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(44) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(66) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(67) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(68) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(69) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(70) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(71) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(72) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(73) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(77) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(78) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(79) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(80) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(81) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(82) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(83) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(84) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(88) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(89) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(90) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(91) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(92) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(93) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(94) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(95) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(102) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(103) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(104) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(105) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(106) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(107) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(108) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(109) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(118) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(119) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(120) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(121) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(122) Can't address with currently ASSUMEd segment registers
**Error** 1.asm(123) Can't address with currently ASSUMEd segment registers
**Fatal** 1.asm(127) Unexpected end of file encountered
Error messages: 51
Warning messages: None
Passes: 1
Remaining memory: 449k

вот что при компиляции тасмом
zverozavr вне форума Ответить с цитированием
Старый 08.06.2010, 20:29   #14
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

to Polos:
На форуме при создании сообщений есть специальный тег - CODE.
Это чтобы всякие смайлики не портили текст исходников.

to zverozavr:
1.
Замените строку
Код:
ASSUME DSseg,CS:cseg
на
Код:
ASSUME DS:dseg,CS:cseg
2.
В конце файла допишите END

P.S.
Что-то я никакой фигуры всё равно не увидел.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru

Последний раз редактировалось Ulex; 08.06.2010 в 20:31. Причина: Сам скомпилил
Ulex вне форума Ответить с цитированием
Старый 09.06.2010, 15:08   #15
zverozavr
Пользователь
 
Регистрация: 22.03.2010
Сообщений: 22
По умолчанию

*:\>tasm 1.asm
Turbo Assembler Version 4.1 Copyright (c) 1988, 1996 Borland International

Assembling file: 1.asm
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 450k


*:\>tlink 1.asm
Stub error (2002): can't find rtm.exe

чтото не в курю
zverozavr вне форума Ответить с цитированием
Старый 09.06.2010, 20:22   #16
zverozavr
Пользователь
 
Регистрация: 22.03.2010
Сообщений: 22
По умолчанию

товарищи программисты подскажите ламеру:
пытаюсь нарисовать фигуру через MoveTo, LineTo ... но компилятор ругается на MoveTo : error A2006: undefined symbol: MoveTo
не пойму почему так вроде все библиотеки подключены, а всё равно
zverozavr вне форума Ответить с цитированием
Старый 09.06.2010, 23:24   #17
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Цитата:
*:\>tlink 1.asm
Stub error (2002): can't find rtm.exe
Странная ошибка. Но линковать всё равно надо не *.asm, а *.obj

Цитата:
пытаюсь нарисовать фигуру через MoveTo, LineTo ... но компилятор ругается на MoveTo : error A2006: undefined symbol: MoveTo
Ну потому что нет такой функции (по крайней мере в прототипах в inc). Есть MoveToEx:
Цитата:
The MoveToEx function updates the current position to the specified point and optionally returns the previous position.

BOOL MoveToEx(

HDC hdc, // handle of device context
int X, // x-coordinate of new current position
int Y, // y-coordinate of new current position
LPPOINT lpPoint // address of old current position
);
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 10.06.2010, 12:14   #18
zverozavr
Пользователь
 
Регистрация: 22.03.2010
Сообщений: 22
По умолчанию

Спасибо тебе большое, хоть немного понимать начинаю что переделываю

в общем у меня вот что получилось:
Код:
        .486
        .model flat,stdcall
        option casemap:none  
    
        include \masm32\include\windows.inc
        include \masm32\include\user32.inc
        include \masm32\include\kernel32.inc
        include \masm32\include\comctl32.inc
	  include \masm32\include\gdi32.inc
	  include \masm32\include\comdlg32.inc
	  include \masm32\include\shell32.inc

        includelib \masm32\lib\user32.lib
        includelib \masm32\lib\kernel32.lib
        includelib \masm32\lib\comctl32.lib
        includelib \masm32\lib\gdi32.lib
        includelib \masm32\lib\comdlg32.lib
	  includelib \masm32\lib\shell32.lib
    

        ControlsMadness PROTO :DWORD,:DWORD,:DWORD,:DWORD
        SetControlsPosition PROTO :DWORD
        RoundedPath PROTO :DWORD, :DWORD
    

    
.data
        hInstance dd ?

        NewPosition dd 0
        NPosPaint dd 0
        hPen          dd 0
        oldPen        dd 0
        dlgname db "CONTROLS",0

.data?
        icex INITCOMMONCONTROLSEX <> 
    

    
.code
    
start:  
        invoke GetModuleHandle,NULL
        mov hInstance,eax
        mov icex.dwSize,sizeof INITCOMMONCONTROLSEX
        mov icex.dwICC,0FFFFh
        invoke InitCommonControlsEx,ADDR icex
    
        invoke DialogBoxParam,hInstance,ADDR dlgname,0,ADDR ControlsMadness,0
        invoke ExitProcess,eax
    

    
ControlsMadness proc hWin:DWORD,uMsg:DWORD,aParam:DWORD,bParam:DWORD
    
    LOCAL hDC:DWORD
    LOCAL rct:RECT
    LOCAL ps:PAINTSTRUCT
    
        .if uMsg == WM_INITDIALOG
                    invoke SendDlgItemMessage,hWin,0,SBM_SETRANGE,0,100
                    invoke SetFocus,hWin
    
        .elseif uMsg == WM_COMMAND
                 
		.ELSEIF uMsg == WM_PAINT
                invoke BeginPaint,hWin,ADDR ps
                mov hDC,eax
                invoke SetMapMode,hDC,MM_ANISOTROPIC
                invoke SetWindowExtEx,hDC,100,100,0
                invoke GetClientRect,hWin,ADDR rct
                invoke SetViewportExtEx,hDC,rct.right,rct.bottom,0
                invoke RoundedPath, hDC, NewPosition
    
        .elseif uMsg == WM_CLOSE
                        invoke EndDialog,hWin,NULL
   

        .endif
    
        xor eax,eax
        ret
    
ControlsMadness endp
    
SetControlsPosition proc hWin:DWORD  
        invoke SendDlgItemMessage,hWin,0,SBM_SETPOS,NewPosition,TRUE
        invoke InvalidateRect,hWin,0, 1
        
        ret
SetControlsPosition endp
    
RoundedPath proc hDC:DWORD, pCOORD:DWORD

    LOCAL lb:LOGBRUSH

        mov lb.lbStyle,BS_SOLID
        mov lb.lbColor,00000FFh
        mov lb.lbHatch,0
        invoke ExtCreatePen,PS_SOLID or PS_GEOMETRIC or PS_ENDCAP_ROUND or PS_JOIN_ROUND,10,ADDR lb,0,0
        mov hPen,eax
        invoke SelectObject,hDC,hPen
        mov oldPen,eax
        invoke StrokePath,hDC
        invoke DeleteObject,hPen
        invoke GetStockObject,BLACK_PEN
        invoke SelectObject,hDC,eax

        
        invoke MoveToEx,hDC,50,60,pCOORD
        invoke LineTo,hDC,40,50
        invoke LineTo,hDC,40,40
        invoke LineTo,hDC,50,30
        invoke LineTo,hDC,60,40
        invoke LineTo,hDC,60,50
        invoke LineTo,hDC,50,60

        invoke MoveToEx,hDC,10,10,pCOORD
        invoke LineTo,hDC,10,80
        invoke LineTo,hDC,80,80

        invoke SelectObject,hDC,oldPen 
        ret

RoundedPath endp
    
end start
Вот только у меня подозрение что тут много лишнего
первоначально не я просто код делал, я просто подредактировал чуток

Подскажи пожалуйста, вот ты давал код моделиста, какая функция там на перемещение и масштабирование.
Пи.Си. решил всётаки сам доделать эту лабу, а не ждать с моря погоды
zverozavr вне форума Ответить с цитированием
Старый 10.06.2010, 12:40   #19
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

zverozavr
Рисовать многоугольники отрезками, а потом двигать и масштабировать оперируя этими отрезками это онанизм чистейший, в WinAPI есть специальные функции для рисования многоугольников PolyDraw и PolyLine
Функция Polyline рисует набором отрезков, а PolyDraw оперирует вершинами, и та и другая получают в качестве одного из параметров ссылку на массив точек, прибавляя и убавляя к значениям, которых мы и получим и движение, и массштабирование, и вращение по нескольким осям этих прямоугольников
Код:
POINT poly[8];массив с координатами 8 точек
BYTE polytype[8];массив с описанием типов линий
poly[0].x=375; //координаты первой вершины
poly[0].y=375;
....//и так заполняем координаты всех восьми вершин
poly[7].x=400; //координаты восьмой вершины
poly[7].y =400;
//другой массив содержит режим рисования
polytype[0]=PT_LINETO;
... 
polytype[7]=PT_LINETO; 
PolyDraw(hdc, poly, polytype, 8); //рисуем восьмиугольник
POINT poly[4];
poly[0].x =10;
poly[0].y =30;
poly[1].x =30;
poly[1].y =30;
poly[2].x =30;
poly[2].y =60;
poly[3].x=10;
poly[3].y=30;
Polyline(hdc, poly , 4); рисуем четырехугольник
PS Для начала потренируйся на треугольнике...

Последний раз редактировалось Mikl___; 10.06.2010 в 12:50.
Mikl___ вне форума Ответить с цитированием
Старый 10.06.2010, 19:26   #20
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Цитата:
какая функция там на перемещение и масштабирование.
Две функции:
ResizeFigure
MoveFigure

Тут ещё один момент - я использовал float для хранении данных о вершинах фигур. А для функции Polygon нужны вершины в int.
Поэтому пересчёт точек при массштабировании и перемещении производился на сопроцесооре, а потом уже весь этот массив float сливался в массив int со всеми округлениями. Это делала функция ReloadPointFloatToInt. Такая метода позволяла сжимать сложные фигуры без потери точности.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рисование Granus Общие вопросы Delphi 2 24.12.2008 07:44
Рисование TriCERATOP Помощь студентам 5 28.11.2008 15:09
Рисование... HunterMan Win Api 10 30.04.2008 23:46