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

» Assembler

Автор: ashumov
Дата сообщения: 29.12.2014 10:59
MERCURY127

вот более детально:
DUET + UEFI Shell = Intel Tianocore OS


Цитата:
само в инет ходит

пока что только на презентациях разных международных конференций


Цитата:
с блэкджеком и


Tetris, Snake и др...

Ирония не уместна, прежде чем создать страницу мною было просмотрены UEFI FAQ от Intel Microsoft НP Dell а также сайты Рунета программистов пишущих для UEFI
Илья Манусов
Сергей (Slice) Исаков
Евгений Яковлев

а также интересные идеи относительно GPT
Сергей Гончаров

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

повторяю свой вопрос еще раз

Возможен ли NTFScheck_x64.efi, запускающий 64-битный autochk.exe ?
Автор: MERCURY127
Дата сообщения: 29.12.2014 11:12

Цитата:
Возможен ли NTFScheck_x64.efi, запускающий 64-битный autochk.exe
думаю, возможен, но как реализовать — пока не представляю. у него в импорте одна только ntdll.dll, но сможет ли она работать без HAL? вот в чем вопрос. в нативном режиме я не разбирался, как там IO выполняется — понятия не имею.
Автор: bomzzz
Дата сообщения: 29.12.2014 11:25
hal и есть ядро. не может.

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

Добавлено:
то есть отличия состоят в этой самой консоли в выводе в нее, и отсутствии функций удобных многих обращаешься только напрямую к функциям ядра, зато нет ограничений пользователя
Автор: ashumov
Дата сообщения: 29.12.2014 11:42

Цитата:
сможет ли она работать без HAL?


сможет, дискета Марка Руссиновича Winternals NTFSCHK не содержит hal.dll
Использована мною в Windows 7 multiboot floppy 2.88 disk image
Ecли же вы заинтересовались этим вопросом то может попробуете создать run.efi

Имеется образец http://blog.hansenpartnership.com/wp-uploads/2013/
с исходным кодом

Нужен Run.efi , чтобы не мучаться с командной строкой Shell или конфигурацией rEFInd

EFI меню с выводом списка файлов и возможностью их запуска Enter-ом и с параметрами ctrl-enter

Автор: MERCURY127
Дата сообщения: 29.12.2014 11:47
ashumov
Цитата:
сможет, дискета Марка Руссиновича Winternals NTFSCHK не содержит hal.dll
а в х32 режиме оно через инт13 пашет, или нативно может, через порты?
Автор: ashumov
Дата сообщения: 29.12.2014 12:30
не знаю, не компетентен, не программист
есть 2 реализации запуска 32 битного autochk.exe:
Руссиновича ntfschk.exe (ntdll + файлы локализации ) и chkdskg.exe - последний владелец Avira, запускает autochk.exe непосредственно в своих сборках сжимал UPX-ом

Добавлено:

Цитата:
или нативно может, через порты?

скорее всего да, в моей сборке Windows XP Native Mode (Recovery Console + native shell) как то запускается, может быть и ошибаюсь

по моему мнению (не ИМХО) autochk.exe сам представляет собой минимальную ОС только с одной функцией
Автор: MERCURY127
Дата сообщения: 29.12.2014 20:04
ashumov
Цитата:
по моему мнению (не ИМХО) autochk.exe сам представляет собой минимальную ОС только с одной функцией
это хорошо.
попробую, мож что и выйдет собрать.
PS: скачал с блога примеры. и сразу линукс и ключи...
ну ладно ключи, у меня секурбута нет, пока мимо.
а как увязать ДЛЛ и Линукс? я так понимаю, надо загрузить этот ехе в память (как? просто выделяем область памяти, читаем туда файл, и передаем управление?), но потом то в него нужно эту дллшку отобразить, импорты там отрезолвить... в винде этим загрузчик ехе занимается, а тут его самим нужно писать? или УЕФИ ядро (то, что в фирмваре сидит) это уже умеет?
далее идет менеджмент памяти. прога наверняка будет выделять и освобождать память... вопрос лишь в том, сама будет, или этим нтдлл занимается? да кто бы не занимался, ему как то нужно передать инфу, что, мол, доступно столько то по такому то адресу... я так понимаю, в винде этим занимается bootmgr, который 374 кб, стартует в 16тибитном режиме, читает все, что нужно и переводит машину в защищенный режим. в общем, простейший дос экстендер а с УЕФИ как?
спецфикацию УЕФИ читал давно и очень бегло

