Как вывСсти символ Π² ассСмблСрС

Как вывСсти символ Π² ассСмблСрС

Как ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, микропроцСссор ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌΠΈ числами. Но Π½Π° экранС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Π΅ символы: Ρ†ΠΈΡ„Ρ€Ρ‹, Π±ΡƒΠΊΠ²Ρ‹ ΠΈ Π·Π½Π°ΠΊΠΈ. Данная Ρ‚Π΅ΠΌΠ° раскроСт сСкрСты Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… символов ΠΈ строк.

Знакомство с прСрываниями

ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ INT 21h выполняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π·Π°Π΄Π°Π½Π½ΡƒΡŽ Π² рСгистрС AH. ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ содСрТит Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ количСство инструкций, поэтому трассировка прСрывания ΠΌΠΎΠΆΠ΅Ρ‚ завСсти нас ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°Π»Π΅ΠΊΠΎ. Для выполнСния прСрывания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ «G» (Go), которая выполняСт всС инструкции подряд. АдрСс остановки (Ρ‚.Π΅. адрСс инструкции, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π° INT 21h) ΠΌΡ‹ ΡƒΠΊΠ°ΠΆΠ΅ΠΌ нСпосрСдствСнно Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ G:

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма Π²Ρ‹Π²Π΅Π»Π° Π±ΡƒΠΊΠ²Ρƒ «A» ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Debug. По ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ рассмотрСнным Ρ€Π°Π½Π΅Π΅, послСдняя строка вашСго листинга Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΈΠ½Π°Ρ‡Π΅.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ INT 21h, Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ символы Π½Π° экран:

Π’ качСствС экспСримСнта ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Ρ‚Ρ€Π°ΡΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅. Π—Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ трассировочный «ΠΏΠΎΡ…ΠΎΠ΄» ΠΏΠΎ инструкциям прСрывания ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ «G 102». Аналогичный экспСримСнт ΠΏΡ€ΠΎΠ΄Π΅Π»Π°ΠΉΡ‚Π΅ с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ G, Π½Π΅ указывая Π² Π½Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΡƒ остановки.

Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠ΄Ρ‹ [CDh, 20h] ΠΏΠΎ адрСсам 100h ΠΈ 101h. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ инструкции INT 20h ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ «R», ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ «G»:

ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ INT 20h сообщаСт ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Debug. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, INT 20h восстанавливаСт содСрТимоС всСх рСгистров ΠΊ Π²ΠΈΠ΄Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π΄ΠΎ запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ΠΎ Π΅ΡΡ‚ΡŒ, послС выполнСния INT 20h рСгистр IP вСрнСтся Π² исходноС состояниС: IP = 100h.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ INT 20h Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр, объСдиним INT 21h ΠΈ INT 20h Π² ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ символ Π½Π° экран:

ΠšΡƒΡ€ΡΠΈΠ²ΠΎΠΌ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ инструкции, ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΡ… Π΄ΠΎ запуска Debug. Π‘ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ слоТности ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Ρ€Π°Π·ΠΌΠ΅Ρ€ дизассСмблированного листинга Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ.

ЗанСситС Π² рСгистр AH Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ 02h, Π° Π² рСгистр DL ΠΊΠΎΠ΄ символа «#». ЗапуститС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ символами. Π’Π°Π±Π»ΠΈΡ†Π° ASCII ΠΊΠΎΠ΄ΠΎΠ²

Π’Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ Π²Π²ΠΎΠ΄ΠΈΠ»ΠΈ ΠΊΠΎΠ΄Ρ‹ инструкций, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: [CDh, 21h]. Но это ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π’ Debug имССтся ΠΊΠΎΠΌΠ°Π½Π΄Π° «A» (Assemble), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΌΠ½Π΅ΠΌΠΎΠΊΠΎΠ΄Ρ‹ инструкций:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ 100 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π²ΠΎΠ΄ инструкций начнСтся с адрСса 100h.

Команда MOV

Команда «R» позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния рСгистров Π΄ΠΎ ΠΈ послС запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ Ρ…ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, число Π² рСгистр ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ MOV. НапримСр, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ числа Π² рСгистр AH ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² листингС рСгистров:

Π’ исходном состоянии AX = 0000. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ трассировку, ΠΈ вновь просмотритС рСгистры. Π’Π΅ΠΏΠ΅Ρ€ΡŒ AX = 0200 (AH = 02h).

Команда MOV позволяСт ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ числа ΠΈΠ· рСгистра Π² рСгистр. НапримСр, скопируСм число ΠΈΠ· рСгистра BX Π² рСгистр AX:

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π² рСгистры числа: AX = FF00, BX = 00EE. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ трассировку ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. ПослС просмотра рСгистров Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ AX = 00EE. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ рСгистра BX Π½Π΅ измСнилось.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° дСмонстрируСт возмоТности ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ MOV: Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ трассировку, анализируя ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ шаг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ MOV, для ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄Π° символа Π½Π° экран:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ символ «*» (ASCII ΠΊΠΎΠ΄ 2Ah). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ «U 100» для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… инструкций. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ рСгистр IP = 100h. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

Π—Π°ΠΏΠΈΡΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° диск

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π±Ρ‹Π»Π° рассмотрСна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран символа «*». Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° диск, слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ дСйствия:

Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΈ ΡƒΠΆΠ΅ потСряна, Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ Ρ€Π°Π·Π΄Π΅Π»Ρƒ для Π΅Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ «N» (Name), присвойтС Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ имя:

