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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
ashumov

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

Цитата:
я ж самоучка-любитель

это уже немало!
 
я же просто научился пользоваться 16-ричным редактором, кое-что править и один раз получилось исключить лишнее в ассемблерном коде пользуясь комментариями автора, получил bootmgr.com запускающий  bootmgr с раздела FAT32 и как оказалось   bootmgr может запускать через boot.ini родные (от Microsoft) файлы ntldr, setupldr.bin и windiag

Всего записей: 156 | Зарегистр. 05-02-2007 | Отправлено: 19:25 30-12-2014
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
мне тоже удалось в win-pe самодельной пропатчить дллку, отключил одну подпрограмму для совместимости софта.  
http://rghost.ru/60065411
IDA 5 Free 5.0
 
 
https://ru.wikipedia.org/wiki/X86-64
если вот это почитать, получается что 64 битные команды для процессора действуют как расширенные. таким образом соблюдаетя полная совместимость кода с 32 битными программами. то есть 64 битный процессор точно так же переключается в защищённый режим как и 32 битный. биос конечно можно на любое *uefi заменить, и ничего не мешает получить доступ к большому винту в каком бы режиме процессор не работал даже в реальном режиме в котором возможно подключение винтов как съемных а они могут быть любого размера, потому что под досом всего лишь недоступно разделение процессов. так же как драйвер для хп на большие винты - из 2003 сервера. правда программы оболочки все равно криво с большими винтами работают там больше приходится менять чем один драйвер. или для той же хп написать драйвер использующий память за 4 гигабайтами. загрузится с такого устройства под биосом не получится, если не применить к биосу патч типа PLoP-а.
 

Цитата:
только частично, при больших терабайтах арифметика не позволит  

позволяет арифметика, под досом возможны любые 32 битные команды процессора, например адресация памяти больше 1 мбайта. если 64 битные являются лишь бонусом их тоже можно использовать у них номера кодов разные
 
 
Booting from GPT
http://www.rodsbooks.com/gdisk/booting.html

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 23:49 30-12-2014 | Исправлено: bomzzz, 03:42 01-01-2015
YuliyaMc

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

Всего записей: 2 | Зарегистр. 24-04-2015 | Отправлено: 01:38 24-04-2015
Frank_Sinatra



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет знатокам! Ребят, помогите, плиз. Собрал трейнер для игрушки с помощью Game Trainer Studio, теперь хочется вставить туда ссылку на домашнюю страницу, но понятия не имею как это сделать. Надо, чтобы ссылка открывалась в браузере по умолчанию. Поправьте код как надо, пожалуйста. Сам я в этом деле ноль.
 
[spoiler=код]

Код:
; #########################################################################
;
; This Is My Trainer Template Created For The Game Trainer Studio (Xeta)
;
; This Is Based On A MASM Example.
;
; #########################################################################
 
.386
.model flat, stdcall ; 32 bit memory model
option casemap :none ; case sensitive
 
include trainer.inc ; local includes for this file
 
 
 
; #########################################################################
 
.data
 
 
LabelHandle5500 dd ?
LabelHandle5501 dd ?
LabelHandle5502 dd ?
 
; ### Constants Below
 
; ### Constants Above
 
; ### Bytes Below
 
 
 
HotKey00000 db 000h
db 001h
db 000h
db 001h
HotKey00001 db 001h
db 001h
db 001h
db 000h
; ### Bytes Above
 
; ### Button Messages Below
 
 
 
; ### Button Messages Above
 
WindCap db "Game.exe",0
szDisplayName db 'Trainer-2',0
.code
 
start:
invoke GetModuleHandle, NULL
mov hInstance, eax
 
invoke GetCommandLine
mov CommandLine, eax
 
invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
invoke ExitProcess,eax
 
; #########################################################################
 
WinMain proc hInst WORD,
hPrevInst WORD,
CmdLine WORD,
CmdShow WORD
 
;====================
; Put LOCALs on stack
;====================
 
LOCAL wc :WNDCLASSEX
LOCAL msg :MSG
LOCAL Wwd WORD
LOCAL Wht WORD
LOCAL Wtx WORD
LOCAL Wty WORD
 
;==================================================
; Fill WNDCLASSEX structure with required variables
;==================================================
 
invoke LoadIcon,hInst,500 ; icon ID
mov hIcon, eax
 