Добавлено:
этот бутмгр какой то странный... вроде и ПЕ есть, а хиев его не распознает.

Добавлено:
йяху, там еще и байткод бывает... http://jelezo.com.ua/news/soft/uefimark_i_efi_byte_code.html

Добавлено:
jwasm этот uefimark возьмет?

Добавлено:
тьфу ты, опять фасм...
Автор: ashumov
Дата сообщения: 29.12.2014 21:56

Цитата:
УЕФИ ядро

есть программное DUET причем две реализации
индийца Keshav Padram Amburay
и второй автор Сергей (Slice) Исаков
"модифицированный DUET. Причём
исправлений по существу вряд ли наберётся на 1%, но этот процент обеспечивает
кардинальное отличие от Дуета – Кловер работает для той цели, для которой
предназначен. Если кто-то полагает, что я весь год занимался Ннёй, редактируя
DUET, и что достаточно взять ванильный, и добавить к нему AppleSim, то
счастливого пути!" Клевер-цвета-хаки-2444.pdf
железное же ядро(firmware) скорее всего у разных производителей разное
из 4-х еfi игр от MSI на ноутбуке HP пошла только одна остальные обругались на отсутствие протокола HII
Автор: bomzzz
Дата сообщения: 30.12.2014 01:21

Цитата:
Operating System Version 5.01
Image Version 5.01
Subsystem Version 5.01
Subsystem 0001 (Native)

autochk.exe
autofmt.exe
Автор: MERCURY127
Дата сообщения: 30.12.2014 10:27
bomzzz, и шо с того? задача в том и состоит, чтоб загрузить энтую ntdll из uefi shell

Добавлено:
мда. нашел тут статью:
http://www.e-reading.link/bookreader.php/89564/Russinovich%2C_Solomon_-_2.Vnutrennee_ustroiistvo_Windows_%28gl._5-7%29.html
Цитата:
Как только пользователь выбирает один из вариантов, загрузчик переходит в подкаталог в разделе EFI System, соответствующий выбранному варианту, и загружает несколько других файлов, необходимых для продолжения загрузки: Fpswa.efi и Ia641dr.efi. ... Ia641dr.efi отвечает за загрузку Ntoskrnl.exe, Hal.dll и драйверов, применяемых на этапе загрузки. Далее процесс загрузки идет так же, как и на платформе x86 или x64.
я в курсе, что иа64 — это другое (Титаник), но ЕФИ то оттуда пришло. значит, какая то аналогия есть.
Надо побудет посмотреть ефи-бут от 8 и 10. там, в отличие от 7, с ефи дружат.

Добавлено:
дочитал. меня терзают смутные сомнения... да, ntdll не имеет явных импортов, зато неявно пользуется уже инициализированными на момент ее загрузки ntoskrnl, hal & bootvid, как минимум.
так что, гипотетический run.efi должен это все эмулировать
Автор: ashumov
Дата сообщения: 30.12.2014 11:36
wrfsh
my worklog



"Анализ причин популярности Android и закрытости UEFI рисует неутешительную перспективу для низкоуровневого программного обеспечения.
Отказ компании Intel, как главного идеолога разработки, от рыночных принципов формирования пользовательских приложений становится препятствием на пути развития UEFI-интерфейса...Надеяться на расширение перечня программных продуктов, утилит и сервисных средств не приходится, пока среда разработки UEFI остается замкнутой."
http://jelezo.com.ua/news/publikacii/povtorit_li_uefi_uspeh_android.html

Добавлено:

Цитата:
гипотетический run.efi


наверное моя вина в том, что смешал все в одну кучу
run.efi и autochk.exe

