FAQ (Всякие мелочи)
Описание файла
Файл "FAQ" внутри архива находится в папке "Всякие мелочи". Текстовый-файл из архива "Всякие мелочи", который расположен в категории "". Всё это находится в предмете "системное программирование" из 4 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "системное программирование" в общих файлах.
Просмотр текстового-файла онлайн
RU.ASM.CHAINIK FAQ
ðåäàêöèÿ îò 14.01.2004
Äàííûé FAQ ïîñòèòñÿ ðàç â íåäåëþ â ýõîêîíôåðåíöèþ RU.ASM.CHAINIK
Åãî âñåãäà ìîæíî âçÿòü íà faqserver'å ïî
àäðåñó 2:5058/96.111, òîïèê 'asmfaq'.
---------------------------------------- ----------------------------------------
Ñîäåðæàíèå:
1. Ïîêàæèòå ìàëåíüêóþ ïðîãðàììêó òèïà 'Hello, world!'
2. À êàê åå çàïóñòèòü (ñëèíêîâàòü, àñññåìáëèðîâàòü)?
3. À ãäå ìîæíî âçÿòü tasm è tlink?
4. ×òî òàêîå PSP?
5. Ãäå õðàíèòñÿ êîìàíäíàÿ ñòðîêà è êàê åå ïîëó÷èòü?
6. Êàê óçíàòü ïîëíûé ïóòü ê çàïóùåííîé ïpîãpàììå èç íåå ñàìîé?
7. ×òî òàêîå ïðåðûâàíèå è êàê îíî ðàáîòàåò?
8. ×òî òàêîå âåêòîð ïðåðûâàíèÿ?
9. À êàê ìîæíî ñãåíåðèðîâàòü çâóê?
10. ×òî ëó÷øå - ñòàíäàðòíûå èëè óïðîùåííûå äèðåêòèâû îïðåäåëåíèÿ ñåãìåíòîâ?
11. Äëÿ ÷åãî íóæíà êîìàíäà LEA. Òî æå ñàìîå ìîæåò è OFFSET, äà è Tasm
çàìåíÿåò LEA íà MOV...OFFSET.
12. Îòêóäà ïðîãðàììà óçíàåò àäðåñ ñåãìåíòà? Ïîñëå êîìïèëÿöèè ñòîèò mov ax,1.
13. Êàê ñäåëàòü COM ñ îòëàäî÷íîé èíôîðìàöèåé, ïîíèìàåìîé TD ?
14. Íå ïîëó÷àåòñÿ! COM åñòü, TDS åñòü, à TD îòëàäî÷íóþ èíôîðìàöèþ íå
âèäèò: "Program has no symbol table"
15. Êàê ðàñ÷èòàòü êîëè÷åñòâî ïàìÿòè, íåîáõîäèìîå äëÿ ðåçèäåíòà?
16. Íå ìîãó çàïóñòèòü äî÷åðíþþ çàäà÷ó ôóíêöèåé 4Bh
17. Íå âûäåëÿåòñÿ ïàìÿòü ïî ôóíêöèè 48h
18. Äà âðîäå âñå åñòü, ïî÷åìó íå âûäåëÿåò-òî?
19. Êàê ñæàòü áëîê ïàìÿòè, çàíèìàåìûé ïðîãðàììîé?
20. À ÷òî çà êîìàíäà òàêàÿ rdtsc?
21. È åùå, ðàññêàæèòå ðóññêèì ÿçûêîì, ÷òî òàêîå ðåêóðñèÿ (íèêîãäà íå
ñòàëêèâàëñÿ!)?
22. Ðàññêàæèòå ïðî ñîïðîöåññîð, êàê åãî èñïîëüçîâàòü?
23. ×òî äåëàòü, åñëè "Relative jump out of range"?
24. (À êàêèå-íèáóäü ññûëêè â èíòåðíåòå?) -> ñìîòðèòå â êîíöå ôàêà
25. À ÷òî òàêîå CMOS è êàê ñ íåé ðàáîòàòü?
26. ×òî äåëàòü, åñëè ìåòêè îäèíàêîâûå?
27. Êàê âûâåñòè ÷èñëî â øåñòíàäöàòåðè÷íîì âèäå?
28. Êàê ñëèíêîâàòü äðàéâåð óñòðîéñòâà?
29. Ïî÷åìó ïðîãðàììà â îòëàä÷èêå ðàáîòàåò, à áåç îòëàä÷èêà - íåò?
30. À êàê ïîä Windows íà àññåìáëåðå ïèñàòü?
last. À êàê ýòî ... ñäåëàòü?
---------------------------------------- ------------------------------------
Q1: Ïîêàæèòå ìàëåíüêóþ ïðîãðàììêó òèïà 'Hello, world!'
A: Âîò ïðèìåð: Ñëèíêîâàòü â com ôàéë (ÿ áû âàì ïîêà âîîáùå íå ðåêîìåíäîâàë
èñïîëüçîâàòü EXE).
..model tiny ; ìîäåëü ïàìÿòè - äåëàåì com-ôàéë
..code ; ñåãìåíò êîäà èëè ïpîñòî - êîä
..startup ; ñòàpòîâàÿ òî÷êà ïpîãpàììû
mov ah,09 ; ôyíêöèÿ N9 - âûâîä òåêñòà íà ýêpàí
mov dx,offset msg ; â dx çàíîñèì àäpåñ ñîîáùåíèÿ msg
int 21h ; âûçîâ òàê íàçûâàåìîãî Ñåpâèñà Äîñà
; (â ah äëÿ íåãî íîìåp ôyíêöèè)
ret ; â ÑÎÌ-ôàéëå òàê ìîæíî çàâåpøàòü ïpîãpàììó
; â ÅÕÅ - íåìíîãî ñëîæíåå...
msg db 'Hello, world! $' ; ñîîáùåíèå (äîëæíî îêàí÷èâàòüñÿ íà '$')
end ; êîíåö ôàéëà
---------------------------------------- ------------------------------------
Q2: À êàê åå çàïóñòèòü (ñëèíêîâàòü, àñññåìáëèðîâàòü)?
A: Âîò òàê:
tasm hello.asm
tlink /t hello.obj
---------------------------------------- ------------------------------------
Q3: À ãäå ìîæíî âçÿòü tasm è tlink?
A: Îíè âîîáùå-òî íå freeware, íî åñëè î÷åíü íàäî :)
(http://zigar.narod.ru/faq/minimum.zip)
A2: Íà ôàêñåðâåðå 2:5058/96.111, ïîä èìåíåì tasm. (~250 Kb UUE)
---------------------------------------- ------------------------------------
Q4: ×òî òàêîå PSP?
A: PSP - ñòðóêòóðà, ôîðìèðóåìàÿ äëÿ êàæäîé çàïóùåííîé ïðîãðàììû,
ñîäåðæàùàÿ ìíîæåñòâî ïîëåçíîé èíôîðìàöèþ, â ÷àñòíîñòè, êîìàíäíóþ ñòðîêó
è åå äëèíó. Ïpè çàïóñêå ïpîãpàììû (êàê ÑÎÌ, òàê è ÅÕÅ) ds è es ñîäåpæàò
ñåãìåíòíûé àäpåñ PSP. Äëÿ COM-ôàéëîâ îí ðàâåí åùå è cs.
---------------------------------------- ------------------------------------
Q5: Ãäå õðàíèòñÿ êîìàíäíàÿ ñòðîêà è êàê åå ïîëó÷èòü?
A: Êîìàíäíàÿ ñòðîêà (àðãóìåíòû, ïåðåäàâàåìûå çàïóñêàåìîé ïðîãðàììå
÷åðåç êîìàíäíóþ ñòðîêó DOS (DOS-prompt) è óêàçûâàåìûå ïîñëå èìåíè
ïðîãðàììû) õðàíÿòñÿ ïî àäðåñó PSP:[80h] â ôîðìàòå pascal-ñòðîêè.
Ïðèìåð:
C:\DOS> format a:/u/t:80/n:9
Êîìàíäíàÿ ñòðîêà " a:/u/t:80/n:9", ïåðåäàííàÿ ïðîãðàììå format, áóäåò
õðàíèòñÿ ïî óêàçàííîìó àäðåñó â ñëåäóþùåì âèäå:
db 0Eh," a:/u/t:80/n:9"
+=[x]=Dump============================== ===
| ds:0080 0E 20 61 3A 2F 75 2F 74 . a:/u/t
| ds:0088 3A 38 30 2F 6E 3A 39 0D :80/n:9
---------------------------------------- ------------------------------------
Q6: Êàê óçíàòü ïîëíûé ïóòü ê çàïóùåííîé ïpîãpàììå èç íåå ñàìîé?
A:
mov ax,1203h
int 2Fh ;ïîëó÷èì ñåãìåíò äàííûõ DOS
mov ax,ds
lds si,ds:[bp-1Ah] ;â ds:si - óêàçàòåëü íà ïîëíûé ïóòü
---------------------------------------- ------------------------------------
Q7: ×òî òàêîå ïðåðûâàíèå è êàê îíî ðàáîòàåò?
A: Ïðåðûâàíèå - ýòî èìåííî ïðåðûâàíèå ïðîãðàììû äëÿ âûïîëíåíèÿ
êàêîé-ëèáî äðóãîé ðàáîòû.
Íåîáõîäèìî pàçëè÷àòü ïpîãpàììíûå è àïïàpàòíûå ïpåpûâàíèÿ.
Àïïàpàòíûå ãåíåpÿòñÿ óñòpîéñòâàìè, à ïpîãpàììíûå âûçûâàþòñÿ ñàìîé
ïpîãpàììîé è ÿâëÿþòñÿ ôàêòè÷åñêè àíàëîãàìè âûçîâà ïîäïpîãpàìì, âûçîâàìè
ñèñòåìíûõ ôóíêöèé DOS, íàïpèìåp. Àïïàðàòíûå ïðåðûâàíèÿ ïðåðûâàþò
ïðîãðàììó â íåîáõîäèìûé ìîìåíò, íàïðèìåð, ïî ïðèõîäó áàéòà îò ìîäåìà, ïî
äâèæåíèþ ìûøè è ò.ï.
Ñìîòðèòå ïåðâûé ïðèìåð 'Hello, world!', òàì èñïîëüçóåòñÿ int 21h -
ïðåðûâàíèå íîìåð 21h, êîòîðîå îòâå÷àåò çà ôóíêöèè ÄÎÑ.  ah ó íàñ áûëî
09h - ýòî ôóíêöèÿ âûâîäà òåêñòà íà ýêðàí, íà÷èíàÿ ñ àäðåñà ds:dx.
---------------------------------------- -----------------------------------
Q8: ×òî òàêîå âåêòîð ïðåðûâàíèÿ?
A: Ýòî àäðåñ, ïî êîòîðîìó áóäåò ñäåëàí ïåðåõîä â ñëó÷àå âûçîâà
ñîîòâåñòâóþùåãî ïðåðûâàíèÿ. Íàïðèìåð, â ñëó÷àå, åñëè â ïðîãðàììå ñòîèò
'INT 21h', àäðåñ ïåðåõîäà áåðåòñÿ èç ÿ÷åéêè ïî àäðåñó 0000:21h*4 (ïî 4
áàéòà íà îäèí âåêòîð ïðåðûâàíèÿ).
---------------------------------------- ------------------------------------
Q9: À êàê ìîæíî ñãåíåðèðîâàòü çâóê?
A: Âîò òàê:
;
; ïîäïðîãðàììà ãåíåðàöèè çâóêà
; Âõîä: ÀX= ÷àñòîòà çâóêà â Ãö
;
Sound proc near
push ax ;ñîõðàíèòü ðåãèñòðû
push bx
push dx
mov bx,ax ;÷àñòîòà
mov ax,34DDh
mov dx,12h ;(dx,ax)=1193181
cmp dx,bx ;åñëè bx < 18Ãö, òî âûõîä
jnb Done ;÷òîáû èçáåæàòü ïåðåïîëíåíèÿ
div bx ;ax=(dx,ax)/bx
mov bx,ax ;ñ÷åò÷èê òàéìåðà
in al,61h ;ïîðò ÐÂ
or al,3 ;óñòàíîâèòü áèòû 0-1
out 61h,al
mov al,00001011b ;óïðàâëÿþùåå ñëîâî òàéìåðà:
;êàíàë 2, ðåæèì 3, äâîè÷íîå ñëîâî
mov dx,43h
out dx,al ;âûâîä â ðåãèñòð ðåæèìà
dec dx
mov al,bl