szText szClassName,"Trainer_Class"
 
mov wc.cbSize, sizeof WNDCLASSEX
mov wc.style, CS_HREDRAW or CS_VREDRAW \
or CS_BYTEALIGNWINDOW
mov wc.lpfnWndProc, offset WndProc
mov wc.cbClsExtra, NULL
mov wc.cbWndExtra, NULL
m2m wc.hInstance, hInst
mov wc.hbrBackground, COLOR_BTNFACE+1
mov wc.lpszMenuName, NULL
mov wc.lpszClassName, offset szClassName
m2m wc.hIcon, hIcon
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor, eax
m2m wc.hIconSm, hIcon
 
invoke RegisterClassEx, ADDR wc
 
;================================
; Centre window at following size
;================================
 
mov Wwd, 209 ; Dialog Width
mov Wht, 118 ; Dialog Height
 
invoke GetSystemMetrics,SM_CXSCREEN
invoke TopXY,Wwd,eax
mov Wtx, eax
 
invoke GetSystemMetrics,SM_CYSCREEN
invoke TopXY,Wht,eax
mov Wty, eax
 
invoke CreateWindowEx,WS_EX_LEFT,
ADDR szClassName,
ADDR szDisplayName,
WS_MINIMIZEBOX or WS_OVERLAPPED or WS_SYSMENU,
Wtx,Wty,Wwd,Wht,
NULL,NULL,
hInst,NULL
mov hWnd,eax
 
invoke ShowWindow,hWnd,SW_SHOWNORMAL
invoke UpdateWindow,hWnd
 
;===================================
; Loop until PostQuitMessage is sent
;===================================
 
StartLoop:
invoke GetMessage,ADDR msg,NULL,0,0
cmp eax, 0
je ExitLoop
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
jmp StartLoop
ExitLoop:
 
return msg.wParam
 
WinMain endp
 
; #########################################################################
 
WndProc proc hWin WORD,
uMsg WORD,
wParam WORD,
lParam WORD
 
LOCAL var WORD
LOCAL caW WORD
LOCAL caH WORD
LOCAL color WORD
LOCAL hDC WORD
LOCAL Rct :RECT
LOCAL Ps AINTSTRUCT
LOCAL buffer1[128]:BYTE
LOCAL buffer2[128]:BYTE
LOCAL lfnt :LOGFONT
LOCAL psd AGESETUPDLG
LOCAL pd RINTDLG
LOCAL RectB :RECT
 
.if uMsg == WM_COMMAND
MOV EAX, wParam
.if wParam == 499
 
 
.endif
.elseif uMsg == WM_CTLCOLORSTATIC
JMP @WM_CTLCOLOREDIT
.elseif uMsg == WM_CTLCOLOREDIT
@WM_CTLCOLOREDIT:
.elseif uMsg == WM_DRAWITEM
.elseif uMsg == WM_CREATE
 
 
MOV HotKeyMiniToggle, TRUE
szText font1,'MS Sans Serif'
invoke CreateFont,8,5,0,0,500,0,0,0, \
DEFAULT_CHARSET,0,0,0,\
DEFAULT_PITCH,ADDR font1
mov hFont, eax
 
Invoke SetTimer, hWin, 1, 100, 0 ; HotKey Timer
Invoke SetTimer, hWin, 2, 300, 0 ; EditBox Timer 1
Invoke SetTimer, hWin, 3, 300, 0 ; EditBox Timer 2
Invoke SetTimer, hWin, 4, 100, 0 ; EditBox Freeze Timer
 
 
 
szText lbl11, "Домашняя страница"
invoke Static,ADDR lbl11,hWin,48,56,116,17,5500
mov LabelHandle5500, eax
 
szText lbl12, "Trainer for Game"
invoke Static,ADDR lbl12,hWin,56,8,92,17,5501
mov LabelHandle5501, eax
 
szText lbl13, "F12 - бесконечные патроны"
invoke Static,ADDR lbl13,hWin,24,32,148,17,5502
mov LabelHandle5502, eax
 