Оставлял такой комментарий
"Your HashTool.efi can browse EFI media in Text User Interface.
It seems that many users would be useful Run.efi for browse EFI media and launch EFI applications."
http://blog.hansenpartnership.com/uefi-secure-boot/
Автор: bomzzz
Дата сообщения: 30.12.2014 12:45
это значит что autochk.exe нативная программа виндовс
Автор: MERCURY127
Дата сообщения: 30.12.2014 14:43
ashumov
Цитата:
wrfsh
my worklog
извините, я вряд ли смогу вам чем то помочь мозгов не хватает я ж самоучка-любитель, не профи. теории у меня мало, я даже плюсы знаю хуже, чем просто си и асм.
могу помочь тестами на реальном ефишном железе. в частности, охота проверить Localized input and output в наличии: i7-3770, Asrock Z68 Pro3-M (with VT-d), PS/2 kbd, USB mouse.
Автор: ashumov
Дата сообщения: 30.12.2014 18:25

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

это уже немало!

я же просто научился пользоваться 16-ричным редактором, кое-что править и один раз получилось исключить лишнее в ассемблерном коде пользуясь комментариями автора, получил bootmgr.com запускающий bootmgr с раздела FAT32 и как оказалось bootmgr может запускать через boot.ini родные (от Microsoft) файлы ntldr, setupldr.bin и windiag
Автор: bomzzz
Дата сообщения: 30.12.2014 22:49
мне тоже удалось в 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
Автор: YuliyaMc
Дата сообщения: 24.04.2015 01:38
[more] Здравствуйте. У меня такая задача.
Подсчитать в массиве количество элементов, равных введённому N

Я решила, но вывод на экран не правильный.
Положительное+положительное=положительное - выводит правильно.
Положительное+отрицательное=положительное - выводит правильно
Отрицательное+положительное= отрицательное -выводит НЕ правильно
Отрицательное+отрицательное= отрицательное -выводит НЕ правильно
Помогите, пожалуйста, разобраться. В emu8086 все это делаю



Код:
; You may customize this and other start-up templates;
; The location of this template is c:\emu8086\inc\0_com_template.txt

org 100h

; add your code here
cr= 0dh ;kod simvola, vozvrat karetki(klavishi Enter)

lf= 0ah ;perevod stroki





begin:


lea dx,zapros ;soo
mov ah,9
int 21h


mov cx,3

mov si,0

start1:
push cx
push si

mov ah,0ah
lea dx,string
int 21h ;vvod stroki


xor ax,ax

lea si,string+2

;ñèìâîë ââåäåííîé ñòðîêè

mov negflag, ax

cmp byte ptr [si],'-'

jne m2

not negflag



inc si

jmp m

m2:
cmp byte ptr[ si],'+'

jne m

inc si



m:
cmp byte ptr [si],cr



je ex1

cmp byte ptr[ si], '0'





cmp byte ptr[si],'9'



ja err

mov bx,10



mul bx

sub byte ptr[si],'0'

add al,[si]

adc ah,0

inc si

jmp m



Err: lea dx,errmsg

mov ah,9

int 21h

jmp start1

ex1:
cmp negflag,0

je ex

neg ax

ex:

mov si,0
pop si
pop cx


mov mas[si],al

inc si
mov ah,9
lea dx, null
int 21h
loop start1

start2:
mov bx,0

lea bx, mas
mov cx, 3
mov ax,0

cikl:

add ax, [bx]

inc bx

loop cikl

mov cl,al ;kopiruem

xor ax,ax

mov ah,9 ;vivod na ekran soobsheniya
lea dx, rez
int 21h

xor ax,ax

mov ax,cx ;kopiruem



;vivod

push -1 ;soxranim priznak kontsa chisla v steke

mov cx,10 ;pomeshaem v register delitel

cmp ax, 0 ;proveryaem znak chisla

jge l ;esli + , to perexodim

neg ax ;inache menyaem znak chisla

push ax ;sozranyaem chislo pered vizovom funktsii

mov ah, 2 ;vivod na ekran znaka "-"
mov dl, '-'
int 21h

pop ax ;pomeshaem chislo v ax

