Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π° Π³ΠΈΠ±ΠΊΠΈΠΉ Π΄ΠΈΡΠΊ
Add way, al; Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΊ ΡΡΠ°ΡΡΠ΅ΠΌΡ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΈΡΠ»ΠΎ Π΄ΠΎΡΠΎΠΆΠ΅ΠΊ (Π½Π°ΠΏΡ. 5*10+8=58). Mov ah, 08h; 8-Ρ ΡΡΠ½ΠΊΡΠΈΡ 21-Π³ΠΎ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ — ΠΆΠ΄Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ», ΡΡΠΈΡΠ°ΡΡ Π΅Π³ΠΎ Π² al. Cmp way, 80; ΡΠΌΠΎΡΡΠΈΠΌ, Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ Π»ΠΈ ΠΎΠ½ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ° Π΄Π»Ρ Π΄ΠΈΡΠΊΠ΅ΡΡ 1.44Mb. Mov ah, 9h; Π΅ΡΠ»ΠΈ Π±ΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²Π²ΠΎΠ΄Π° — Π²ΡΠ΄Π°Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. Mov ah, 9h; Π΅ΡΠ»ΠΈ Π±ΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²Π²ΠΎΠ΄Π° — Π²ΡΠ΄Π°Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. Sub al, 30h; al=al-30h, 30h — ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π° Π³ΠΈΠ±ΠΊΠΈΠΉ Π΄ΠΈΡΠΊ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
- 1. ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
- 2. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- 3. Π’Π΅ΠΎΡΠΈΡ Π²ΠΎΠΏΡΠΎΡΠ°
- 4. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ
- 5. ΠΠ»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- 6. Π’Π΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- Π‘ΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ
1. ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ Π·Π°ΠΏΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ (Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, Π΄ΠΎΡΠΎΠΆΠΊΠ°, ΡΠ΅ΠΊΡΠΎΡ) Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠ°.
2. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΎ Π½ΠΎΠΌΠ΅ΡΠ΅ Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, Π΄ΠΎΡΠΎΠΆΠΊΠΈ ΠΈ ΡΠ΅ΠΊΡΠΎΡΠ° Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠ°, ΠΊΡΠ΄Π° Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π·Π°ΠΏΠΈΡΡ. ΠΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅ΡΠ° Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΡΠΈ ΡΠ΄Π°ΡΠ½ΠΎΠΌ Π²Π²ΠΎΠ΄Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²Π²ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡΠΈ Enter ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ.
3. Π’Π΅ΠΎΡΠΈΡ Π²ΠΎΠΏΡΠΎΡΠ°
ΠΠ΅ΡΠΎΠ΄ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ³Π»Π°Π²Π»Π΅Π½ΠΈΡ, «Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅» ΠΈ «ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅» Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ DOS 21H. ΠΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΡ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΡ Π΄ΠΈΡΠΊΠΎΠ²ΡΡ ΡΠ΅ΠΊΡΠΎΡΠΎΠ², ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΡΠ΅Π· DOS, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ 25H ΠΈ 26H. Π‘Π°ΠΌΡΠΉ Π½ΠΈΠ·ΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ BIOS 13H, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΡ Π² Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ Π΄ΠΎΡΠΎΠΆΠΊΠΈ ΠΈ ΡΠ΅ΠΊΡΠΎΡΠ° ΠΠ»Ρ Π΄ΠΈΡΠΊΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π° ΡΡΠΎΠ²Π½Π΅ BIOS, Ρ ΠΎΡΡ BIOS ΠΈ Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ³Π»Π°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅/Π΄Π΅Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠ΅ΠΉ. ΠΠΈΡΠΊΠΎΠ²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ BIOS INT 13H ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ «Π·Π°ΠΏΠΈΡΠΈ», ΠΊΠ°ΠΊ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅ΠΊΡΠΎΡΠ°, Π° Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΡ Π΄ΠΈΡΠΊΠ° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π½ΠΎΠΌΠ΅ΡΠ° Π΄ΠΎΡΠΎΠΆΠΊΠΈ ΠΈ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ΅ΠΊΡΠΎΡΠ°.
ΠΠ»Ρ Π΄ΠΈΡΠΊΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΡΠ΅Π½ΠΈΡ, Π·Π°ΠΏΠΈΡΠΈ ΠΈ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²:
AH ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΏ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ: ΡΡΠ΅Π½ΠΈΠ΅, Π·Π°ΠΏΠΈΡΡ, Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈΠ»ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
AL ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΡΠ»ΠΎ ΡΠ΅ΠΊΡΠΎΡΠΎΠ².
CH ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½ΠΎΠΌΠ΅Ρ Π΄ΠΎΡΠΎΠΆΠΊΠΈ.
CL ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½ΠΎΠΌΠ΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΠΎΡΠ°.
DH ΠΠΎΠΌΠ΅Ρ Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ (ΡΡΠΎΡΠΎΠ½Ρ): 0 ΠΈΠ»ΠΈ 1 Π΄Π»Ρ Π΄ΠΈΡΠΊΠ΅ΡΡ.
DL ΠΠΎΠΌΠ΅Ρ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΄Π°: 0=A, 1=B ΠΈ Ρ. Π΄.
ES:BX ΠΠ΄ΡΠ΅Ρ Π±ΡΡΠ΅ΡΠ° Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π°Π½Π½ΡΡ (Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ).
4. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ
Π΄ΠΈΡΠΊΠΎΠ²ΡΠΉ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠ°ΠΌΡΡΡ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΡ
Π€ΡΠ½ΠΊΡΠΈΡ 03h ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ 13h — Π·Π°ΠΏΠΈΡΡ Π½Π° Π΄ΠΈΡΠΊ.
Π€ΡΠ½ΠΊΡΠΈΡ 08h ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ 13h — ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½ΠΎΡΠΈΡΠ΅Π»Π΅.
Π€ΡΠ½ΠΊΡΠΈΡ 00h ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ 16h — ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ.
Π€ΡΠ½ΠΊΡΠΈΡ 08h ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ 21h — ΠΠ²ΠΎΠ΄ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π±Π΅Π· ΡΡ Π° Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ Ctrl/Break.
Π€ΡΠ½ΠΊΡΠΈΡ 09h ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ 21h — ΠΡΠ²ΠΎΠ΄ ΡΡΡΠΎΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π½Π° ΡΠΊΡΠ°Π½.
Π€ΡΠ½ΠΊΡΠΈΡ 4Ρh ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ 21h — ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΡΠ΅ΡΡΠ° Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠΎΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
5. ΠΠ»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠ»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π½Π° ΡΠΈΡ.1
Π ΠΈΡ. 1. ΠΠ»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
6. Π’Π΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
model small
.stack
.data
mes1 db 'Π½ΠΎΠΌΠ΅Ρ Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, 0 ΠΈΠ»ΠΈ 1', 13,10,'$'
headdb 0
mes2 db 'Π½ΠΎΠΌΠ΅Ρ Π΄ΠΎΡΠΎΠΆΠΊΠΈΠ± ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ 80', 13,10,'$'
way db 0
mes3 db 'Π½ΠΎΠΌΠ΅Ρ ΡΠ΅ΠΊΡΠΎΡΠ°Π± ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ 18', 13,10,'$'
sectdb 0
inperr db 'Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅', 13,10,'$'
derror db 'Π½Π΅ΠΈΠ·Π²Π΅ΡΠ½ΡΠΉ ΡΠΈΠΏ Π΄ΠΈΡΠΊΠ΅ΡΡ', 13,10,'$'
xzerror db 'Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°', 13,10,'$'
error03 db 'Π΄ΠΈΡΡΠΊ Π·Π°ΡΠΈΡΠ΅Π½ ΠΎΡ Π·Π°ΠΏΠΈΡΠΈ', 13,10,'$'
error04 db 'Π‘Π΅ΠΊΡΠΎΡ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½', 13,10,'$'
error07 db 'ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΄Π°', 13,10,'$'
error0a db 'ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ Π΄Π΅ΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΠΎΡ', 13,10,'$'
error0b db 'ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π° Π΄Π΅ΡΠ΅ΠΊΡΠ½Π°Ρ Π΄ΠΎΡΠΎΠΆΠΊΠ°', 13,10,'$'
error0c db 'Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ Π½ΠΎΡΠΈΡΠ΅Π»Ρ ΠΈΠ»ΠΈ Π΄ΠΎΡΠΎΠΆΠΊΠΈ', 13,10,'$'
noerr db 'Π²ΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ', 13,10,'$'
errnd db 'Π½Π΅ ΠΌΠ΅ΡΠ°Π»ΠΎ Π±Ρ Π²ΡΡΠ°Π²ΠΈΡΡ Π΄ΠΈΡΠΊΠ΅ΡΡ!!!', 13,10,'$'
meseos db '', 13,10,'$'
welkome db 'write please:', 13,10,'$'
message db 512 dup (0)
.code
.startup
mov ah, 08h; 8-Ρ ΡΡΠ½ΠΊΡΠΈΡ 13-Π³ΠΎ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ — ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½ΠΎΡΠΈΡΠ΅Π»Π΅
mov dl, 0; Π² dl — Π½ΠΎΠΌΠ΅Ρ Π΄ΠΈΡΠΊΠ° (0-A, 1-B b ΠΈ Ρ. Π΄.)
int 13h; ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ 13 — Π΄ΠΈΡΠΊΠΎΠ²ΡΠΉ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄
cmp al, 4; Π΅ΡΠ»ΠΈ Π΄ΠΈΡΠΊΠ΅ΡΠ° 1.44 Mb — ΠΈΠ΄Π΅ΠΌ Π΄Π°Π»ΡΡΠ΅, Π΅ΡΠ»ΠΈ Π»ΡΠ±Π°Ρ Π΄ΡΡΠ³Π°Ρ — Π²ΡΠ΄Π°Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅
jne next
mov ah, 9h; Π²ΡΠ΄Π°Π΅ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π΄ΠΈΡΠΊΠ΅ΡΠ° «Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ»
mov dx, offset derror
int 21h
mov ah, 0; ΡΡΠ°Π·Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΡΡ ΠΎΠ΄, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ far jump
int 21h
next:
mov ah, 9h; 9-Ρ ΡΡΠ½ΠΊΡΠΈΡ 21-Π³ΠΎ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ — Π²ΡΠ²ΠΎΠ΄ ΡΡΡΠΎΠΊΠΈ Π½Π° ΡΠΊΡΠ°Π½
mov dx, offset mes1; Π² dx — Π°Π΄ΡΠ΅Ρ ΡΡΡΠΎΠΊΠΈ «number of head, 0 or 1»
int 21h; ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ 21 — ΡΡΠ½ΠΊΡΠΈΠΈ DOS
mov ah, 08h; 8-Ρ ΡΡΠ½ΠΊΡΠΈΡ 21-Π³ΠΎ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ — ΠΆΠ΄Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ», ΡΡΠΈΡΠ°ΡΡ Π΅Π³ΠΎ Π² al
int 21h; ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ 21 — ΡΡΠ½ΠΊΡΠΈΠΈ DOS
sub al, 30h; al=al-30h, 30h — ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ASCII, ΡΡΠΎΠ±Ρ Π²Π·ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΡ
mov head, al; Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ — Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ head, ΡΡΡ Π±ΡΠ΄Π΅Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π½ΠΎΠΌΠ΅Ρ Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΡΠ»ΠΎΠΏΠΏΠΈΠΊΠ°
mov ah, 9h; 9-Ρ ΡΡΠ½ΠΊΡΠΈΡ 21-Π³ΠΎ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ — Π²ΡΠ²ΠΎΠ΄ ΡΡΡΠΎΠΊΠΈ Π½Π° ΡΠΊΡΠ°Π½
mov dx, offset mes2; Π² dx — Π°Π΄ΡΠ΅Ρ ΡΡΡΠΎΠΊΠΈ «number of way, max 80»
int 21h; ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ 21 — ΡΡΠ½ΠΊΡΠΈΠΈ DOS
mov ah, 08h; ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ»
int 21h ;
sub al, 30h; al=al-30h
mov bx, 10; Π² bx — ΠΎΡΠ½ΠΎΠ²Π° Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ
mov ah, 0; Π² ah — 0, ΡΡΠΎΠ±Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ
mul bx; ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ al Π½Π° 10 — ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠ΅Π³ΠΎ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΡΡΠ΄Π°
mov way, al; ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ — Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ way, ΡΡΡ Π±ΡΠ΄Π΅Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π½ΠΎΠΌΠ΅Ρ Π΄ΠΎΡΠΎΠΆΠΊΠΈ
mov ah, 08h; ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ Π²ΡΠΎΡΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»
int 21h ;
sub al, 30h; ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ»Π°Π΄ΡΠ΅Π³ΠΎ ΡΠ°Π·ΡΡΠ΄Π°
add way, al; Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΊ ΡΡΠ°ΡΡΠ΅ΠΌΡ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΈΡΠ»ΠΎ Π΄ΠΎΡΠΎΠΆΠ΅ΠΊ (Π½Π°ΠΏΡ. 5*10+8=58)
cmp way, 80; ΡΠΌΠΎΡΡΠΈΠΌ, Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ Π»ΠΈ ΠΎΠ½ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ° Π΄Π»Ρ Π΄ΠΈΡΠΊΠ΅ΡΡ 1.44Mb
jna next2
mov ah, 9h; Π΅ΡΠ»ΠΈ Π±ΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²Π²ΠΎΠ΄Π° — Π²ΡΠ΄Π°Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
mov dx, offset inperr ;
int 21h ;
mov ah, 8h
int 21h
mov ah, 4ch
int 21h
next2:
mov ah, 9h; ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ — Π²Π²ΠΎΠ΄ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ΅ΠΊΡΠΎΡΠ°
mov dx, offset mes3 ;
int 21h ;
mov ah, 08h; Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½ΠΎΠΌΠ΅Ρ ΡΠ΅ΠΊΡΠΎΡΠ°
int 21h ;
sub al, 30h ;
mov bx, 10 ;
mov ah, 0 ;
mul bx ;
mov sect, al ;
mov ah, 08h ;
int 21h ;
sub al, 30h ;
add sect, al; Π½ΠΎΠΌΠ΅Ρ ΡΠ΅ΠΊΡΠΎΡΠ° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ sect
cmp sect, 18; ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π΄ΠΈΡΠΊΠ΅ΡΡ 1.44Mb — 18
jna next3
mov ah, 9h; Π΅ΡΠ»ΠΈ Π±ΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²Π²ΠΎΠ΄Π° — Π²ΡΠ΄Π°Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
mov dx, offset inperr ;
int 21h ;
mov ah, 8h
int 21h
mov ah, 4ch
int 21h
next3:
mov ah, 9h
mov dx, offset welkome; ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π½Π°Π±ΠΎΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
int 21h
mov cx, 0
intxt:
mov ah, 8h; ΡΠΈΡΠ°Π΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ»
int 21h
mov si, cx
mov message[si], al; ΠΏΠΈΡΠ΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ» Π² ΠΌΠ°ΡΡΠΈΠ²
mov dl, al
mov ah, 02h; Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΈΠΌΠ²ΠΎΠ» Π½Π° ΡΠΊΡΠ°Π½
int 21h
inc cx; Ρx — ΡΡΠ΅ΡΡΠΈΠΊ Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π° message
cmp dl, 0Dh; Π΅ΡΠ»ΠΈ Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° ENTER, ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅ΠΌ Π·Π°ΠΏΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΈΠ΄Π΅ΠΌ Π΄Π°Π»ΡΡΠ΅.
je nextMF
cmp cx, 64; Π΅ΡΠ»ΠΈ ΠΏΡΠ΅Π²ΡΡΠ΅Π½Π° Π΅ΠΌΠΊΠΎΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° — ΠΈΠ΄Π΅ΠΌ Π΄Π°Π»ΡΡΠ΅
jne intxt
nextMF:
mov ah, 03h; ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΊΡΡΡΠΎΡΠ°
mov bh, 0; ΡΠΊΡΠ°Π½ № 0
int 10h; ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅
add ch, 1h; ΡΠ²Π΅Π»ΠΈΡΠΈΠΌ Π½ΠΎΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ ΠΊΡΡΡΠΎΡΠ° Π½Π° 1
mov dh, ch ;
mov dl, 0; ΡΡΠΎΠ»Π±Π΅Ρ ΡΠΎΡ ΠΆΠ΅
mov ah, 02h; ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡΡΡΠΎΡΠ°
int 10h
ΡΡΠ΅Π½ΠΈΡ Ρ Π΄ΠΈΡΠΊΠ° — 02h
mov dx, ds; Π² dx — ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° Π΄Π°Π½Π½ΡΡ
mov es, dx; ΠΈΠ· dx ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ds Π² es, Π½Π°ΠΏΡΡΠΌΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΠΌΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΠΌΠΈ Π½Π΅Π»ΡΠ·Ρ
mov dl, 0; Π² dl — 0, ΡΡΠΎ Π½ΠΎΠΌΠ΅Ρ Π΄ΠΈΡΠΊΠ°
mov dh, head; Π² dh — Π½ΠΎΠΌΠ΅Ρ Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ
mov ch, way; Π² ch — Π½ΠΎΠΌΠ΅Ρ Π΄ΠΎΡΠΎΠΆΠΊΠΈ
mov cl, sect; Π² cl — Π½ΠΎΠΌΠ΅Ρ ΡΠ΅ΠΊΡΠΎΡΠ°
mov al, 64; Π² al — ΠΎΠ±ΡΠ΅ΠΌ ΡΡΠΈΡΡΠ²Π°Π΅ΠΌΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ
mov bx, offset message; Π² bx — Π°Π΄ΡΠ΅Ρ Π±ΡΡΠ΅ΡΠ° Π΄Π°Π½Π½ΡΡ , [es]: [bx]
mov ah, 03h; 3-Ρ ΡΡΠ½ΠΊΡΠΈΡ 13-Π³ΠΎ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ — Π·Π°ΠΏΠΈΡΡ Π½Π° Π΄ΠΈΡΠΊ
int 13h ;
cmp ah, 0; ΠΈΡΠ΅ΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΏΡΠΈ ΡΠ΄Π°ΡΠ½ΠΎΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ Π² ah ΠΎΡΡΠ°Π΅ΡΡΡ 0
je noer ;
cmp ah, 03h; 03 — Π΄ΠΈΡΠΊ Π·Π°ΡΠΈΡΠ΅Π½ ΠΎΡ Π·Π°ΠΏΠΈΡΠΈ
je err03 ;
cmp ah, 04h; 04 — ΡΠ΅ΠΊΡΠΎΡ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½
je err04 ;
cmp ah, 07h; 07 — ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΄Π°
je err07 ;
cmp ah, 0ah; 0Π — Π΄Π΅ΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΠΎΡ
je err0a ;
cmp ah, 0bh; 0Π — Π΄Π΅ΡΠ΅ΠΊΡΠ½Π°Ρ Π΄ΠΎΡΠΎΠΆΠΊΠ°
je err0b ;
cmp ah, 0ch; 0Π‘ — Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ Π½ΠΎΡΠΈΡΠ΅Π»Ρ
je err0c ;
cmp ah, 80h
je err80
mov ah, 9h; ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°
mov dx, offset xzerror ;
int 21h ;
jmp exit; Π½Π° Π²ΡΡ ΠΎΠ΄
noer:
mov ah, 9h
mov dx, offset noerr; ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅Ρ
int 21h
jmp exit
err03:
mov ah, 9h
mov dx, offset err03
int 21h
jmp exit
err04:
mov ah, 9h
mov dx, offset err04
int 21h
jmp exit
err07:
mov ah, 9h
mov dx, offset err07
int 21h
jmp exit
err0a:
mov ah, 9h
mov dx, offset err0a
int 21h
jmp exit
err0b:
mov ah, 9h
mov dx, offset err0b
int 21h
jmp exit
err0c:
mov ah, 9h
mov dx, offset err0c
int 21h
jmp exit
err80:
mov ah, 9h
mov dx, offset errnd; Π½Π΅Ρ Π΄ΠΈΡΠΊΠ° (ΠΏΡΠ΅Π²ΡΡΠ΅Π½ ΡΠ°ΠΉΠΌΠ°ΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ)
int 21h
jmp exit
exit:; Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
mov ah, 0; ΠΆΠ΄Π΅ΠΌ Π½Π°ΠΆΠ°ΡΠΈΡ Π»ΡΠ±ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
int 16h
mov ax, 3h; ΠΎΡΠΈΡΡΠΊΠ° ΡΠΊΡΠ°Π½Π°
int 10h
mov ah, 4Ch; Π²ΡΡ ΠΎΠ΄ Π² DOS
int 21h
end; ΠΊΠΎΠ½Π΅Ρ :)
1. ΠΠΈΡΠ΅Ρ ΠΠ±Π΅Π»Ρ. ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ. Π―Π·ΡΠΊ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ IBM PC: ΠΏΠ΅Ρ. Ρ Π°Π½Π³Π». — Π.: ΠΠ΅ΠΊ+, Π.: ΠΠΠ’Π ΠΠ, Π.: ΠΠ’Π, 2003 — 736 Ρ.
2. ΠΠΆΠΎΡΠ΄Π°Π½. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅. Π.:
3. Π ΠΈΠ·Π°Π΅Π² Π. Π‘. ΠΠ΅ΠΊΡΠΈΠΎΠ½Π½ΡΠΉ ΠΊΡΡΡ ΠΏΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅: «Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅». ΠΠ°Π·Π°Π½Ρ: ΠΠΠ, 2004.
4. ΠΡΠ»Π°ΠΊΠΎΠ² Π. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅. Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ. ΠΠΈΡΠ΅Ρ, 2003.