.elseif uMsg == WM_TIMER
.If wParam == 1 ; ### Timer Below ###
 
 
Invoke GetKeyState, VK_HOME
mov HotBuffer1, eax
.if HotBuffer1 > 1
Invoke TrainerEngineRead, NULL, Offset WindCap, 001C0F965h, 1
MOV Read, EAX
.If Read == 001h
Invoke TrainerEngine, NULL, Offset WindCap, 001C0F965h, Offset HotKey00000, 4
.Else
Invoke TrainerEngine, NULL, Offset WindCap, 001C0F965h, Offset HotKey00001, 4
.EndIf
.endif
 
 
 
.Endif ; ### Timer Above ###
 
.If wParam == 2 ; ### Timer Below ###
 
.Endif ; ### Timer Above ###
 
.If wParam == 3 ; ### Timer Below ###
 
 
 
 
.Endif ; ### Timer Above ###
.If wParam == 4 ; ### EBFreeze Timer Below ###
 
.Endif ; ### EBFreeze Timer Above ###
 
 
 
.elseif uMsg == WM_HOTKEY
.elseif uMsg == WM_PAINT
invoke BeginPaint,hWin,ADDR Ps
mov hDC, eax
invoke Paint_Proc,hWin,hDC
invoke EndPaint,hWin,ADDR Ps
return 0
.elseif uMsg == WM_DESTROY
invoke PostQuitMessage,NULL
return 0
.endif
 
invoke DefWindowProc,hWin,uMsg,wParam,lParam
 
ret
 
WndProc endp
 
; ########################################################################
 
TopXY proc wDim:DWORD, sDim:DWORD
 
shr sDim, 1 ; divide screen dimension by 2
shr wDim, 1 ; divide window dimension by 2
mov eax, wDim ; copy window dimension into eax
sub sDim, eax ; sub half win dimension from half screen dimension
 
return sDim
 
TopXY endp
 
; #########################################################################
 
Paint_Proc proc hWin:DWORD, hDC:DWORD
 
LOCAL btn_hi WORD
LOCAL btn_lo WORD
LOCAL Rct :RECT
 
invoke GetSysColor,COLOR_BTNHIGHLIGHT
mov btn_hi, eax
 
invoke GetSysColor,COLOR_BTNSHADOW
mov btn_lo, eax
 
return 0
 
Paint_Proc endp
 
; ########################################################################
 
OnDrawItem proc uses ebx idCtl:DWORD,pdis:DWORD,pcol:DWORD,pbkcol:DWORD
LOCAL tbuff[20h]:byte
mov ebx,pdis
assume ebx:ptr DRAWITEMSTRUCT
.if [ebx].CtlType == ODT_BUTTON
.if pbkcol == 0
.else
invoke SetBkMode,[ebx].hdc,OPAQUE
Invoke SetBkColor,[ebx].hdc,pbkcol
Invoke CreateSolidBrush, pbkcol
invoke FillRect,[ebx].hdc,addr [ebx].rcItem,eax
.endif
invoke SetTextColor,[ebx].hdc,pcol
.if ([ebx].itemState & ODS_SELECTED)
invoke DrawEdge,[ebx].hdc,addr [ebx].rcItem,BDR_SUNKEN,BF_RECT
invoke OffsetRect,addr [ebx].rcItem,1,1
.else
invoke DrawEdge,[ebx].hdc,addr [ebx].rcItem,EDGE_RAISED,BF_RECT
.endif
invoke GetWindowText,[ebx].hwndItem,addr tbuff,sizeof tbuff
lea edx,[ebx].rcItem
lea ecx,tbuff
invoke DrawText,[ebx].hdc,ecx,eax,edx,DT_CENTER or DT_VCENTER or DT_SINGLELINE or DT_NOCLIP
.if [ebx].itemState & ODS_FOCUS
invoke InflateRect,addr [ebx].rcItem,-4,-4
invoke DrawFocusRect,[ebx].hdc,addr [ebx].rcItem
.endif
.endif
assume ebx:nothing
ret
OnDrawItem endp
 
; ########################################################################
end start

[/spoiler]
 
Блин, спойлер не пашет что-ли...? И в коде смайлики рисует...
 
Если у кого вдруг возникнет желание помочь, вот на всякий случай асм-файл
 
ЗЫ. В принципе, для образца можно исходник простой пустой болванки с кликабельной ссылкой, открывающейся в браузере по умолчанию. Мне главное въехать в принцип написания такого кода.