L: xor dx,dx ;otshishaetsya registr

div cx ;delim chislo v ax na 10:chastnoe v ax, ostatok v dx



push dx ;pomeshaem v register

cmp ax,0 ; ostalsya 0?

jne L ;esli net, to prodoljaem

mov ah,2h

L2: pop dx

cmp dx,-1

je e ;esli ravno, to perexodim

add dl,'0' ;preobrazovanie

int 21h ; vivod

jmp L2 ;prodoljit

e: mov ah,0
int 16h





ret


zapros db 'Vvedite element',cr,lf,'$'


string db 255, 0, 255 dup (?)

errmsg db 'Nedopustim simvol',cr,lf,'$'

null db 13,10, '$'
negflag dw ?

rez db 'Rezultat slojeniya',cr,lf,'$'
mas db 3 dup (?)
i db 0
len dw $-mas


end begin


Автор: Frank_Sinatra
Дата сообщения: 25.04.2015 19:13
Привет знатокам! Ребят, помогите, плиз. Собрал трейнер для игрушки с помощью 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
Автор: ptr73
Дата сообщения: 27.04.2015 07:47
Frank_Sinatra
вам на родном форуме быстрее ответят, сомневаюсь, что тут найдутся знатоки по по GTS
Автор: Frank_Sinatra
Дата сообщения: 27.04.2015 18:47

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

Game Trainer Studio давно умер, к сожалению, и своего форума у него нет. Да и тут надо быть знатоком не по проге, а знатоком в Асме.
Автор: mmotop20oo12
Дата сообщения: 28.04.2015 15:56
Здравствуйте, начали проходить i8080, хочу у вас узнать команду которая, запишет число 11 в адрес ячейки памяти, который находится в паре hl. Спасибо
Автор: ne_viens
Дата сообщения: 28.04.2015 16:12
mvi m, 11
Автор: mmotop20oo12
Дата сообщения: 28.04.2015 16:14
С декрементом тоже проблема... Я нашёл команду dcrm {дек ячейки памяти} в 1ом байте 35, тогда если у меня адрес яч памяти 02а4 мне писать во 2ой байт а4 а в 3ий 02?
Автор: ne_viens
Дата сообщения: 28.04.2015 16:27
Нет,
lxi h, 02a4h
dcr m
Автор: akaGM
Дата сообщения: 28.04.2015 23:56

Цитата:
i8080

здорово, а 4004 уже прошли?
так к последнему курсу и до 8086 дойдёте...
Автор: ptr73
Дата сообщения: 29.04.2015 05:47
зачем 8086? пусть лучше 8051 учат. на ассемблере его программируют чаще )
Автор: MERCURY127
Дата сообщения: 29.04.2015 11:00

Цитата:
начали проходить i8080
, я извиняюсь, но зачем??? учите сразу Z80 или PIC или AVR, в них команд больше, изврата меньше...
Автор: ptr73
Дата сообщения: 29.04.2015 11:55
тогда уж лучше системы команд ARM процессоров учить, перспективнее
но проблема как всегда в преподавателях, преподают прошлый век, новые технологии освоить не в состоянии
Автор: Prober
Дата сообщения: 29.04.2015 12:17
Базовые принципы и подходы без разницы на каком процессоре изучать. Тем более, что даже с наипримитивнейшей системой команд процессора 8080 не все самостоятельно могут разобраться и пишут вопросы на форумах.
Автор: ne_viens
Дата сообщения: 29.04.2015 13:30
Наборы инструкций разных процессоров могут различаться весьма радикально, соответственно и алгоритмы написания программ на ассемблере. Например, если на 8051 при помощи общеизвестного JNZ условный переход выглядит весьма привычно:

JNZ    L2
;do something if ZERO
L2
;continue program

, то на PICе, который при условии умеет только пропускать следующую инструкцию, картина меняется:

BTFSS    STATUS,Z
GOTO    L1
;do something if ZERO
L1
;continue program


Автор: mmotop20oo12
Дата сообщения: 01.05.2015 23:58
MERCURY127
Ты не мне это говори, а учителям-старперам и министерству образования

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384

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


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