Для записи ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° диск ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ «W» (Write):

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ FAR, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ записана Π½Π° диск Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. ΠŸΠΎΠΊΠΈΠ½ΡŒΡ‚Π΅ Debug ΠΈ запуститС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Star.com. Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ FAR, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Star.com Π±ΡƒΠ΄Π΅Ρ‚ скрыт панСлями. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ/Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ°Π½Π΅Π»ΠΈ FAR ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ: [Ctrl] + [O].

Π’Ρ‹Π²ΠΎΠ΄ Π½Π° экран строки символов

Как ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ INT 21h ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠœΡ‹ рассмотрСли Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ 02h, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ символы. Для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран строк, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция 09h. НапримСр, трСбуСтся вывСсти Π½Π° экран строку:

Бписок ASCII ΠΊΠΎΠ΄ΠΎΠ² для этой строки ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

Начиная с адрСса 109h, Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΊΠΎΠ΄Ρ‹ строки. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ ячСйки памяти ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ выполняйтС клавишСй [ΠΏΡ€ΠΎΠ±Π΅Π»]:

Начиная с адрСса 100h, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ: Π’ рСгистр DX заносится адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа строки (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° строку).

ДизассСмблируйтС ΠΊΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

УстановитС рСгистр IP = 100h, ΠΈ запуститС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ: ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π³ΠΎΡ‚ΠΎΠ²Π° ΠΊ записи Π½Π° диск. ΠŸΡ€ΠΈΡΠ²ΠΎΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ имя:

ΠŸΠΎΠΊΠΈΠ½ΡŒΡ‚Π΅ Debug, ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Champion.com.

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ строк

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ «E», для Π²Π²ΠΎΠ΄Π° ΠΈΠ»ΠΈ рСдактирования строки, ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Быстро ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку Π² COM-Ρ„Π°ΠΉΠ»Π΅ позволяСт тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ DOS ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ. НапримСр, Π² FAR: ставим курсор Π½Π° Ρ„Π°ΠΉΠ» Champion.com ΠΈ ΠΆΠΌΡ‘ΠΌ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ [F4]. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ откроСтся ΠΎΠΊΠ½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° с ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ прСдставлСниСм ΠΊΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как вывСсти символ Π² ассСмблСрС

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ассСмблСрС ΠΌΡ‹ ΡƒΠΆΠ΅ познакомились с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· способов Π²Ρ‹Π²ΠΎΠ΄Π° тСкста Π½Π° экран β€” Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DOS 09h. Π­Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ СдинствСнный способ Π²Ρ‹Π²ΠΎΠ΄Π° тСкста β€” DOS прСдоставляСт для этого нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Ѐункция DOS 02h β€” Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ символ Π² STDOUT с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π½Π° Ctrl-Break

Π’Π²ΠΎΠ΄:АН = 02h
DL = ASCII-код символа
Π’Ρ‹Π²ΠΎΠ΄:Никакого, согласно Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅: AL = ΠΊΠΎΠ΄ послСднСго записанного символа (Ρ€Π°Π²Π΅Π½ DL, ΠΊΡ€ΠΎΠΌΠ΅ случая, ΠΊΠΎΠ³Π΄Π° DL = 09h (табуляция), Ρ‚ΠΎΠ³Π΄Π° Π² AL возвращаСтся 20h).

Π­Ρ‚Π° функция ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π½Π° экран ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ символы β€” Π²Ρ‹Π²ΠΎΠ΄ символа BEL (07h) ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΌΡƒ сигналу, символ BS (08h) ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ двиТСнию курсора Π²Π»Π΅Π²ΠΎ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, символ НВ (09h) замСняСтся Π½Π° нСсколько ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², символ LF (0Ah) опускаСт курсор Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π²Π½ΠΈΠ·, ΠΈ CR (0Dh) ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρƒ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строки.

Если Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π° комбинация клавиш Ctrl-Break, вызываСтся ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ 23h, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ осущСствляСт Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

НапримСр, напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π²Ρ‹Π²ΠΎΠ΄ΡΡ‰ΡƒΡŽ Π½Π° экран всС ASCII-символы, 16 строк ΠΏΠΎ 16 символов Π² строкС.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚ΠΈΠΏΠ° БОМ, ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ hello-1.asm Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4.1. Π—Π΄Π΅ΡΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ LOOP оформляСтся Ρ†ΠΈΠΊΠ», Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉΡΡ 256 Ρ€Π°Π· (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСгистра Π‘Π₯ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ†ΠΈΠΊΠ»Π°). РСгистр DL содСрТит ΠΊΠΎΠ΄ символа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ†ΠΈΠΊΠ»Π° ΠΈ увСличиваСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π½Π° 1 ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ INC DL. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ DL сразу послС увСличСния Π½Π° 1 ΠΊΡ€Π°Ρ‚Π½ΠΎ 16, ΠΎΠ½ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ сохраняСтся Π² стСкС ΠΈ Π½Π° экран выводятся символы CR ΠΈ LF, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ Π½ΠΎΠ²ΠΎΠΉ строки. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° выполняСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ TEST DL,0Fh β€” Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ AND Π½Π°Π΄ DL ΠΈ 0Fh Π±ΡƒΠ΄Π΅Ρ‚ Π½ΡƒΠ»Π΅ΠΌ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли младшиС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±ΠΈΡ‚Π° DL Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ, Ρ‡Ρ‚ΠΎ ΠΈ соотвСтствуСт кратности ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈ.