Всего записей: 909 | Зарегистр. 02-08-2005 | Отправлено: 19:13 25-04-2015 | Исправлено: Frank_Sinatra, 18:47 27-04-2015
ptr73

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frank_Sinatra
вам на родном форуме быстрее ответят, сомневаюсь, что тут найдутся знатоки по по GTS

Всего записей: 253 | Зарегистр. 03-07-2007 | Отправлено: 07:47 27-04-2015
Frank_Sinatra



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

Цитата:
вам на родном форуме быстрее ответят, сомневаюсь, что тут найдутся знатоки по по GTS

Game Trainer Studio давно умер, к сожалению, и своего форума у него нет. Да и тут надо быть знатоком не по проге, а знатоком в Асме.

Всего записей: 909 | Зарегистр. 02-08-2005 | Отправлено: 18:47 27-04-2015
mmotop20oo12



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, начали проходить i8080, хочу у вас узнать команду которая, запишет число 11 в адрес ячейки памяти, который находится в паре hl. Спасибо

Всего записей: 327 | Зарегистр. 10-06-2014 | Отправлено: 15:56 28-04-2015
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mvi m, 11

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 16:12 28-04-2015
mmotop20oo12



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
С декрементом тоже проблема...  Я нашёл команду dcrm {дек ячейки памяти} в 1ом байте 35, тогда если у меня адрес яч памяти 02а4 мне писать во 2ой байт а4 а в 3ий 02?

Всего записей: 327 | Зарегистр. 10-06-2014 | Отправлено: 16:14 28-04-2015
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нет,
lxi h, 02a4h
dcr m

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 16:27 28-04-2015 | Исправлено: ne_viens, 16:27 28-04-2015
akaGM

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

Цитата:
i8080

здорово, а 4004 уже прошли?
так к последнему курсу и до 8086 дойдёте...

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 23:56 28-04-2015
ptr73

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
зачем 8086? пусть лучше 8051 учат. на ассемблере его программируют чаще )

Всего записей: 253 | Зарегистр. 03-07-2007 | Отправлено: 05:47 29-04-2015
MERCURY127



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

Цитата:
начали проходить i8080
, я извиняюсь, но зачем??? учите сразу Z80 или PIC или AVR, в них команд больше, изврата меньше...

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 11:00 29-04-2015
ptr73

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
тогда уж лучше системы команд ARM процессоров учить, перспективнее
но проблема как всегда в преподавателях, преподают прошлый век, новые технологии освоить не в состоянии

Всего записей: 253 | Зарегистр. 03-07-2007 | Отправлено: 11:55 29-04-2015
Prober

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Базовые принципы и подходы без разницы на каком процессоре изучать. Тем более, что даже с наипримитивнейшей системой команд процессора 8080 не все самостоятельно могут разобраться и пишут вопросы на форумах.

Всего записей: 681 | Зарегистр. 01-11-2006 | Отправлено: 12:17 29-04-2015
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Наборы инструкций разных процессоров могут различаться весьма радикально, соответственно и алгоритмы написания программ на ассемблере. Например, если на 8051 при помощи общеизвестного JNZ условный переход выглядит весьма привычно:
 
JNZ    L2
;do something if ZERO
L2
;continue program
 
, то на PICе, который при условии умеет только пропускать следующую инструкцию, картина меняется:
 
BTFSS    STATUS,Z
GOTO    L1
;do something if ZERO
L1
;continue program
 
 

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 13:30 29-04-2015
mmotop20oo12



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MERCURY127
Ты не мне это говори, а учителям-старперам и министерству образования

Всего записей: 327 | Зарегистр. 10-06-2014 | Отправлено: 23:58 01-05-2015
ptr73

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
стартаперы vs старперы - never ending story

Всего записей: 253 | Зарегистр. 03-07-2007 | Отправлено: 09:05 02-05-2015
xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
Привет . Пишу Вам с Windows 10 прям Microsoft Edge.
 

Код:

 
С уважением,
Ваш ученик.

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 20:39 01-08-2015
Snouphruh



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

Цитата:
Здравствуйте, начали проходить i8080, хочу у вас узнать команду которая, запишет число 11 в адрес ячейки памяти, который находится в паре hl. Спасибо  

 
HL? ты на Z80 программируешь?
 
LD A, 11
LD [HL], A
 

Всего записей: 7 | Зарегистр. 13-04-2011 | Отправлено: 11:39 14-08-2015
Открыть новую тему     Написать ответ в эту тему

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