FAQ (Всякие мелочи), страница 4
Описание файла
Файл "FAQ" внутри архива находится в папке "Всякие мелочи". Текстовый-файл из архива "Всякие мелочи", который расположен в категории "". Всё это находится в предмете "системное программирование" из 4 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "системное программирование" в общих файлах.
Просмотр 4 страницы текстового-файла онлайн
mov ax,300fh
and al,dl
aaa
aad 11h
stosb
loop @@L1
pop cx
ret
byte2hex endp
word2hex proc near
push cx
mov cx,2
@@L1: rol dx,8
call byte2hex
loop @@L1
pop cx
ret
word2hex endp
dword2hex proc near
mov cx,2
@@L1: rol edx,16
call word2hex
loop @@L1
ret
dword2hex endp
>Åùå:
Ïðåîáðàçóåò hex-öèôðó â AL â ASCII-êîä
Âõîä: AL - hex-öèôðà (00h - 0Fh)
Âûõîä: AL - ASCII - êîä ñèìâîëà.
cmp al,10
sbb al,69h
das
Âîò è âñ¸!
Ïîñëå SBB ÷èñëà 0-9 ïðåâðàùàþòñÿ â 96h - 9Fh, à ÷èñëà 0Ah - 0Fh - â 0A1h -
0A6H. Çàòåì DAS âû÷èòàåò 66h èç ïåðâîé ãðóïïû ÷èñåë, ïåðåâîäÿ èõ â 30h - 39h, è
60h èç âòîðîé ãðóïïû ÷èñåë, ïåðåâîäÿ èõ â 41h - 46h
>À âîò íàèáîëåå î÷åâèäíûé íî íåìíîãî ìåíåå áûñòðûé è óäîáíûé ñïîñîá: êîìàíäà
XLATB. Îíà ïîìåùàåò â AL áàéò èç òàáëèöû â ïàìÿòè ïî àäðåñó ES:BX (èëè ES:EBX)
ñî ñìåùåíèåì îòíîñèòåëüíî íà÷àëà òàáëèöû ðàâíûì AL.
Ïðèìåð:
Âõîä: AL - hex-öèôðà (00h - 0Fh)
ES - ñåãìåíòíûé àäðåñ òàáëèöû.
Âûõîä: AL - ascii-êîä ñèìâîëà.
 ñåãìåíòå êîäà:
lea bx,htable
xlatb
 ñåãìåíòå äàííûõ:
htable db "0123456789ABCDEF"
Âîò è âñå.
---------------------------------------- ------------------------------------
Q28: À êàê ñëèíêîâàòü äðàéâåð óñòðîéñòâà (sys, èëè ïðîñòî ñäåëàòü ôàéë ñ
org0?)
A: Âîò òàê:
tasm driver.asm /m4
tlink driver.obj, driver.sys /t
> ^ îáðàòèòå âíèìàíèå, ýòî ñàìîå ãëàâíîå :)
p.s. Åñòü îäíà òîíêîñòü, íà êîòîðóþ ÿ íàïîðîëñÿ è èìåë ìíîãî ïðîáëåì.
Òîíêîñòü âîò â ÷åì. Åñëè ó âàñ tlink âûçûâàåòñÿ ÷åðåç áàòíèê, òî
ñëèíêîâàòü äðàéâåð âû íå ñìîæåòå, òàê êàê áàòíèê ïðè ðàçáîðå ïàðàìåòðîâ
%1 %2 è ò.ï. ÍÅ ïåðåäàñò tlink'ó ñèìâîë çàïÿòîé, êîòîðàÿ çäåñü èãðàåò
ðåøàþùóþ ðîëü. Òàê ÷òî ëèíêóéòå áåç áàòíèêà, ëèáî â íåì ÿâíî íàïèøèòå
'tlink driver.obj, driver.bin /t'
---------------------------------------- ------------------------------------
Q29: Ïðîãðàììà âûïîëíÿåòñÿ ïîä Turbo Debugger'îì.
À åñëè å¸ çàïóñòèòü áåç íåãî, òî îíà âèñíåò/ðàáîòàåò íåïðàâèëüíî.
Q29: Ïðîãðàììà âûïîëíÿåòñÿ â îïåðàöèîííîé ñèñòåìå X.
À â îïåðàöèîííîé ñèñòåìå Y - âèñíåò.
A: Âîçìîæíàÿ ïðè÷èíà - ïðîãðàììà ïðåäïîëàãàåò, ÷òî ðåãèñòð AA èìååò çíà÷åíèå
BB ïðè ñòàðòå, à èíèöèàëèçàöèÿ ðåãèñòðîâ â ðàçëè÷íûõ ÎÑ è îòëàä÷èêàõ ìîæåò
îòëè÷àòüñÿ. Ðåãèñòðû íóæíî èíèöèàëèçèðîâàòü ñàìîìó, íå ïîëàãàÿñü íà òî,
÷òî ïðè ñòàðòå â íèõ äîëæíî áûòü ÷òî-òî çàïèñàíî. Èñêëþ÷åíèå èç ýòîãî
ïðàâèëà - ñåãìåíòíûå ðåãèñòðû.
---------------------------------------- ------------------------------------
Q30: À êàê ïîä Windows íà àññåìáëåðå ïèñàòü?
A: ×òîáû ïèñàòü íà àññåìáëåðå ïîä Windows. íóæåí MASM 5 for Windows
(http://win32asm.newmail.ru/), ëèáî TASM 5 ñ include-ôàéëàìè.
Ïðèìåð ïðîãðàììû íà Tasm'å:
(êîììåíòàðèè - Anatoly Romashkin)
;tasm32 /m /ml file.asm - åñëè íåò tasm32, òî ìîæíî ïîïpîáîâàòü tasm 4.1
;tlink32 /c file.obj
..386
..model flat, stdcall
includelib import32.lib
extrn MessageBoxA:proc
extrn ExitProcess:proc
o equ offset
MB_OK equ 0
..data ; y ìåíÿ tasm 4.1 ìîã ãëþ÷èòü, åñëè íåò äàííûõ
MsgCaption db 'Qwerty',0
MsgText db 'Hello, World!',0
..code
start: call MessageBoxA, 0, o MsgText, o MsgCaption, MB_OK
call ExitProcess, 0
end start
Ïðèìåð êîíñîëüíîé ïðîãðàììû:
;tasm32 /m /ml file.asm - åñëè íåò tasm32, òî ìîæíî ïîïpîáîâàòü tasm 4.1
;tlink32 /c /ap file.obj
..386
..model flat, stdcall
includelib import32.lib
extrn ExitProcess:proc
extrn GetStdHandle:proc
extrn WriteFile:proc
extrn ReadFile:proc
extrn SetConsoleMode:proc
o equ offset
STD_INPUT_HANDLE equ -10
STD_OUTPUT_HANDLE equ -11
MB_OK equ 0
..data ; y ìåíÿ tasm 4.1 ìîã ãëþ÷èòü, åñëè íåò äàííûõ
MsgText db 'Hello, World!'
MsgTextLen=$-MsgText
hIn dd 0
bWritten dd 0
Buff db 0
BuffLen=$-Buff
..code
start:
call GetStdHandle, STD_OUTPUT_HANDLE
;ïîëy÷àþ ñòàíäàpòíûé õýíäë â eax
call WriteFile, eax, o MsgText, MsgTextLen, o bWritten, 0
;ïèøy â stdout
call GetStdHandle, STD_INPUT_HANDLE
mov hIn, eax
call SetConsoleMode, eax, 0
;yñòàíàâëèâàþ påæèì êîíñîëè
GetEnter: call ReadFile, hIn, o Buff, BuffLen, o bWritten, 0
;÷èòàþ ñ stdin
cmp Buff, 0dh ;enter
jne GetEnter
call ExitProcess, 0
end start
Åñëè íå áóäåò pàáîòàòü ïåpâûé âàpèàíò êîìïèëÿöèé óêàçàííûé â êîìåíòàpèÿõ
ïpîãpàììû èëè ñêîìïèëèòñÿ ñ ãàëàìè, òî ïîïpîáóéòå ïpîãpàììû îòêîìïèëèpîâàòü
âîò òàê:
tasm32 /ml !.asm
tlink32 /Tpe /aa /c !.obj
---------------------------------------- ------------------------------------
Qlast: À êàê ýòî ... ñäåëàòü?
A: Íàïèøèòå â ýõó, âàì îòâåòÿò :)
---------------------------------------- ------------------------------------
Ññûëêè â èíòåðíåòå:
Ñàéò Âëàäèñëàâà Ïèðîãîâà (ïðèìåðû ïîä Windows, êó÷à êíèã!)
http://asm.shadrinsk.net/
Àññåìáëåð NASM (freeware)
http://nasm.2y.net
Êó÷à ññûëîê
http://www.ee.mu.oz.au/pgrad/apsh/assemb ler.htm
Äîêà ïî NASM íà ðóññêîì ÿçûêå (ñïàñèáî AsmOS Team)
http://asmdev.narod.ru/asmos/our_files/d ocs/nasm.win.rar
Interrupt list (õîðîøåå îïèñàíèå ïðåðûâàíèé)
http://www.pobox.com/~ralf
Ðàçëè÷íûå áàçû, äîïîëíåíèÿ, NG, TechHelp!.
http://www.whitetown.com/ru/ng/
http://www.shortway.to/posohov
Ïðîãðàììèðîâàíèå íà ASM'å ïîä Windows:
http://win32asm.newmail.ru/
TechHelp! 4.0 RUS
http://zigar.narod.ru/techhelp.zip
Õîpîøèé òyòîpèàë asm ïîä Win32
http://www.wasm.zite.ru/win32asmtutor/fi les/tutorial/contents.html
Asm ïîä DOS, àpõèâ pàññûëêè. Ïîëåçíî, íî íàïèñàíî êpèâî, ïîýòîìy ÷èòàòü
ñëîæíî è íåèíòåpåñíî. Íî ïîëåçíî.
http://www.kalashnikoff.ru/Assembler/Iss ues/index.htm
Áypæyéñêèé ñàéò, òîæå åñòü òyòîpèàëû è ïpîãî ïpèìåpîâ. Win32.
http://spiff.tripnet.se/~iczelion/
Ñïèñîê ïpåpûâàíèé. Ïîíàäîáèòñÿ íàâåpíÿêà. (2.7 mb, íà àíãëèéñêîì)
http://www.cs.cmu.edu/~ralf/interrupt-li st/inter61a.zip
....
http://www.cs.cmu.edu/~ralf/interrupt-li st/inter61f.zip
Íå çíàþ ÷òî òàì, ïpîñòî URL'û âàëÿëèñü.
http://win32asm.chat.ru/
http://www.thomasbleeker.nl/exagone/page /int.html
http://sources.fitkursk.ru/articles/art0 000037.asp
---------------------------------------- ------------------------------------
FAQServer 2:5058/96.111
---------------------------------------- ------------------------------------
Âñå âîïðîñû ïî ñîäåðæàíèþ è äîïîëíåíèþ FAQ'à îòïðàâëÿòü ìíå -
Alexander Zigar' 2:5058/96
 ñîçäàíèè FAQ ïðèíèìàëè ó÷àñòèå:
Alexander Zigar' 2:5058/96
Anatoly Romashkin 2:5093/56
Dima Marakasov 2:5020/1826.5
Kirill Barashkin 2:5080/500.271
Max Vorobyov 2:5025/150.24
Mihail Epihin 2:5023/29.34
Roman Perminov 2:5070/313
Semen Panevin 2:5025/121.8
Victor Petrenko (AsmOS Team) 2:5061/6.40
Yury Suharev 2:5023/19.11
È âñå òå, êîãî ÿ çàáûë óïîìÿíóòü...
Òàêæå ñïàñèáî âñåì ïîäïèñ÷èêàì ýõ RU.ASM.CHAINIK, TALKS.ASM, PC.CODING è
èì ïîäîáíûõ.