ВсС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DOS Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ устройство STDOUT, стандартный Π²Ρ‹Π²ΠΎΠ΄. Π­Ρ‚ΠΎ позволяСт ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π½Π° стандартный Π²Π²ΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр, Ссли Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС

Ρ‚ΠΎ Π½Π° экран Π½ΠΈΡ‡Π΅Π³ΠΎ Π²Ρ‹Π΄Π°Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Π° Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ появится Ρ„Π°ΠΉΠ» hello-1.out, содСрТащий строку Β«Hello World!Β». Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, Ссли Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ

Ρ‚ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ dosout1.out окаТутся всС символы ASCII, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ символы BEL ΠΈ BS Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π·Π°ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π² Ρ„Π°ΠΉΠ» ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ CR ΠΈ LF Ρ‚ΠΎΠΆΠ΅ Π·Π°ΠΏΠΈΡˆΡƒΡ‚ΡΡ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ, Π½ΠΎ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ ΠΊΠΎΠ½Π΅Ρ† строки, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈ просмотрщики тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Ρ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку символов.

Ѐункция DOS 06h β€” Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ символ Π² STDOUT Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Ctrl-Break

Π’Π²ΠΎΠ΄:АН = 06h
DL = ASCII-ΠΊΠΎΠ΄ символа (ΠΊΡ€ΠΎΠΌΠ΅ FFh)
Π’Ρ‹Π²ΠΎΠ΄:Никакого, согласно Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅: AL = ΠΊΠΎΠ΄ записанного символа (копия DL)

Π­Ρ‚Π° функция Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ символы (CR, LF, HT ΠΈ BS Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ свои Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π½Π° экран, Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π² Ρ„Π°ΠΉΠ») ΠΈ Π½Π΅ провСряСт Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ Ctrl-Break. МоТно Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ dosoutl.asm ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ MOV АН,2 Π½Π° MOV АН,6 ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ символов.

Ѐункция DOS 09h β€” Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ строку Π² STDOUT с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π½Π° Ctrl-Break

ДСйствиС этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 02h, Π½ΠΎ выводится Π½Π΅ ΠΎΠ΄ΠΈΠ½ символ, Π° цСлая строка, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… hello-1.asm ΠΈ hello-2.asm.

Ѐункция DOS 40h β€” Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ устройство

Π’Π²ΠΎΠ΄:АН = 40h
Π’Π₯ = 1 для STDOUT ΠΈΠ»ΠΈ 2 для STDERR
DS:DX = адрСс Π½Π°Ρ‡Π°Π»Π° строки
Π‘Π₯ = Π΄Π»ΠΈΠ½Π° строки
Π’Ρ‹Π²ΠΎΠ΄:CF = 0,
АΠ₯ = число записанных Π±Π°ΠΉΡ‚

Π­Ρ‚Π° функция ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для записи Π² Ρ„Π°ΠΉΠ», Π½ΠΎ, Ссли Π² рСгистр Π’Π₯ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ число 1, функция 40h Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° STDOUT, Π° Ссли Π’Π₯ = 2 β€” Π½Π° устройство STDERR. STDERR всСгда Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° экран ΠΈ Π½Π΅ пСрСнаправляСтся Π² Ρ„Π°ΠΉΠ»Ρ‹. На этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ основаны ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Π‘ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ стандартного Π²Ρ‹Π²ΠΎΠ΄Π° β€” фактичСски функция Π‘ fputs() просто Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ это ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅, помСщая свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² Π’Π₯, адрСс строки (Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚) β€” Π² DS:DX ΠΈ Π΄Π»ΠΈΠ½Ρƒ β€” Π² Π‘Π₯.

Если ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ

Ρ‚ΠΎ сообщСниС появится Π½Π° экранС, Π° Ρ„Π°ΠΉΠ» dosout2.out окаТСтся пустым.

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, послСдняя функция DOS Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран β€” Π½Π΅Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ 29h.

INT 29h : Быстрый Π²Ρ‹Π²ΠΎΠ΄ символа Π½Π° экран

Π’Π²ΠΎΠ΄:AL = ASCII-ΠΊΠΎΠ΄ символа

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв INT 29h просто Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ BIOS Β«Π²Ρ‹Π²ΠΎΠ΄ символа Π½Π° экран Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚Π΅Π»Π΅Ρ‚Π°ΠΉΠΏΠ°Β», Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… прСимущСств, ΠΊΡ€ΠΎΠΌΠ΅ экономии Π±Π°ΠΉΡ‚ ΠΏΡ€ΠΈ написании ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΎΠ½Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как вывСсти символ Π² ассСмблСрС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как вывСсти символ Π² ассСмблСрС. Π€ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС

Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как вывСсти символ Π² ассСмблСрС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как вывСсти символ Π² ассСмблСрС. Π€ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС

Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как вывСсти символ Π² ассСмблСрС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как вывСсти символ Π² ассСмблСрС. Π€ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС

Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как вывСсти символ Π² ассСмблСрС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как вывСсти символ Π² ассСмблСрС. Π€ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС

Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как вывСсти символ Π² ассСмблСрС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как вывСсти символ Π² ассСмблСрС. Π€ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС

Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как вывСсти символ Π² ассСмблСрС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как вывСсти символ Π² ассСмблСрС. Π€ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС

Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как вывСсти символ Π² ассСмблСрС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как вывСсти символ Π² ассСмблСрС. Π€ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС

Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как вывСсти символ Π² ассСмблСрС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как вывСсти символ Π² ассСмблСрС. Π€ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС

ГрафичСский Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ Π½Π° языкС ассСмблСр

Π“Ρ€Π°Ρ„ΠΈΠΊΠ° Π² ΠΆΠΈΠ·Π½ΠΈ программиста Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ особоС мСсто. Π’ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² большСй ΠΈΠ»ΠΈ мСньшСй стСпСни. ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты Π΄ΡƒΠΌΠ°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π²Π½Π΅ зависимости ΠΎΡ‚ языка программирования, Π³Ρ€Π°Ρ„ΠΈΠΊΠ° рСализуСтся ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. Но Ρ€Π°Π±ΠΎΡ‚Π° с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ языкС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π°. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ языка ассСмблСр.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡŽ INT 21H

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ассСмблСра состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ процСссору Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ. Π’ ассСмблСрС сущСствуСт мноТСство Ρ€Π΅ΠΆΠΈΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΌ числом, содСрТащимся Π² рСгистрС АH. Рассмотрим эти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ.

AH=01: Π’Π²ΠΎΠ΄ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ с ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² консоли. Данная опСрация считываСт с консолисимвол ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² рСгистр AL. ПослС считывания содСрТимоС Π΄Π°Π½Π½ΠΎΠ³ΠΎ рСгистра прСдставляСт собой ASCII-символ. Если послС считывания символа рСгистр AL Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ 0, Π·Π½Π°Ρ‡ΠΈΡ‚, с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π±Ρ‹Π»ΠΈ Π½Π°ΠΆΠ°Ρ‚Ρ‹ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ клавиши (F1, PgUp ΠΈ Ρ‚.Π΄). Для опрСдСлСния ΠΈΡ… ΠΊΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ запрос.

AH=02: Π’Ρ‹Π²ΠΎΠ΄ символа Π² консоль. ΠŸΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ символа Π½Π° экран Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ курсора Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π΄Π°Π½Π½ΠΎΠ³ΠΎ символа Π² рСгистр DL.

AH=06: Π’Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ символов. Π”Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ для Π²Π²ΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΈ для Π²Ρ‹Π²ΠΎΠ΄Π°. Для Π²Ρ‹Π²ΠΎΠ΄Π° Π² консоль символа Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² DL ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ INT 21H. Для Π²Π²ΠΎΠ΄Π° символа Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ занСсти Π² DL FFh ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ INT 21H. ΠŸΡ€ΠΈ использовании Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ, Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² ΡˆΡ‚Π°Ρ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. ΠŸΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ символ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ Π² рСгистр AL.

AH=07:Π’Π²ΠΎΠ΄ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π±Π΅Π· отобраТСния Π² консоли. Данная ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΏΡ€ΠΈ AH=01H, Π½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся. ΠŸΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ символа с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΎΠ½ Π½Π΅ отобраТаСтся Π½Π° экранС.

AH=09H: Π’Ρ‹Π²ΠΎΠ΄ строки Π² консоль. Для Π²Ρ‹Π²ΠΎΠ΄Π° строки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π»Π°ΡΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ символом ($). Π—Π°Ρ‚Π΅ΠΌ адрСс Π½Π°Ρ‡Π°Π»Π° строки помСщаСтся Π² рСгистр DX. Π‘ΠΈΠΌΠ²ΠΎΠ» Π΄ΠΎΠ»Π»Π°Ρ€Π° Π² консоли Π½Π΅ выводится.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ прСрывания ΠΏΡ€ΠΈ AH=09H:

Leadx, str; смСщСниС рСгистра DX Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° строки

Movah, 9; ΠŸΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π² ah 9 для Π²Ρ‹Π²ΠΎΠ΄Π° строки

Int 21h; ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ для Π²Ρ‹Π²ΠΎΠ΄Π° строки

AH=0AH: Π’Π²ΠΎΠ΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π±ΡƒΡ„Π΅Ρ€.ΠŸΡ€ΠΈ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² Π±ΡƒΡ„Π΅Ρ€, Π³Π΄Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° максимальная Π΄Π»ΠΈΠ½Π° Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ строки. Если ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅, строка оказываСтся мСньшС Π² Π΄Π»ΠΈΠ½Π½Ρ‹ Π±ΡƒΡ„Π΅Ρ€Π°, Ρ‚ΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° строки опрСдСляСтся символом клавиши [ENTER], Ссли большС Π΄Π»ΠΈΠ½Ρ‹ Π±ΡƒΡ„Π΅Ρ€Π°, Ρ‚ΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ прСдупрСТдаСтся Π·Π²ΡƒΠΊΠΎΠ²Ρ‹ΠΌ сигналом. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π±ΡƒΡ„Π΅Ρ€Π° ввСдСнная строка Π½Π΅ учитываСтся. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π±Π°ΠΉΡ‚ Π±ΡƒΡ„Π΅Ρ€Π° возвращаСтся Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ Π΄Π»ΠΈΠ½Π½Π° Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ строки Π² Π±Π°ΠΉΡ‚Π°Ρ…. АдрСс Π±ΡƒΡ„Π΅Ρ€Π° заносится Π² рСгистр DX. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π±Π°ΠΉΡ‚Π΅ находится максимальная Π΄Π»ΠΈΠ½Π° Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠΉ строки, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΏΠΎΠ»Π΅ являСтся ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌ, Π·Π½Π°Ρ‡ΠΈΡ‚ максимальная Π΄Π»ΠΈΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° 255 символов (FF- ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС). Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π±Π°ΠΉΡ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ количСство символов. Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ Π±Π°ΠΉΡ‚Π΅ хранятся Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ символы.

