ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ записи ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° Π³ΠΈΠ±ΠΊΠΈΠΉ диск

Лабораторная Ρ€Π°Π±ΠΎΡ‚Π°ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

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.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