Π’Π²ΠΎΠ΄ /Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡŽ int 10H

Для Π²Ρ‹Π²ΠΎΠ΄Π° символов Π² консоль ΠΈΠ»ΠΈ ΠΈΡ… Π²Π²ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ DOS. Однако ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ смСну Ρ†Π²Π΅Ρ‚Π° Π² консоли Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ курсора, Π½ΠΎ возмоТности DOS ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ANSI.SYS. Π‘ графичСской ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ всё Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ…ΡƒΠΆΠ΅ Π² DOS Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… графичСских ΠΊΠΎΠΌΠ°Π½Π΄. Π—Π°Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€ Π² графичСский Ρ€Π΅ΠΆΠΈΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Esc-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ. Для осущСствлСния ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½ΠΈΠΆΠ½ΠΈΠΌ уровням ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ BIOS (BasicIn-OutSystem). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Bios находятся Π² ΠŸΠ—Π£(постоянноС Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰Π΅Π΅ устройство). BIOS Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ DOS (всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ инструкций ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ int 21h), Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ осущСствляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ устройством Π·Π°ΠΊΡ€Π΅ΠΏΠ»Ρ‘Π½ опрСдСлённая ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ (ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°- int 16h, экран-int 10h, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅). ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ int 10h выполняСт всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°: Π²Ρ‹Π²ΠΎΠ΄ строк ΠΈ символьной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, смСна ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², смСна Ρ†Π²Π΅Ρ‚Π°, Ρ€Π°Π±ΠΎΡ‚Π° с изобраТСниями ΠΈ Ρ‚.Π΄.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π’Ρ‹Π²ΠΎΠ΄ Π½Π° экран Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ прямой

;УстанавливаСм графичСский Ρ€Π΅ΠΆΠΈΠΌ

mov ah,00h ;(1)Команда для задания Ρ€Π΅ΠΆΠΈΠΌΠ°

mov al,10h ;(2)Π’Ρ…ΠΎΠ΄ΠΈΠΌ Π² графичСский Ρ€Π΅ΠΆΠΈΠΌ

int 10h ;(3)Π’Ρ‹Π·ΠΎΠ² BIOS

mov si,150 ;(4)si- ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° (X)

mov cx,300 ;(5)ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ

pushcx ;(6)ΠŸΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ количСство Ρ‚ΠΎΡ‡Π΅ΠΊ Π² стСк

mov ax,0Ch ;(7)Команда Π²Ρ‹Π²ΠΎΠ΄Π° пиксСля

mov al,4 ;(8)УстанавливаСм Ρ†Π²Π΅Ρ‚ красный

mov bh,0 ;(9)ВидСостраница

movcx,si ;(10)Π₯-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° (измСняСтся)

mov dx,175 ;(11)Y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° (постоянная)

int 10h ;(12)Π’Ρ‹Π·ΠΎΠ² BIOS

incsi ;(13)Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ Π₯-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹

popcx ;(14)Восстановим количСство шагов

loopliniya ;(15)Цикл из CX шагов

;ΠžΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для просмотра Π΅Ρ‘ Ρ€Π°Π±ΠΎΡ‚Ρ‹

mov ah,08h ;(16)Команда Π²Π²ΠΎΠ΄Π° с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π±Π΅Π· отобраТСния Π² консоли

int 21h ;(17)Π’Ρ‹Π·ΠΎΠ² DOS

;ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€ Π² тСкстовый Ρ€Π΅ΠΆΠΈΠΌ

mov ah,00h ;(18)Команда задания Ρ€Π΅ΠΆΠΈΠΌΠ°

mov al,03h ;(19)ВСкстовый Ρ€Π΅ΠΆΠΈΠΌ

int 10h ;(20)Π’Ρ‹Π·ΠΎΠ² BIOS

Π’ 1-3 строчках ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ 00H Π²Ρ‹Π·Π²Π°Π»ΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Bios 10h ΠΈ осущСствили ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° Π² Ρ€Π΅ΠΆΠΈΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Π—Π°Ρ‚Π΅ΠΌ помСстили Π½ΠΎΠΌΠ΅Ρ€ Ρ€Π΅ΠΆΠΈΠΌΠ° Π² рСгистр AL, всСго сущСствуСт порядка 256 Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² (тСкстовых ΠΈ графичСских), ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π° сСгодняшний дСнь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ порядка ста Ρ€Π΅ΠΆΠΈΠΌΠΎΠ². Команда прСрывания int 10h обСспСчиваСт графичСскоС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ 640Ρ…350 пиксСлСй ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 16 Ρ†Π²Π΅Ρ‚ΠΎΠ².

ВсС изобраТСния Ρ€ΠΈΡΡƒΡŽΡ‚ΡΡ ΠΏΠΎ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ (пиксСли) Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² BIOS Π½Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄ для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠ°ΠΊΠΈΡ… Π»ΠΈΠ±ΠΎ гСомСтричСских Ρ„ΠΈΠ³ΡƒΡ€ ΠΈ Π½Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄ Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… области. Для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ†Π²Π΅Ρ‚Π½ΠΎΠ³ΠΎ пиксСля Π½Π° экран ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° 0CH ΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ int 10h. Данная ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для занСсСния Π² рСгистр AL ΠΊΠΎΠ΄Π° Ρ†Π²Π΅Ρ‚Π°, Π² BH- Π½ΠΎΠΌΠ΅Ρ€Π° видСостраницы, Π² CX – ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΏΠΎ оси Π₯ Π², Π² DX –координаты Ρ‚ΠΎΡ‡ΠΊΠΈ Π²ΠΏΠΎ оси Y, всС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ вводятся Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ 639.

Рассмотрим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄ 0Ch прСрывания int 10h. Заносим Π½ΠΎΠΌΠ΅Ρ€ видСостраницы, ΠΊΡƒΠ΄Π° выводится данная Ρ‚ΠΎΡ‡ΠΊΠ°, Π² рСгистр BH. А рСгистр AL заносим ΠΊΠΎΠ΄ Ρ†Π²Π΅Ρ‚Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ пиксСля. Π”Π°Π½Π½Ρ‹ΠΉ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ содСрТит 16 Ρ†Π²Π΅Ρ‚ΠΎΠ². Π”Π°Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΈΠ· 16 Ρ†Π²Π΅Ρ‚ΠΎΠ² задаётся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ измСнятся Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΠΎΠ΄Π²Π΅Π΄Ρ‘ΠΌ ΠΈΡ‚ΠΎΠ³ графичСской Ρ€Π°Π±ΠΎΡ‚Ρ‹ BIOS ΠΈ прСрывания int 10h. Для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ графичСский Ρ€Π΅ΠΆΠΈΠΌ. Π§Π΅Ρ€Π΅Π· ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ int 10h устанавливаСтся тСкстовый ΠΈΠ»ΠΈ графичСский Ρ€Π΅ΠΆΠΈΠΌ. Для установки Ρ€Π΅ΠΆΠΈΠΌΠ° AH обнуляСтся ΠΈ Π² AL заносится ΠΊΠΎΠ΄ Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π° Π·Π°Ρ‚Π΅ΠΌ выполняСтся ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ 10H.

Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΌΡ‹ рассмотрСли Ρ€Π΅ΠΆΠΈΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ графичСской ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ языка ассСмблСр. И сдСлали Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ всС ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ состоят ΠΈΠ· Ρ‚ΠΎΡ‡Π΅ΠΊ(пиксСлСй),Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ любой графичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, мСняя ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Ρ‹Π²ΠΎΠ΄Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ пиксСля.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π’Ρ‹Π²ΠΎΠ΄ тСкста Π² ΠΎΠΊΠ½ΠΎ Π½Π° ассСмблСрС

По описанным Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, экран Π² Windows это ΡƒΠΆΠ΅ срСда, раздСлСнная ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ «ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ графичСскими прилоТСниями. Π›ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΌΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ строгиС ΠΏΡ€Π°Π²ΠΈΠ»Π°, Π΄Π°Π±Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ситуации, ΠΊΠΎΠ³Π΄Π° прилоТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для Π²Ρ‹Π²ΠΎΠ΄Π° своСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Ρ‡ΡƒΠΆΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ экрана (ΠΎΠΊΠ½ΠΎ/Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠΊΠ½Π° стороннСго прилоТСния). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π²Ρ‹Π²ΠΎΠ΄ тСкста Π² ΠΎΠΊΠ½ΠΎ графичСского интСрфСйса Windows Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ такая Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π·Π°Π΄Π°Ρ‡Π°, ΠΊΠ°ΠΊ Π΅Ρ‘ Π°Π½Π°Π»ΠΎΠ³ для тСкстового Ρ€Π΅ΠΆΠΈΠΌΠ° Π² MSDOS, ΠΈ Ρ‚ΡƒΡ‚ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ ряд ΠΏΡ€Π°Π²ΠΈΠ»:

ΠžΠ±Π»Π°ΡΡ‚ΠΈ (Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹)

ЀактичСски ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ любого соврСмСнного графичСского интСрфСйса ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΊΠ½Π°, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ собой ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Π΅ области ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈ систСма, ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ понятиСм ΠΎΠΊΠ½Π° ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Окно Π² Windows Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΎ Π½Π° нСсколько областСй:

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠ°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ это фактичСски Ρ€Π΅Π³ΠΈΠΎΠ½ ΠΎΠΊΠ½Π° прилоТСния, Π·Π° обслуТиваниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ само ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π—Π° нСклиСнтский Ρ€Π΅Π³ΠΈΠΎΠ½ (non-client area), Π±ΠΎΡ€Π΄ΡŽΡ€Ρ‹, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, ΠΏΠΎΠ»Π·ΡƒΠ½ΠΎΠΊ, ΠΎΠΊΠ½Π°, ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ядро систСмы.

Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как вывСсти символ Π² ассСмблСрС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как вывСсти символ Π² ассСмблСрС. Π€ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС

Π”Π°Π±Ρ‹ прилоТСния Π½Π΅ «ΠΏΠΎΡ€Ρ‚ΠΈΠ»ΠΈ» ΠΎΠΊΠ½Π° Ρ‡ΡƒΠΆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Windows обСспСчиваСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π·Π° Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ посрСдством ограничСния области отрисовки ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π³ΠΎ собствСнной клиСнтской ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ.

Надо ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ этой клиСнтской области ΠΎΠΊΠ½Π° Π½Π΅ постоянСн, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ являСтся ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ постоянных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΎΠΊΠ½Π° (Ρ€Π°Π·ΠΌΠ΅Ρ€, Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€Ρ‡.). Π’ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ это ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΠΈ являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ графичСского интСрфСйса. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… областях.

(НС)Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ области

Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (содСрТимоС) ΠΎΠΊΠΎΠ½ всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ пСрСносится систСмой Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° (Π²ΠΈΠ΄Π΅ΠΎΠΏΠ°ΠΌΡΡ‚ΡŒ) для нСпосрСдствСнного отобраТСния Π½Π° экранС. Начиная с этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° подразумСваСтся, Ρ‡Ρ‚ΠΎ систСмС извСстно содСрТимоС части экрана, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ всСм ΠΎΠΊΠ½Π°ΠΌ, контСкст ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ пСрСнСсСн. Π―Π΄Ρ€ΠΎ постоянно отслСТиваСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ графичСского интСрфСйса, располоТСнныС Π½Π° экранС: измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΎΠΊΠΎΠ½, ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅. Если Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΠΊΠ½Π°Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ происходит, Ρ‚ΠΎ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€ обновляСт содСрТимоС экрана, пСриодичСски выбирая Π΅Π³ΠΎ ΠΈΠ· собствСнной видСопамяти. Если ΠΎΠΊΠ½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ/Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ/ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ, Ρ‚ΠΎ Π½Π° экранС ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ области, информация ΠΎΠ± ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… тСряСт Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΈΠ½Ρ‹ΠΌΠΈ словами потСряна (нСизвСстна) для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Π’ этом случаС систСма ΠΈΠ·Π²Π΅Ρ‰Π°Π΅Ρ‚ ΠΎΠΊΠ½Π°, области (части, Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹) ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… стали Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΎ нСобходимости Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ (ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ) собствСнноС содСрТимоС. Π’Π΅Π΄ΡŒ Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ столС Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ пСрСтаскиваСт ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ стороннСС ΠΎΠΊΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ²Π΅Ρ€Ρ… содСрТимого нашСго ΠΎΠΊΠ½Π°, Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚/вновь ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ, ΠΈΠ»ΠΈ просто сворачиваСт ΠΈ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ прилоТСния. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠΊΠ½Π° (ΠΈΠ»ΠΈ ΠΎΠΊΠ½ΠΎ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ) ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚Π° содСрТимым находящСгося Π²Ρ‹ΡˆΠ΅ ΠΎΠΊΠ½Π°, ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‰Π΅Π½Π° (скрыта) Ρ‡Π°ΡΡ‚ΡŒΡŽ содСрТимого ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΠΊΠ½Π°, поэтому Ρ‡Π°ΡΡ‚ΡŒ клиСнтская области ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° становится Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. Π”Π°Π²Π°ΠΉΡ‚Π΅ пСрСчислим Π²ΠΈΠ΄Ρ‹ областСй:

Если чСстно, ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ программистом Π²ΡΡ‚Π°ΡŽΡ‚ Π½Π΅ Ρ‚Π°ΠΊΠΈΠ΅ ΡƒΠΆ ΠΈ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. Π’ΡƒΡ‚, ΠΊΠ°ΠΊ говорится, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΡ‰ΡƒΠΏΠ°Π΅ΡˆΡŒ всС эти ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π΅ поймСшь. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли ΠΌΡ‹ пишСм эдакий ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΈΠΉ графичСский Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для рисования ΠΌΡ‹ΡˆΡŒΡŽ (абстрактная кривая) Π² основном ΠΎΠΊΠ½Π΅, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС Ρ‚ΠΎΡ‡ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ Π² случаС пСрСмСщСния ΠΎΠΊΠ½Π° Π½Π°ΠΌ потрСбуСтся ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ (Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ) Π΅Ρ‘ всю Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. Π’Π° ΠΆΠ΅ ситуация ΠΈ с тСкстом, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всю Ρ‚Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, которая использовалась Π²ΠΎ всСх элСмСнтах ΠΎΠΊΠ½Π° ΠΈ Π½Π° основании ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π² любоС врСмя ΠΎΠΊΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с тСкстовой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ (Π²Ρ‹Π²ΠΎΠ΄Π΅/Π²Π²ΠΎΠ΄Π΅), ΠΊΠΎΠ΄ прилоТСния Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² памяти, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ «ΠΏΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ» систСмы вывСсти Π½Π° экран, Ρ‚Π΅ΠΌ самым ΠΎΠ±Π½ΠΎΠ²ΠΈΠ² (пСрСрисовав) Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ содСрТимоС ΠΎΠΊΠ½Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, принимая Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ всё Π²Ρ‹ΡˆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄:

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ устройства [отобраТСния]

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ отрисовку ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ любого входящСго сообщСния (Ρ‡Π°Ρ‰Π΅ всСго WM_PAINT ), Ρ‚Π°ΠΊ ΠΈ Π²Π½Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний ΠΎΠΊΠ½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний ΠΏΠΎΡ‚ΠΎΠΊΠ°. Но, Π½Π΅ всС Ρ‚Π°ΠΊ просто ΠΊΠ°ΠΊ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹, ΠΈ для этого, Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ «Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ», трСбуСтся Π΅Ρ‰Π΅ поизвСсти ряд ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… дСйствий. Π’ ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСния, нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ рисования Ρ‡Π΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ Π² клиСнтской области «ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΠΎΠ³ΠΎ» ΠΎΠΊΠ½Π°, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ систСмы Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ «Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅» Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ дСйствия. Под Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ подразумСваСтся систСмная структура ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ контСкст устройства отобраТСния (контСкст отобраТСния). Π‘ΠΎΠ²Π΅Ρ‚ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΏΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ссылкС ΠΈ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠΌ. ПослС этого, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ получСния контСкста устройства

Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с контСкстом устройства, трСбуСтся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Говоря простым языком, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π½Π°Π΄ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ спСциализированных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ дСскриптор контСкста устройства. А Π²ΠΎΡ‚ Ρ‚ΡƒΡ‚ Ρ‚ΠΎ начинаСтся опрСдСлСнная ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠΊΠ°. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ запроса контСкста устройства Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π² зависимости ΠΎΡ‚ условий ΠΈ Ρ†Π΅Π»Π΅ΠΉ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… этот запрос выполняСтся:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как вывСсти строку Π½Π° экран Π² АссСмблСрС

Π§Ρ‚ΠΎ Π±Ρ‹ Π½ΠΈ Π΄Π΅Π»Π°Π»Π° ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° экран. И Ссли Π² языках высокого уровня это дСлаСтся β€œΠ»Ρ‘Π³ΠΊΠΈΠΌ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ руки”, Ρ‚ΠΎ Π² ассСмблСрС для этого приходится ΠΊΠ°ΠΊ слСдуСт ΠΏΠΎΠΌΡƒΡ‡ΠΈΡ‚ΡŒΡΡ.

ΠŸΡ€Π°Π²Π΄Π°, Π² соврСмСнных воплощСниях языка АссСмблСра ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ стандартныС макросы ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Π²Ρ‹Π²ΠΎΠ΄Π° строк Π½Π° экран. Однако Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструкций, Π±Π΅Π· примСнСния ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‰ΠΈΡ… Тизнь Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ строки Π½Π° экран ΠΌΠΎΠΆΠ½ΠΎ двумя путями:

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² тСкстовом Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²Ρ‹Π²ΠΎΠ΄ Π½Π° экран ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… способов:

Π’Ρ€Π΅Ρ‚ΠΈΠΉ способ Ρ…ΠΎΡ€ΠΎΡˆ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ сразу записываСт Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²ΠΈΠ΄Π΅ΠΎΠΏΠ°ΠΌΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ быстро. Однако Π² нашС врСмя ΠΎΠ½ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ, Ρ€Π°Π·Π²Π΅ Ρ‡Ρ‚ΠΎ, Π² ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… цСлях. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ соврСмСнныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ β€œΠΆΠ΅Π»Π΅Π·Ρƒβ€.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° являСтся Ρ‡ΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅, Ρ‡Π΅ΠΌ ΡƒΡ‡Π΅Π±Π½ΠΎΠΉ, Ρ‚ΠΎ придётся ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… способов. Ну Π° Ссли Π²Π°ΠΌ интСрСсно, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ нСпосрСдствСнно Π² Π²ΠΈΠ΄Π΅ΠΎΠΏΠ°ΠΌΡΡ‚ΡŒ, Ρ‚ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ здСсь ΠΈΠ»ΠΈ здСсь.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° DOS

Π˜Ρ‚Π°ΠΊ, Π½Π°Ρ‡Π½Ρ‘ΠΌ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄Π° DOS. Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ функциями ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы DOS, Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами Windows.

Как я ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π½Π° экранС строку Π² Ρ†ΠΈΠΊΠ»Π΅, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ выводя ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ. Для этих Ρ†Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 02h, 06h ΠΈΠ»ΠΈ Π½Π΅Π΄ΠΎΠΊΡƒΠΌΠ΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ 29h.

Если трСбуСтся вывСсти Π½Π° экран строку Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 09h ΠΈ 40h.

Для использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ DOS Π½Π°Π΄ΠΎ сначала ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² рСгистр AH, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ 21h.

Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как вывСсти символ Π² ассСмблСрС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как вывСсти символ Π² ассСмблСрС. Π€ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС

ΠŸΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании Π½Π° экран Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как вывСсти символ Π² ассСмблСрС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как вывСсти символ Π² ассСмблСрС. Π€ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° BIOS

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ BIOS Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ символы (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 09h, 0Ah, 0Eh), Ρ‚Π°ΠΊ ΠΈ строки Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ (функция 13h).

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ BIOS ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌ, ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ курсора, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ символ ΠΈ Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹.

Π₯отя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DOS Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ символы, Π½ΠΎ всё-Ρ‚Π°ΠΊΠΈ возмоТности BIOS Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈ.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с функциями BIOS Ρ‚Π°ΠΊΠΆΠ΅ сначала Π½Π°Π΄ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² рСгистр AH, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ 10h.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ 13h. ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π΄ΠΎ:

Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как вывСсти символ Π² ассСмблСрС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как вывСсти символ Π² ассСмблСрС. Π€ΠΎΡ‚ΠΎ Как вывСсти символ Π² ассСмблСрС

Π Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ± ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… функциях, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ± установкС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Π²Π΅Ρ‰Π°Ρ… сСгодня Π½Π΅ Π±ΡƒΠ΄Ρƒ. Если ΠΊΠΎΠΌΡƒ интСрСсно, Ρ‚ΠΎ всё это ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² справочных ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°Ρ….

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *