Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Микропроцессоры. Учебник

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Ɋɢɫɭɧɨɤ 1 – Ɉɛɳɚɹ ɫɯɟɦɚ ɪɚɡɪɚɛɨɬɤɢ ɩɪɨɝɪɚɦɦɵ ɧɚ ɚɫɫɟɦɛɥɟɪɟ
Ɍɪɚɧɫɥɹɰɢɹ ɩɪɨɝɪɚɦɦɵ
ɇɚ ɷɬɨɦ ɲɚɝɟ ɮɨɪɦɢɪɭɟɬɫɹ ɨɛɴɟɤɬɧɵɣ ɦɨɞɭɥɶ (*.obj), ɤɨɬɨɪɵɣ ɜɤɥɸ­ɱɚɟɬ ɜ ɫɟɛɹ ɩɪɟɞɫɬɚɜɥɟɧɢɟ ɢɫɯɨɞɧɨɣ ɢɧɮɨɪɦɚɰɢɢ ɜ ɦɚɲɢɧɧɵɯ ɤɨɞɚɯ.
ȼ ɪɟɡɭɥɶɬɚɬɟ ɧɚ ɷɤɪɚɧɟ ɮɨɪɦɢɪɭɟɬɫɹ ɩɨɫɥɟɞɨɜɚɬɟɥɶɧɨɫɬɶ ɫɬɪɨɤ. ȿɫɥɢ ɩɪɨɝɪɚɦɦɚ ɫɨɞɟɪɠɢɬ ɨɲɢɛɤɢ, ɬɨ ɬɪɚɧɫɥɹɬɨɪ ɜɵɞɚɫɬ ɧɚ ɷɤɪɚɧ ɫɬɪɨɤɢ ɫɨ­ɨɛɳɟɧɢɣ, ɧɚɱɢɧɚɸɳɢɯɫɹ ɫɨ ɫɥɨɜ «Error» ɢɥɢ «Warning» (ɨɲɢɛɤɚ ɢɥɢ ɩɪɟɞɭɩɪɟɠɞɟɧɢɟ). ɇɚɥɢɱɢɟ ɨɲɢɛɨɤ ɫɜɢɞɟɬɟɥɶɫɬɜɭɟɬ ɨ ɬɨɦ, ɱɬɨ ɜ ɩɪɨɝɪɚɦ­ɦɟ ɩɪɢɫɭɬɫɬɜɭɸɬ ɧɟɞɨɩɭɫɬɢɦɵɟ ɫ ɬɨɱɤɢ ɡɪɟɧɢɹ ɫɢɧɬɚɤɫɢɫɚ ɤɨɦɛɢɧɚɰɢɢ ɫɢɦɜɨɥɨɜ. ɇɚɥɢɱɢɟ ɫɬɪɨɤɢ ɩɪɟɞɭɩɪɟɠɞɟɧɢɣ ɦɨɠɟɬ ɩɨɫɥɭɠɢɬɶ ɢɫɬɨɱɧɢɤɨɦ ɩɨɫɥɟɞɭɸɳɢɯ ɨɲɢɛɨɤ. ɉɨɫɥɟ ɢɫɩɪɚɜɥɟɧɢɹ ɨɞɧɨɣ ɨɲɢɛɤɢ ɦɨɝɭɬ ɢɫɱɟɡɧɭɬɶ ɩɨɫɥɟɞɭɸɳɢɟ, ɬɚɤ ɧɚɡɵɜɚɟɦɵɟ ɧɚɜɟɞɟɧɧɵɟ ɨɲɢɛɤɢ.
Ʉɨɦɩɨɧɨɜɤɚ ɩɪɨɝɪɚɦɦɵ – ɫɨɡɞɚɧɢɟ ɢɫɩɨɥɧɹɟɦɨɝɨ ɡɚɝɪɭɡɨɱɧɨɝɨ ɦɨɞɭɥɹ.
ɐɟɥɶ ɷɬɨɝɨ
ɲɚɝɚ – ɩɪɟɨɛɪɚɡɨɜɚɬɶ ɤɨɞ ɢ ɞɚɧɧɵɟ ɜ ɨɛɴɟɤɬɧɵɯ ɮɚɣɥɚɯ ɜ ɢɯ ɩɟɪɟɦɟɳɚɟɦɨɟ ɜɵɩɨɥɧɹɟɦɨɟ ɨɬɨɛɪɚɠɟɧɢɟ (*.exe). ɉɪɨɰɟɫɫ ɫɨɡɞɚɧɢɹ ɢɫɩɨɥɧɹɟɦɨɝɨ ɦɨɞɭɥɹ ɧɚ ɞɜɚ ɲɚɝɚ (ɬɪɚɧɫɥɹɰɢɹ ɢ ɤɨɦɩɨɧɨɜɤɚ) ɪɚɡɞɟɥɹɸɬ ɧɚɦɟɪɟɧɧɨ ɞɥɹ ɨɛɴɟɞɢɧɟɧɢɹ ɧɟɫɤɨɥɶɤɢɯ ɦɨɞɭɥɟɣ. Ɋɟɡɭɥɶɬɚɬɨɦ ɪɚɛɨɬɵ ɤɨɦɩɨɧɨɜɳɢɤɚ ɹɜɥɹɟɬɫɹ ɫɨɡɞɚɧɢɟ ɡɚɝɪɭɡɨɱɧɨɝɨ ɮɚɣɥɚ ɫ ɪɚɫɲɢɪɟɧɢɟɦ
«*.exe».
ɇɚ ɷɬɚɩɟ ɨɬɥɚɞɤɢ ɫ ɩɪɢɜɥɟɱɟɧɢɟɦ ɨɩɢɫɚɧɢɹ ɚɥɝɨɪɢɬɦɚ ɜɵɩɨɥɧɹɟɬɫɹ
ɤɨɧɬɪɨɥɶ ɩɪɚɜɢɥɶɧɨɫɬɢ
ɮɭɧɤɰɢɨɧɢɪɨɜɚɧɢɹ ɤɚɤ ɨɬɞɟɥɶɧɵɯ ɭɱɚɫɬɤɨɜ ɤɨɞɚ,
ɬɚɤ ɢ ɜɫɟɣ ɩɪɨɝɪɚɦɦɵ ɜ ɰɟɥɨɦ.
Ɉɬɥɚɞɱɢɤ, ɩɪɟɞɫɬɚɜɥɹɸɳɢɣ ɫɨɛɨɣ ɨɤɨɧɧɭɸ ɫɪɟɞɭ ɨɬɥɚɞɤɢ ɩɪɨɝɪɚɦɦ
ɧɚ ɭɪɨɜɧɟ ɢɫɯɨɞɧɨɝɨ ɬɟɤɫɬɚ, ɩɨɡɜɨɥɹɟɬ ɪɟɲɚɬɶ ɞɜɟ ɝɥɚɜɧɵɟ ɡɚɞɚɱɢ:
–
ɨɩɪɟɞɟɥɢɬɶ ɦɟɫɬɨ ɥɨɝɢɱɟɫɤɨɣ ɨɲɢɛɤɢ;
–
ɨɩɪɟɞɟɥɢɬɶ ɩɪɢɱɢɧɭ ɩɨɹɜɥɟɧɢɹ ɥɨɝɢɱɟɫɤɨɣ ɨɲɢɛɤɢ.
21
.486 .model flat, stdcall option casemap: none
include /masm32/include/windows.inc include /masm32/include/user32.inc include /masm32/include/kernel32.inc
includelib /masm32/lib/user32.lib includelib /masm32/lib/kernel32.lib
include /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32
.data
.code start:
call GetCommandLine ; ɪɟɡɭɥɶɬɚɬ ɛɭɞɟɬ ɩɨɦɟɳɟɧ ɜ eax
push 0 push chr$("Command Line") push eax ; ɬɟɤɫɬ ɞɥɹ ɜɵɜɨɞɚ ɛɟɪɟɦ ɢɡ eax push 0 call MessageBox
push 0 call ExitProcess
end start
ɋɬɚɧɞɚɪɬɧɵɟ ɜɨɡɦɨɠɧɨɫɬɢ ɨɬɥɚɞɱɢɤɚ, ɩɨɡɜɨɥɹɸɳɢɟ ɧɚɣɬɢ ɦɟɫɬɨ
ɢ ɢɫɬɨɱɧɢɤ ɨɲɢɛɤɢ ɜ ɩɪɨɝɪɚɦɦɟ:
–
ɜɵɩɨɥɧɟɧɢɟ ɬɪɚɫɫɢɪɨɜɤɢ ɩɪɨɝɪɚɦɦɵ ɜ ɩɪɹɦɨɦ ɧɚɩɪɚɜɥɟɧɢɢ, ɬ. ɟ. ɩɨɫɥɟɞɨɜɚɬɟɥɶɧɨɟ ɢɫɩɨɥɧɟɧɢɟ ɩɪɨɝɪɚɦɦɵ, ɤɨɝɞɚ ɡɚ ɨɞɢɧ ɲɚɝ ɜɵɩɨɥɧɹɟɬɫɹ ɨɞɧɚ ɦɚɲɢɧɧɚɹ ɢɧɫɬɪɭɤɰɢɹ;
–
ɜɵɩɨɥɧɟɧɢɟ ɬɪɚɫɫɢɪɨɜɤɢ ɩɪɨɝɪɚɦɦɵ ɜ ɨɛɪɚɬɧɨɦ ɧɚɩɪɚɜɥɟɧɢɢ, ɬ. ɟ. ɩɨ ɨɞɧɨɣ ɤɨɦɚɧɞɟ, ɧɨ ɜ ɨɛɪɚɬɧɨɦ ɧɚɩɪɚɜɥɟɧɢɢ;
–
ɩɪɨɫɦɨɬɪ ɢ ɢɡɦɟɧɟɧɢɟ ɫɨɫɬɨɹɧɢɹ ɚɩɩɚɪɚɬɧɵɯ ɪɟɫɭɪɫɨɜ ɦɢɤɪɨɩɪɨ­ɰɟɫɫɨɪɚ ɜɨ ɜɪɟɦɹ ɩɨɤɨɦɚɧɞɧɨɝɨ ɜɵɩɨɥɧɟɧɢɹ ɩɪɨɝɪɚɦɦɵ.
22
ȽɅȺȼȺ 2. ɄɈɆȺɇȾɕ əɁɕɄȺ ASSEMBLER
5. ɋɢɫɬɟɦɚ ɤɨɦɚɧɞ ɦɢɤɪɨɩɪɨɰɟɫɫɨɪɚ
ɉɪɨɝɪɚɦɦɢɪɨɜɚɧɢɟ ɧɚ ɭɪɨɜɧɟ ɦɚɲɢɧɧɵɯ ɤɨɦɚɧɞ – ɷɬɨ ɦɢɧɢɦɚɥɶɧɵɣ
ɭɪɨɜɟɧɶ, ɧɚ ɤɨɬɨɪɨɦ ɜɨɡɦɨɠɧɨ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɟ ɤɨɦɩɶɸɬɟɪɚ. ɋɢɫɬɟɦɚ ɦɚɲɢɧɧɵɯ ɤɨɦɚɧɞ ɞɨɥɠɧɚ ɛɵɬɶ ɞɨɫɬɚɬɨɱɧɨɣ ɞɥɹ ɬɨɝɨ, ɱɬɨɛɵ ɪɟɚɥɢɡɨ­ɜɚɬɶ ɬɪɟɛɭɟɦɵɟ ɞɟɣɫɬɜɢɹ, ɜɵɞɚɜɚɹ ɭɤɚɡɚɧɢɹ ɚɩɩɚɪɚɬɭɪɟ ɦɚɲɢɧɵ.
Ʉɚɠɞɚɹ ɦɚɲɢɧɧɚɹ ɤɨɦɚɧɞɚ ɫɨɫɬɨɢɬ ɢɡ ɞɜɭɯ ɱɚɫɬɟɣ: ɨɩɟɪɚɰɢɨɧɧɨɣ ɱɚ­ɫɬɢ, ɨɩɪɟɞɟɥɹɸɳɟɣ, ɱɬɨ ɞɟɥɚɬɶ, ɢ ɨɩɟɪɚɧɞɧɨɣ ɱɚɫɬɢ, ɨɩɪɟɞɟɥɹɸɳɟɣ ɨɛɴ­ɟɤɬɵ ɨɛɪɚɛɨɬɤɢ.
ɦɚɲɢɧɧɭɸ ɤɨɦɚɧɞɭ ɹɜɧɨ ɢ ɧɟɹɜɧɨ ɜɤɥɸɱɟɧɵ ɫɥɟɞɭɸɳɢɟ ɷɥɟɦɟɧɬɵ:
ȼ
1. ɉɨɥɟ ɩɪɟɮɢɤɫɨɜ – ɷɥɟɦɟɧɬ ɤɨɦɚɧɞɵ, ɤɨɬɨɪɵɣ ɭɬɨɱɧɹɟɬ ɥɢɛɨ ɦɨɞɢ-
ɮɢɰɢɪɭɟɬ ɞɟɣɫɬɜɢɟ ɤɨɦɚɧɞɵ ɜ ɫɥɟɞɭɸɳɢɯ ɚɫɩɟɤɬɚɯ:
a. ɡɚɦɟɧɚ ɫɟɝɦɟɧɬɚ, ɟɫɥɢ ɧɟ ɭɞɨɜɥɟɬɜɨɪɹɟɬ ɢɦɟɸɳɢɣɫɹ ɫɟɝɦɟɧɬ ɩɨ ɭɦɨɥɱɚɧɢɸ;
b. ɢɡɦɟɧɟɧɢɟ ɪɚɡɦɟɪɧɨɫɬɢ ɚɞɪɟɫɚ;
c. ɭɤɚɡɚɧɢɟ ɧɚ ɧɟɨɛɯɨɞɢɦɨɫɬɶ ɩɨɜɬɨɪɟɧɢɹ ɤɨɦɚɧɞɵ.
2. ɉɨɥɟ ɤɨɞɚ ɨɩɟɪɚɰɢɢ – ɨɩɪɟɞɟɥɹɸɳɟɟ ɞɟɣɫɬɜɢɟ ɤɨɦɚɧɞɵ
. Ɉɞɧɨɣ ɢ
ɬɨɣ ɠɟ ɤɨɦɚɧɞɟ ɦɨɝɭɬ ɫɨɨɬɜɟɬɫɬɜɨɜɚɬɶ ɧɟɫɤɨɥɶɤɨ ɤɨɞɨɜ ɨɩɟɪɚɰɢɣ ɜ ɡɚɜɢ­ɫɢɦɨɫɬɢ ɨɬ ɟɟ ɨɩɟɪɚɧɞɨɜ.
3. ɉɨɥɟ ɨɩɟɪɚɧɞɨɜ – ɫɨɞɟɪɠɢɬ ɨɬ ɧɭɥɹ ɞɨ ɞɜɭɯ ɷɥɟɦɟɧɬɨɜ.
Ɉɫɨɛɟɧɧɨɫɬɶ ɦɚɲɢɧɧɵɯ ɤɨɦɚɧɞ ɫɨɫɬɚɜɥɹɟɬ ɬɨ, ɱɬɨ ɨɧɢ ɧɟ ɦɨɝɭɬ ɦɚ­ɧɢɩɭɥɢɪɨɜɚɬɶ ɨɞɧɨɜɪɟɦɟɧɧɨ ɞɜɭɦɹ ɨɩɟɪɚɧɞɚɦɢ, ɧɚɯɨɞɹɳɢɦɢɫɹ ɜ ɨɩɟɪɚ­ɬɢɜɧɨɣ ɩɚɦɹɬɢ. ȼ ɤɨɦɚɧɞɟ ɦɨɝɭɬ ɛɵɬɶ ɢɫɩɨɥɶɡɨɜɚɧɵ: ɨɞɢɧ ɪɟɝɢɫɬɪ ɢɥɢ ɪɟ­ɝɢɫɬɪ ɢ ɧɟɤɨɬɨɪɵɣ ɨɩɟɪɚɧɞ, ɤɨɬɨɪɵɣ ɦɨɠɟɬ ɥɢɛɨ ɧɟɩɨɫɪɟɞɫɬɜɟɧɧɨ ɧɚɯɨ­ɞɢɬɶɫɹ ɜ ɤɨɦɚɧɞɟ, ɥɢɛɨ ɪɚɫɩɨɥɚɝɚɬɶɫɹ ɜ ɩɚɦɹɬɢ.
ɉɨ ɷɬɨɣ ɩɪɢɱɢɧɟ ɜɨɡɦɨɠɧɵ ɬɨɥɶɤɨ ɫɥɟɞɭɸɳɢɟ ɫɨɱɟɬɚɧɢɹ
ɨɩɟɪɚɧɞɨɜ ɜ
ɤɨɦɚɧɞɟ:
–
ɪɟɝɢɫɬɪ-ɪɟɝɢɫɬɪ;
–
ɪɟɝɢɫɬɪ-ɩɚɦɹɬɶ;
–
ɩɚɦɹɬɶ-ɪɟɝɢɫɬɪ;
–
ɧɟɩɨɫɪɟɞɫɬɜɟɧɧɵɣ ɨɩɟɪɚɧɞ-ɪɟɝɢɫɬɪ;
–
ɧɟɩɨɫɪɟɞɫɬɜɟɧɧɵɣ ɨɩɟɪɚɧɞ-ɩɚɦɹɬɶ.
ɉɪɟɮɢɤɫɵ – ɷɬɨ ɧɟɨɛɹɡɚɬɟɥɶɧɵɟ ɷɥɟɦɟɧɬɵ ɦɚɲɢɧɧɨɣ ɤɨɦɚɧɞɵ, ɩɪɟɞ­ɧɚɡɧɚɱɟɧɧɵɟ ɞɥɹ ɦɨɞɢɮɢɤɚɰɢɢ ɨɩɟɪɚɰɢɢ, ɜɵɩɨɥɧɹɟɦɨɣ ɷɬɨɣ ɤɨɦɚɧɞɨɣ.
ɉɪɟɮɢɤɫ ɡɚɦɟɧɵ ɫɟɝɦɟɧɬɚ – ɜ ɹɜɧɨɣ ɮɨɪɦɟ ɭɤɚɡɵɜɚɟɬ, ɤɚɤɨɣ ɫɟɝ­ɦɟɧɬɧɵɣ ɪɟɝɢɫɬɪ ɢɫɩɨɥɶɡɭɟɬɫɹ ɜ ɞɚɧɧɨɣ ɤɨɦɚɧɞɟ ɞɥɹ ɚɞɪɟɫɚɰɢɢ ɫɬɟɤɚ ɢɥɢ ɞɚɧɧɵɯ.
ɉɪɟɮɢɤɫ ɪɚɡɪɹɞɧɨɫɬɢ ɚɞɪɟɫɚ – ɭɬɨɱɧɹɟɬ ɪɚɡɪɹɞɧɨɫɬɶ ɚɞɪɟɫɚ 16- ɢɥɢ 32-ɪɚɡɪɹɞɧɵɣ ɚɞɪɟɫ.
23
ɉɪɟɮɢɤɫ ɪɚɡɪɹɞɧɨɫɬɢ ɨɩɟɪɚɧɞɚ – ɭɤɚɡɵɜɚɟɬ ɧɚ ɪɚɡɪɹɞɧɨɫɬɶ ɨɩɟɪɚɧ­ɞɚ, ɫ ɤɨɬɨɪɵɦ ɪɚɛɨɬɚɟɬ ɤɨɦɚɧɞɚ (16- ɢɥɢ 32-ɪɚɡɪɹɞɧɵɣ).
ɉɪɟɮɢɤɫ ɩɨɜɬɨɪɟɧɢɹ ɡɚɰɢɤɥɢɜɚɟɬ ɤɨɦɚɧɞɭ ɞɥɹ ɨɛɪɚɛɨɬɤɢ ɜɫɟɯ ɷɥɟ­ɦɟɧɬɨɜ ɰɟɩɨɱɤɢ. Ⱦɜɚ ɬɢɩɚ ɩɪɟɮɢɤɫɨɜ: ɛɟɡɭɫɥɨɜɧɵɟ ɢ ɭɫɥɨɜɧɵɟ, ɤɨɬɨɪɵɟ ɩɪɨɜɟɪɹɸɬ ɧɟɤɨɬɨɪɵɟ ɮɥɚɝɢ ɢ ɜ ɪɟɡɭɥɶɬɚɬɟ ɩɪɨɜɟɪɤɢ ɨɫɭɳɟɫɬɜɥɹɸɬ ɞɨ­ɫɪɨɱɧɵɣ ɢɯ ɜɵɯɨɞ ɢɡ ɰɢɤɥɚ.
ɇɚ ɦɢɤɪɨɩɪɨɝɪɚɦɦɧɨɦ ɭɪɨɜɧɟ ɨɩɟɪɚɧɞ ɡɚɞɚɟɬɫɹ ɧɟɹɜɧɨ
. ȼ ɷɬɨɦ ɫɥɭ­ɱɚɟ ɤɨɦɚɧɞɚ ɹɜɧɨ ɧɟ ɫɨɞɟɪɠɢɬ ɨɩɟɪɚɧɞɨɜ, ɚ ɚɥɝɨɪɢɬɦ ɜɵɩɨɥɧɟɧɢɹ ɷɬɨɣ ɤɨɦɚɧɞɵ ɢɫɩɨɥɶɡɭɟɬ ɧɟɤɨɬɨɪɵɟ ɨɛɴɟɤɬɵ ɩɨ ɭɦɨɥɱɚɧɢɸ (ɪɟɝɢɫɬɪɵ, ɮɥɚɝɢ
eflags).
ɇɟɩɨɫɪɟɞɫɬɜɟɧɧɵɣ ɨɩɟɪɚɧɞ ɡɚɞɚɟɬɫɹ ɜ ɫɚɦɨɣ ɤɨɦɚɧɞɟ. Ɉɩɟɪɚɧɞ ɧɚɯɨ­ɞɢɬɫɹ ɜ ɤɨɞɟ ɤɨɦɚɧɞɵ, ɬ. ɟ. ɹɜɥɹɟɬɫɹ ɟɟ ɱɚɫɬɶɸ. Ⱦɥɹ ɯɪɚɧɟɧɢɹ ɬɚɤɨɝɨ ɨɩɟ­ɪɚɧɞɚ ɜ ɤɨɦɚɧɞɟ ɜɵɞɟɥɹɟɬɫɹ ɩɨɥɟ ɞɥɢɧɨɣ ɞɨ 32-ɯ ɛɢɬ. Ɉɩɟɪɚɧɞ ɦɨɠɟɬ ɧɚɯɨɞɢɬɶɫɹ ɜ ɨɞɧɨɦ ɢɡ ɪɟɝɢɫɬɪɨɜ. Ɋɟɝɢɫɬɪɨɜɵɟ ɨɩɟɪɚɧɞɵ ɭɤɚɡɵɜɚɸɬɫɹ ɢɦɟɧɚɦɢ ɪɟɝɢɫɬɪɨɜ (ɬɚɛɥɢɰɚ 1).
Ɍɚɛɥɢɰɚ 1 – ɋɨɨɬɜɟɬɫɬɜɢɟ ɢɦɟɧ ɢ ɪɚɡɦɟɪɧɨɫɬɢ ɪɟɝɢɫɬɪɨɜ
32-ɪɚɡɪɹɞɧɵɟ ɪɟɝɢɫɬɪɵ
EȺX, EBX, EɋX, EDX, ESI, EDI, ESɊ, EBɊ
16-ɪɚɡɪɹɞɧɵɟ ɪɟɝɢɫɬɪɵ ȺX, BX, ɋX, DX, SI, DI, SɊ, BɊ
8-ɪɚɡɪɹɞɧɵɟ ɪɟɝɢɫɬɪɵ ȺH, ȺL, BH, BL, ɋH, ɋL, DH, DL
ɋɟɝɦɟɧɬɧɵɟ ɪɟɝɢɫɬɪɵ ɋS, DS, SS, ES, FS, GS
Ɉɩɟɪɚɧɞ ɪɚɫɩɨɥɚɝɚɟɬɫɹ ɜ ɩɚɦɹɬɢ ɢ ɩɨɡɜɨɥɹɟɬ ɪɟɚɥɢɡɨɜɚɬɶ ɞɜɚ ɨɫɧɨɜ­ɧɵɯ ɜɢɞɚ ɚɞɪɟɫɚɰɢɢ: ɩɪɹɦɭɸ ɢ ɤɨɫɜɟɧɧɭɸ.
Ɉɩɟɪɚɧɞɨɦ ɹɜɥɹɟɬɫɹ ɬɚɤɠɟ ɩɨɪɬ ɜɜɨɞɚ/ɜɵɜɨɞɚ. Ɇɢɤɪɨɩɪɨɰɟɫɫɨɪ ɩɨɞ­ɞɟɪɠɢɜɚɟɬ ɚɞɪɟɫɧɨɟ ɩɪɨɫɬɪɚɧɫɬɜɨ ɜɜɨɞɚ/ɜɵɜɨɞɚ, ɤɨɬɨɪɨɟ ɢɫɩɨɥɶɡɭɟɬɫɹ ɞɥɹ ɞɨɫɬɭɩɚ ɤ ɭɫɬɪɨɣɫɬɜɚɦ ɜɜɨɞɚ/ɜɵɜɨɞɚ. ȼ ɤɚɱɟɫɬɜɟ ɢɫɬɨɱɧɢɤɚ ɢɧɮɨɪɦɚɰɢɢ ɢɥɢ ɩɨɥɭɱɚɬɟɥɹ ɩɪɢɦɟɧɹɸɬ ɪɟɝɢɫɬɪɵ-ɚɤɤɭɦɭɥɹɬɨɪɵ eɚx, ɚx, ɚl.
Ʌɨɝɢɱɟɫɤɢɟ ɤɨɦɚɧɞɵ
1. Ɉɩɟɪɚɰɢɹ ɥɨɝɢɱɟɫɤɨɝɨ ɭɦɧɨɠɟɧɢɹ. Ʉɨɦɚɧɞɚ ɜɵɩɨɥɧɹɟɬ ɩɨɪɚɡɪɹɞɧɨ
ɥɨɝɢɱɟɫɤɭɸ ɨɩɟɪɚɰɢɸ «ɂ», ɤɨɧɴɸɧɤɰɢɸ, &. Ɋɟɡɭɥɶɬɚɬ ɡɚɩɢɫɵɜɚɟɬɫɹ ɧɚ ɦɟɫɬɨ «ɨɩɟɪɚɧɞ_1».
and ɨɩɟɪɚɧɞ_1, ɨɩɟɪɚɧɞ_2
2. Ɉɩɟɪɚɰɢɹ ɥɨɝɢɱɟɫɤɨɝɨ ɫɥɨɠɟɧɢɹ. Ʉɨɦɚɧɞɚ ɜɵɩɨɥɧɹɟɬ ɩɨɪɚɡɪɹɞɧɨ
ɥɨɝɢɱɟɫɤɭɸ ɨɩɟɪɚɰɢɸ «ɂɅɂ», ɞɢɡɴɸɧɤɰɢɸ, . Ɋɟɡɭɥɶɬɚɬ ɡɚɩɢɫɵɜɚɟɬɫɹ ɧɚ ɦɟɫɬɨ ɨɩɟɪɚɧɞ_1.
ɨr ɨɩɟɪɚɧɞ_1, ɨɩɟɪɚɧɞ_2
3. Ɉɩɟɪɚɰɢɹ ɢɫɤɥɸɱɚɸɳɟɝɨ «ɂɅɂ». Ɋɟɡɭɥɶɬɚɬ ɧɚ ɦɟɫɬɨ ɨɩɟɪɚɧɞ_1.
xɨr ɨɩɟɪɚɧɞ_1, ɨɩɟɪɚɧɞ
_2
24
4. Ɉɩɟɪɚɰɢɹ «ɉɊɈȼȿɊɂɌɖ». Ʉɨɦɚɧɞɚ ɜɵɩɨɥɧɹɟɬ ɩɨɪɚɡɪɹɞɧɨ ɥɨɝɢɱɟ-
ɫɤɭɸ ɨɩɟɪɚɰɢɸ «ɂ» ɧɚɞ ɛɢɬɚɦɢ ɨɩɟɪɚɬɨɪɨɜ. ɋɨɫɬɨɹɧɢɟ ɨɩɟɪɚɧɞɨɜ ɨɫɬɚɟɬ­ɫɹ ɩɪɟɠɧɢɦ, ɢɡɦɟɧɹɸɬɫɹ ɬɨɥɶɤɨ ɮɥɚɝɢ zf, sf, ɪf, ɱɬɨ ɞɚɟɬ ɜɨɡɦɨɠɧɨɫɬɶ ɚɧɚɥɢɡɢɪɨɜɚɬɶ ɫɨɫɬɨɹɧɢɟ ɨɬɞɟɥɶɧɵɯ ɛɢɬɨɜ ɨɩɟɪɚɧɞɚ ɛɟɡ ɟɝɨ ɢɡɦɟɧɟɧɢɹ.
test ɨɩɟɪɚɧɞ_1, ɨɩɟɪɚɧɞ_2
5. Ɉɩɟɪɚɰɢɹ ɥɨɝɢɱɟɫɤɨɝɨ ɨɬɪɢɰɚɧɢɹ. Ʉɨɦɚɧɞɚ ɜɵɩɨɥɧɹɟɬ ɩɨɪɚɡɪɹɞɧɨɟ
ɢɧɜɟɪɬɢɪɨɜɚɧɢɟ ɤɚɠɞɨɝɨ ɛɢɬɚ ɨɩɟɪɚɧɞɚ.
nɨt ɨɩɟɪɚɧɞ
Ɏɥɚɝɢ
ɂɫɯɨɞɹ ɢɡ ɨɫɨɛɟɧɧɨɫɬɟɣ ɢɫɩɨɥɶɡɨɜɚɧɢɹ, ɮɥɚɝɢ ɪɟɝɢɫɬɪɚ eflags/flags ɦɨɠɧɨ ɪɚɡɞɟɥɢɬɶ ɧɚ ɬɪɢ ɝɪɭɩɩɵ:
1. ȼɨɫɟɦɶ ɮɥɚɝɨɜ ɫɨɫɬɨɹɧɢɹ. ɗɬɢ ɮɥɚɝɢ ɦɨɝɭɬ ɢɡɦɟɧɹɬɶ ɫɜɨɟ ɫɨɫɬɨɹ-
ɧɢɟ ɩɨɫɥɟ ɜɵɩɨɥɧɟɧɢɹ ɦɚɲɢɧɧɵɯ ɤɨɦɚɧɞ. Ɏɥɚɝɢ ɪɟɝɢɫɬɪɚ eflags ɨɬɪɚɠɚ­ɸɬ ɨɫɨɛɟɧɧɨɫɬɢ ɪɟɡɭɥɶɬɚɬɚ ɢɫɩɨɥɧɟɧɢɹ ɚɪɢɮɦɟɬɢɱɟɫɤɢɯ ɢɥɢ ɥɨɝɢɱɟɫɤɢɯ ɨɩɟɪɚɰɢɣ. ɗɬɨ ɩɨɡɜɨɥɹɟɬ ɚɧɚɥɢɡɢɪɨɜɚɬɶ ɫɨɫɬɨɹɧɢɟ ɜɵɱɢɫɥɢɬɟɥɶɧɨɝɨ ɩɪɨ­ɰɟɫɫɚ ɢ ɪɟɚɝɢɪɨɜɚɬɶ ɧɚ ɧɟɝɨ
ɫ ɩɨɦɨɳɶɸ ɤɨɦɚɧɞ ɭɫɥɨɜɧɵɯ ɩɟɪɟɯɨɞɨɜ ɢ ɜɵ-
ɡɨɜɚ ɩɨɞɩɪɨɝɪɚɦɦ.
2. Ɉɞɢɧ ɮɥɚɝ ɭɩɪɚɜɥɟɧɢɹ df (directory flag). Ɉɧ ɢɫɩɨɥɶɡɭɟɬɫɹ ɰɟɩɨɱɟɱ-
ɧɵɦɢ ɤɨɦɚɧɞɚɦɢ. Ɂɧɚɱɟɧɢɟ ɮɥɚɝɚ ɨɩɪɟɞɟɥɹɟɬ ɧɚɩɪɚɜɥɟɧɢɟ ɩɨɷɥɟɦɟɧɬɧɨɣ ɨɛɪɚɛɨɬɤɢ: ɨɬ ɧɚɱɚɥɚ ɫɬɪɨɤɢ ɤ ɤɨɧɰɭ (df = 0) ɥɢɛɨ, ɧɚɨɛɨɪɨɬ, ɨɬ ɤɨɧɰɚ ɫɬɪɨɤɢ ɤ ɟɟ ɧɚɱɚɥɭ (df = 1).
3. ɉɹɬɶ ɫɢɫɬɟɦɧɵɯ ɮɥɚɝɨɜ. ɍɩɪɚɜɥɹɸɬ ɜɜɨɞɨɦ/ɜɵɜɨɞɨɦ, ɦɚɫɤɢɪɭɟ-
ɦɵɦɢ ɩɪɟɪɵɜɚɧɢɹɦɢ,
ɨɬɥɚɞɤɨɣ, ɫɢɫɬɟɦɨɣ ɩɟɪɟɤɥɸɱɟɧɢɹ ɦɟɠɞɭ ɡɚɞɚɱɚɦɢ.
.486
.model flat, stdcall
option casemap: none
include /masm32/include/windows.inc
include /masm32/include/user32.inc
include /masm32/include/kernel32.inc
includelib /masm32/lib/user32.lib
includelib /masm32/lib/kernel32.lib
include /masm32/macros/macros.asm
uselib masm32, comctl32, ws2_32
.data
.code
start:
mov eax, 123
25
mov ebx, -90
add eax, ebx
test eax, eax
jz zero
invoke MessageBox, 0, chr$("ȼ eax ɧɟ 0!"), chr$("Info"), 0
jmp lexit
zero:
invoke MessageBox, 0, chr$("ȼ eax 0!"), chr$("Info"), 0
lexit:
invoke ExitProcess, 0
end start
ɇɚ ɪɢɫɭɧɤɟ 2 ɫɢɫɬɟɦɚɬɢɡɢɪɨɜɚɧɵ ɨɫɧɨɜɧɵɟ ɰɟɥɨɱɢɫɥɟɧɧɵɟ ɤɨɦɚɧɞɵ, ɩɪɢɦɟɧɹɟɦɵɟ ɩɪɢ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɢ ɧɚ ɹɡɵɤɟ ɚɫɫɟɦɛɥɟɪɚ.
Ɋɢɫɭɧɨɤ 2 – ɐɟɥɨɱɢɫɥɟɧɧɵɟ ɚɪɢɮɦɟɬɢɱɟɫɤɢɟ ɤɨɦɚɧɞɵ
26
6. Ʉɨɦɚɧɞɵ ɨɛɦɟɧɚ ɞɚɧɧɵɦɢ
Ʉ ɝɪɭɩɩɟ ɤɨɦɚɧɞ ɩɟɪɟɫɵɥɤɢ ɞɚɧɧɵɯ ɨɬɧɨɫɹɬɫɹ ɫɥɟɞɭɸɳɢɟ:
mov <ɨɩɟɪɚɧɞ ɧɚɡɧɚɱɟɧɢɹ>, <ɨɩɟɪɚɧɞ-ɢɫɬɨɱɧɢɤ>
xchg <ɨɩɟɪɚɧɞ 1>, <ɨɩɟɪɚɧɞ 2>
MOV – ɷɬɨ ɨɫɧɨɜɧɚɹ ɤɨɦɚɧɞɚ ɩɟɪɟɫɵɥɤɢ ɞɚɧɧɵɯ, ɪɟɚɥɢɡɭɸɳɚɹ ɫɚɦɵɟ
ɪɚɡɧɨɨɛɪɚɡɧɵɟ ɜɚɪɢɚɧɬɵ ɩɟɪɟɫɵɥɤɢ. Ɉɬɦɟɬɢɦ ɨɫɨɛɟɧɧɨɫɬɢ ɩɪɢɦɟɧɟɧɢɹ ɷɬɨɣ ɤɨɦɚɧɞɵ. ɋ ɟɟ ɩɨɦɨɳɶɸ MOV ɧɟɜɨɡɦɨɠɧɨ ɩɟɪɟɫɵɥɚɬɶ ɞɚɧɧɵɟ ɢɡ ɨɞɧɨɣ ɨɛɥɚɫɬɢ ɩɚɦɹɬɢ ɜ ɞɪɭɝɭɸ. ȼ ɫɥɭɱɚɟ ɧɟɨɛɯɨɞɢɦɨɫɬɢ ɜ ɤɚɱɟɫɬɜɟ ɩɪɨ­ɦɟɠɭɬɨɱɧɨɝɨ ɛɭɮɟɪɚ
ɢɫɩɨɥɶɡɭɸɬ ɥɸɛɨɣ ɞɨɫɬɭɩɧɵɣ ɜ ɞɚɧɧɵɣ ɦɨɦɟɧɬ ɪɟ-
ɝɢɫɬɪ ɨɛɳɟɝɨ ɧɚɡɧɚɱɟɧɢɹ.
ɇɟɜɨɡɦɨɠɧɨ ɡɚɝɪɭɡɢɬɶ ɜ ɫɟɝɦɟɧɬɧɵɣ ɪɟɝɢɫɬɪ ɡɧɚɱɟɧɢɟ ɧɟɩɨɫɪɟɞ­ɫɬɜɟɧɧɨ ɢɡ ɩɚɦɹɬɢ. Ⱦɥɹ ɷɬɨɝɨ ɬɪɟɛɭɟɬɫɹ ɩɪɨɦɟɠɭɬɨɱɧɵɣ ɨɛɴɟɤɬ, ɧɚɩɪɢ­ɦɟɪ, ɪɟɝɢɫɬɪ ɨɛɳɟɝɨ ɧɚɡɧɚɱɟɧɢɹ ɢɥɢ ɫɬɟɤ.
ɇɟɜɨɡɦɨɠɧɨ ɩɟɪɟɫɥɚɬɶ ɫɨɞɟɪɠɢɦɨɟ ɨɞɧɨɝɨ ɫɟɝɦɟɧɬɧɨɝɨ ɪɟɝɢɫɬɪɚ ɜ ɞɪɭɝɨɣ ɫɟɝɦɟɧɬɧɵɣ ɪɟɝɢɫɬɪ. ɗɬɨ ɨɛɴɹɫɧɹɟɬɫɹ ɬɟɦ, ɱɬɨ ɜ ɫɢɫɬɟɦɟ ɤɨɦɚɧɞ ɨɬɫɭɬɫɬɜɭɟɬ
ɫɨɨɬɜɟɬɫɬɜɭɸɳɢɣ ɤɨɞ ɨɩɟɪɚɰɢɢ. Ɉɞɧɚɤɨ ɧɟɨɛɯɨɞɢɦɨɫɬɶ ɜ ɫɨ-
ɜɟɪɲɟɧɢɢ ɬɚɤɨɝɨ ɞɟɣɫɬɜɢɹ ɱɚɫɬɨ ɜɨɡɧɢɤɚɟɬ. ȼɵɩɨɥɧɢɬɶ ɬɚɤɭɸ ɩɟɪɟɫɵɥɤɭ ɦɨɠɧɨ ɛɥɚɝɨɞɚɪɹ ɢɫɩɨɥɶɡɨɜɚɧɢɸ ɜ ɤɚɱɟɫɬɜɟ ɩɪɨɦɟɠɭɬɨɱɧɵɯ ɪɟɝɢɫɬɪɵ ɨɛɳɟɝɨ ɧɚɡɧɚɱɟɧɢɹ.
ɂɡɜɟɫɬɟɧ ɞɪɭɝɨɣ ɫɩɨɫɨɛ ɜɵɩɨɥɧɟɧɢɹ ɞɚɧɧɨɣ ɨɩɟɪɚɰɢɢ – ɢɫɩɨɥɶɡɨɜɚ­ɧɢɟ ɫɬɟɤɚ ɢ ɤɨɦɚɧɞ PUSH ɢ POP (ɬɚɛɥɢɰɚ 2).
Ɍɚɛɥɢɰɚ 2 – Ɂɧɚɱɟɧɢɟ ɤɨɦɚɧɞ ɪɚɛɨɬɵ ɫɨ ɫɬɟɤɨɦ
Push ds ɉɨɦɟɫɬɢɬɶ ɡɧɚɱɟɧɢɟ ɪɟɝɢɫɬɪɚ ds ɜ ɫɬɟɤ
Poɪ es Ɂɚɩɢɫɚɬɶ ɜ es ɱɢɫɥɨ ɢɡ ɫɬɟɤɚ
ɋɟɝɦɟɧɬɧɵɣ ɪɟɝɢɫɬɪ CS ɧɟɜɨɡɦɨɠɧɨ ɢɫɩɨɥɶɡɨɜɚɬɶ ɜ ɤɚɱɟɫɬɜɟ ɨɩɟɪɚɧ­ɞɚ ɧɚɡɧɚɱɟɧɢɹ. ȼ ɚɪɯɢɬɟɤɬɭɪɟ ɩɪɨɰɟɫɫɨɪɚ ɩɚɪɚ CS:IP ɫɨɞɟɪɠɢɬ ɚɞɪɟɫ ɤɨ­ɦɚɧɞɵ, ɤɨɬɨɪɚɹ ɞɨɥɠɧɚ ɜɵɩɨɥɧɹɬɶɫɹ ɫɥɟɞɭɸɳɟɣ. ɂɡɦɟɧɟɧɢɟ ɤɨɦɚɧɞɨɣ MOV ɫɨɞɟɪɠɢɦɨɝɨ ɪɟɝɢɫɬɪɚ CS ɮɚɤɬɢɱɟɫɤɢ ɨɛɨɡɧɚɱɚɟɬ ɨɩɟɪɚɰɢɸ ɩɟɪɟ­ɯɨɞɚ, ɚ ɧɟ ɩɟɪɟɫɵɥɤɢ, ɱɬɨ ɧɟɞɨɩɭɫɬɢɦɨ. ȼ ɫɜɹɡɢ ɫ ɩɪɢɦɟɧɟɧɢɟɦ ɤɨɦɚɧɵ
MOV ɨɬɦɟɬɢɦ: ɩɭɫɬɶ ɜ ɪɟɝɢɫɬɪɟ ȼɏ ɫɨɞɟɪɠɢɬɫɹ
ɚɞɪɟɫ ɧɟɤɨɬɨɪɨɝɨ ɩɨɥɹ,
ɬ. ɟ. ɦɵ ɢɫɩɨɥɶɡɭɟɦ ɤɨɫɜɟɧɧɭɸ ɛɚɡɨɜɭɸ ɚɞɪɟɫɚɰɢɸ. ȿɝɨ ɫɨɞɟɪɠɢɦɨɟ ɧɟɨɛɯɨɞɢɦɨ ɩɟɪɟɫɥɚɬɶ ɜ ɪɟɝɢɫɬɪ Ⱥɏ, ɬɨ ɩɪɢɦɟɧɹɸɬ ɤɨɦɚɧɞɭ MOV ɫ ɫɨɨɬ­ɜɟɬɫɬɜɭɸɳɢɦ ɫɢɧɬɚɤɫɢɫɨɦ:
mɨv ɚx, [bɯ]
Ɍɪɚɧɫɥɹɬɨɪ ɪɟɲɚɟɬ ɡɚɞɚɱɭ ɨ ɬɨɦ, ɱɬɨ ɚɞɪɟɫɭɟɬ ɪɟɝɢɫɬɪ ȼɏ ɜ ɩɚɦɹɬɢ – ɫɥɨɜɨ ɢɥɢ ɛɚɣɬ. Ɉɛɵɱɧɨ ɜ ɷɬɨɦ ɫɥɭɱɚɟ ɨɧ ɩɪɢɧɢɦɚɟɬ ɪɟɲɟɧɢɟ ɫɚɦ, ɩɨ ɪɚɡ­ɦɟɪɭ ɛɨɥɶɲɟɝɨ ɨɩɟɪɚɧɞɚ, ɧɨ ɦɨɠɟɬ ɢ ɜɵɞɚɬɶ ɩɪɟɞɭɩɪɟɠɞɚɸɳɟɟ ɫɨɨɛɳɟ­ɧɢɟ ɨ ɜɨɡɦɨɠɧɨɦ ɧɟɫɨɜɩɚɞɟɧɢɢ ɬɢɩɨɜ ɨɩɟɪɚɧɞɨɜ.
27
Ⱦɥɹ ɭɬɨɱɧɟɧɢɹ ɚɞɪɟɫɚ ɪɟɝɢɫɬɪɚ ȼɏ ɜ ɩɚɦɹɬɢ – ɛɚɣɬ, ɫɥɨɜɨ ɢɥɢ ɞɜɨɣ­ɧɨɟ ɫɥɨɜɨ ɞɨɩɭɫɬɢɦ ɬɚɤɠɟ, ɱɬɨ ɬɪɟɛɭɟɬɫɹ ɢɧɢɰɢɚɥɢɡɢɪɨɜɚɬɶ ɩɨɥɟ, ɚɞɪɟɫɭ-
ɟɦɨɟ ɪɟɝɢɫɬɪɨɦ ȼɏ, ɡɧɚɱɟɧɢɟɦ 0. Ɉɱɟɜɢɞɧɵɦ ɹɜɥɹɟɬɫɹ ɩɪɢɦɟɧɟɧɢɟ ɨɞɧɨɝɨ ɢɡ ɪɟɲɟɧɢɣ – ɤɨɦɚɧɞɵ MOV:
mov [bx] ,0
Ɍɪɚɧɫɥɹɬɨɪ ɪɟɲɚɟɬ ɡɚɞɚɱɭ: ɤɚɤɭɸ ɦɚɲɢɧɧɭɸ ɤɨɦɚɧɞɭ ɤɨɧɫɬɪɭɢɪɨ- ɜɚɬɶ ɞɥɹ ɢɧɢɰɢɚɥɢɡɚɰɢɢ ɛɚɣɬɚ, ɫɥɨɜɚ, ɞɜɨɣɧɨɝɨ ɫɥɨɜɚ.
ȼɨ ɜɫɟɯ ɫɥɭɱɚɹɯ ɧɟɨɛɯɨɞɢɦɨ
ɭɬɨɱɧɹɬɶ ɬɢɩ ɢɫɩɨɥɶɡɭɟɦɵɯ ɨɩɟɪɚɧɞɨɜ.
Ⱦɥɹ ɷɬɨɝɨ ɫɭɳɟɫɬɜɭɟɬ ɫɩɟɰɢɚɥɶɧɵɣ ɨɩɟɪɚɬɨɪ ɚɫɫɟɦɛɥɟɪɚ ɊTR. ɉɪɢɜɟɞɟɧ­ɧɵɟ ɪɚɧɟɟ ɤɨɦɚɧɞɵ ɦɨɠɧɨ ɡɚɩɢɫɚɬɶ ɫɥɟɞɭɸɳɢɦ ɨɛɪɚɡɨɦ:
–
mov ax, wɨrd ɪtr [bx]; ɟɫɥɢ [bx] ɚɞɪɟɫɭɟɬ ɫɥɨɜɨ ɜ ɩɚɦɹɬɢ;
–
inc byte ptr [bx]; ɟɫɥɢ [bx] ɚɞɪɟɫɭɟɬ ɛɚɣɬ ɜ ɩɚɦɹɬɢ;
–
dec dword ptr [bx]; ɟɫɥɢ [bɯ] ɚɞɪɟɫɭɟɬ ɞɜɨɣɧɨɟ ɫɥɨɜɨ ɜ ɩɚɦɹɬɢ;
–
mov word ptr [bx], 0; ɟɫɥɢ [bɯ] ɚɞɪɟɫɭɟɬ ɫɥɨɜɨ ɜ ɩɚɦɹɬɢ.
Ɇɨɠɧɨ ɪɟɤɨɦɟɧɞɨɜɚɬɶ ɢɫɩɨɥɶɡɨɜɚɬɶ ɨɩɟɪɚɬɨɪ ɊTR ɜɨ ɜɫɟɯ ɫɨɦɧɢ­ɬɟɥɶɧɵɯ ɨɬɧɨɫɢɬɟɥɶɧɨ ɫɨɝɥɚɫɨɜɚɧɢɹ ɪɚɡɦɟɪɨɜ ɨɩɟɪɚɧɞɨɜ ɫɥɭɱɚɹɯ. ɗɬɨɬ ɨɩɟɪɚɬɨɪ ɬɚɤɠɟ ɧɟɨɛɯɨɞɢɦɨ ɩɪɢɦɟɧɹɬɶ, ɤɨɝɞɚ ɬɪɟɛɭɟɬɫɹ ɩɪɢɧɭɞɢɬɟɥɶɧɨ ɢɡɦɟɧɢɬɶ ɪɚɡɦɟɪɧɨɫɬɶ ɨɩɟɪɚɧɞɨɜ. ɇɟɫɦɨɬɪɹ ɧɚ ɬɨ, ɱɬɨ ɩɨɥɟ flɪ ɢɦɟɟɬ ɬɢɩ WɈRD, ɦɵ ɫɨɨɛɳɚɟɦ ɚɫɫɟɦɛɥɟɪɭ ɨ ɬɨɦ, ɱɬɨ ɩɨɥɟ ɧɭɠɧɨ ɬɪɚɤɬɨɜɚɬɶ ɤɚɤ ɛɚɣɬɨɜɨɟ, ɢ ɡɚɫɬɚɜɥɹɟɦ ɜɵɱɢɫɥɢɬɶ ɡɧɚɱɟɧɢɟ
ɷɮɮɟɤɬɢɜɧɨɝɨ ɚɞɪɟɫɚ ɜɬɨɪɨɝɨ
ɨɩɟɪɚɧɞɚ ɤɚɤ ɫɦɟɳɟɧɢɟ flɪ ɩɥɸɫ ɟɞɢɧɢɰɚ. Ɍɚɤɢɦ ɨɛɪɚɡɨɦ, ɩɨɥɭɱɚɟɦ ɞɨ­ɫɬɭɩ ɤɨ ɜɬɨɪɨɦɭ ɛɚɣɬɭ ɩɨɥɹ flɪ. Ⱦɥɹ ɞɜɭɧɚɩɪɚɜɥɟɧɧɨɣ ɩɟɪɟɫɵɥɤɢ ɞɚɧɧɵɯ ɩɪɢɦɟɧɹɸɬ ɤɨɦɚɧɞɭ XɋHG ɢɥɢ ɢɫɩɨɥɶɡɭɸɬ ɩɨɫɥɟɞɨɜɚɬɟɥɶɧɨɫɬɶ ɢɡ ɧɟ­ɫɤɨɥɶɤɢɯ ɤɨɦɚɧɞ MɈV. Ɉɞɧɚɤɨ ɷɬɚ ɨɩɟɪɚɰɢɹ ɨɛɦɟɧɚ ɩɪɢɦɟɧɹɟɬɫɹ ɞɨɜɨɥɶ­ɧɨ ɱɚɫɬɨ, ɩɨɷɬɨɦɭ ɪɚɡɪɚɛɨɬɱɢɤɢ ɫɢɫɬɟɦɵ ɤɨɦɚɧɞ ɩɪɨɰɟɫɫɨɪɚ
ɩɨɫɱɢɬɚɥɢ
ɧɭɠɧɵɦ ɜɜɟɫɬɢ ɨɬɞɟɥɶɧɭɸ ɤɨɦɚɧɞɭ ɨɛɦɟɧɚ – XɋHG. ȿɫɬɟɫɬɜɟɧɧɨ, ɱɬɨ ɨɩɟɪɚɧɞɵ ɞɨɥɠɧɵ ɢɦɟɬɶ ɨɞɢɧ ɬɢɩ. ɇɟ ɞɨɩɭɫɤɚɟɬɫɹ (ɤɚɤ ɢ ɞɥɹ ɜɫɟɯ ɤɨɦɚɧɞ ɚɫɫɟɦɛɥɟɪɚ) ɧɚɩɪɹɦɭɸ ɨɛɦɟɧɢɜɚɬɶ ɦɟɠɞɭ ɫɨɛɨɣ ɫɨɞɟɪɠɢɦɨɟ ɞɜɭɯ ɹɱɟɟɤ ɩɚɦɹɬɢ. ɇɚɩɪɢɦɟɪ,
ɨɛɦɟɧɹɬɶ ɫɨɞɟɪɠɢɦɨɟ ɪɟɝɢɫɬɪɨɜ ɚɯ ɢ bɯ
xchg ɚɯ, bɯ
ɨɛɦɟɧɹɬɶ ɫɨɞɟɪɠɢɦɨɟ ɪɟɝɢɫɬɪɚ ɚɯ ɢ ɫɥɨɜɚ ɜ ɩɚɦɹɬɢ ɩɨ ɚɞɪɟɫɭ
ɜ [si]
xchg ɚx, wɨrd ɪtr [si]
ȼɜɨɞ/ɜɵɜɨɞ ɜ ɩɨɪɬ
ɋɢɫɬɟɦɚ ɜɜɨɞɚ/ɜɵɜɨɞɚ, ɬ. ɟ. ɤɨɦɩɥɟɤɫ ɫɪɟɞɫɬɜ ɨɛɦɟɧɚ ɢɧɮɨɪɦɚɰɢɟɣ ɫ ɜɧɟɲɧɢɦɢ ɭɫɬɪɨɣɫɬɜɚɦɢ, ɹɜɥɹɟɬɫɹ ɜɚɠɧɟɣɲɟɣ ɱɚɫɬɶɸ ɚɪɯɢɬɟɤɬɭɪɵ ɩɪɨ­ɰɟɫɫɨɪɚ ɢ ɦɚɲɢɧɵ ɜ ɰɟɥɨɦ. Ʉ ɫɢɫɬɟɦɟ ɜɜɨɞɚ-ɜɵɜɨɞɚ ɦɨɠɧɨ ɨɬɧɟɫɬɢ ɫɩɨ­ɫɨɛɵ ɩɨɞɤɥɸɱɟɧɢɹ ɤ ɫɢɫɬɟɦɧɨɣ ɲɢɧɟ ɪɚɡɥɢɱɧɨɝɨ ɨɛɨɪɭɞɨɜɚɧɢɹ ɢ ɩɪɨɰɟ­ɞɭɪɵ ɜɡɚɢɦɨɞɟɣɫɬɜɢɹ ɩɪɨɰɟɫɫɨɪɚ ɫ ɷɬɢɦ ɨɛɨɪɭɞɨɜɚɧɢɟɦ, ɚ ɬɚɤɠɟ ɤɨɦɚɧɞɵ ɩɪɨɰɟɫɫɨɪɚ, ɩɪɟɞɧɚɡɧɚɱɟɧɧɵɟ ɞɥɹ ɨɛɦɟɧɚ ɞɚɧɧɵɦɢ ɫ ɜɧɟɲɧɢɦɢ ɭɫɬɪɨɣ-
28
ɫɬɜɚɦɢ. ɇɟɩɪɟɪɵɜɧɨɟ ɫɨɜɟɪɲɟɧɫɬɜɨɜɚɧɢɟ ɬɟɯɧɨɥɨɝɢɱɟɫɤɨɝɨ ɩɪɨɰɟɫɫɚ ɩɪɨɢɡɜɨɞɫɬɜɚ ɦɢɤɪɨɩɪɨɰɟɫɫɨɪɨɜ ɢ ɧɚɩɪɚɜɥɟɧɢɟ ɧɚ ɦɚɤɫɢɦɚɥɶɧɨɟ ɩɨɜɵ­ɲɟɧɢɟ ɩɪɨɢɡɜɨɞɢɬɟɥɶɧɨɫɬɢ ɜɵɱɢɫɥɢɬɟɥɶɧɨɣ ɫɢɫɬɟɦɵ ɩɪɢɜɟɥɢ ɤ ɫɭɳɟ­ɫɬɜɟɧɧɨɦɭ ɭɫɥɨɠɧɟɧɢɸ ɜɧɭɬɪɟɧɧɟɣ ɨɪɝɚɧɢɡɚɰɢɢ ɤɨɦɩɶɸɬɟɪɨɜ: ɭɜɟɥɢɱɟ­ɧɢɸ ɪɚɡɪɹɞɧɨɫɬɢ ɲɢɧ, ɩɨɹɜɥɟɧɢɸ ɜɧɭɬɪɟɧɧɢɯ ɛɵɫɬɪɨɞɟɣɫɬɜɭɸɳɢɯ ɦɚɝɢ­ɫɬɪɚɥɟɣ ɨɛɦɟɧɚ ɞɚɧɧɵɦɢ, ɢɫɩɨɥɶɡɨɜɚɧɢɸ ɤɷɲ-ɛɭɮɟɪɨɜ ɞɥɹ ɭɫɤɨɪɟɧɢɹ ɩɪɨɰɟɫɫɚ ɨɛɦɟɧɚ ɫ ɩɚɦɹɬɶɸ ɢ ɞɢɫɤɚɦɢ. ȿɫɥɢ ɨɬɜɥɟɱɶɫɹ ɨɬ ɜɚɠɧɵɯ, ɫ
ɬɨɱɤɢ ɡɪɟɧɢɹ ɩɪɨɢɡɜɨɞɢɬɟɥɶɧɨɫɬɢ, ɧɨ ɧɟɫɭɳɟɫɬɜɟɧɧɵɯ ɞɥɹ ɩɪɨɝɪɚɦɦɢɫɬɚ ɞɟɬɚ­ɥɟɣ, ɬɨ ɥɨɝɢɱɟɫɤɭɸ ɫɯɟɦɭ ɫɨɜɪɟɦɟɧɧɨɝɨ ɤɨɦɩɶɸɬɟɪɚ ɦɨɠɧɨ ɩɪɟɞɫɬɚɜɢɬɶ ɬɪɚɞɢɰɢɨɧɧɵɦ ɨɛɪɚɡɨɦ ɜ ɜɢɞɟ ɫɢɫɬɟɦɧɨɣ ɲɢɧɵ (ɦɚɝɢɫɬɪɚɥɢ), ɤ ɤɨɬɨɪɨɣ ɩɨɞɤɥɸɱɚɸɬɫɹ ɫɚɦ ɦɢɤɪɨɩɪɨɰɟɫɫɨɪ ɢ ɜɫɟ ɭɫɬɪɨɣɫɬɜɚ ɤɨɦɩɶɸɬɟɪɚ.
ɋɢɫɬɟɦɧɚɹ ɲɢɧɚ ɩɪɟɞɫɬɚɜɥɹɟɬ ɫɨɛɨɣ ɧɚɛɨɪ ɥɢɧɢɣ – ɩɪɨɜɨɞɨɜ, ɤ ɤɨɬɨ­ɪɵɦ ɟɞɢɧɨɨɛɪɚɡɧɨ ɩɨɞɤɥɸɱɚɸɬɫɹ ɜɫɟ ɭɫɬɪɨɣɫɬɜɚ ɤɨɦɩɶɸɬɟɪɚ. ȼ ɛɨɥɟɟ ɲɢɪɨɤɨɦ
ɡɧɚɱɟɧɢɢ ɜ ɩɨɧɹɬɢɟ «ɫɢɫɬɟɦɧɚɹ ɲɢɧɚ» ɫɥɟɞɭɟɬ ɜɤɥɸɱɢɬɶ ɷɥɟɤ­ɬɪɢɱɟɫɤɢɟ ɢ ɥɨɝɢɱɟɫɤɢɟ ɯɚɪɚɤɬɟɪɢɫɬɢɤɢ ɫɢɝɧɚɥɨɜ, ɞɟɣɫɬɜɭɸɳɢɯ ɧɚ ɥɢɧɢ­ɹɯ ɲɢɧɵ, ɢɯ ɧɚɡɧɚɱɟɧɢɟ, ɚ ɬɚɤɠɟ ɩɪɚɜɢɥɚ ɢɯ ɜɡɚɢɦɨɞɟɣɫɬɜɢɹ ɩɪɢ ɜɵɩɨɥ­ɧɟɧɢɢ ɪɚɡɥɢɱɧɵɯ ɨɩɟɪɚɰɢɣ ɧɚ ɲɢɧɟ – ɩɪɨɬɨɤɨɥɵ ɨɛɦɟɧɚ ɢɧɮɨɪɦɚɰɢɟɣ. ɋɢɝɧɚɥɵ, ɪɚɫɩɪɨɫɬɪɚɧɹɸɳɢɟɫɹ ɩɨ ɲɢɧɟ, ɞɨɫɬɭɩɧɵ ɜɫɟɦ ɩɨɞɤɥɸɱɟɧɧɵɦ ɤ ɧɟɣ ɭɫɬɪɨɣɫɬɜɚɦ, ɢ ɜ ɡɚɞɚɱɭ ɤɚɠɞɨɝɨ ɢɡ ɧɢɯ
ɜɯɨɞɹɬ ɜɵɛɨɪ ɩɪɟɞɧɚɡɧɚɱɟɧ­ɧɵɯ ɟɦɭ ɫɢɝɧɚɥɨɜ ɢ ɨɛɟɫɩɟɱɟɧɢɟ ɪɟɚɤɰɢɢ ɧɚ ɧɢɯ, ɫɨɨɬɜɟɬɫɬɜɭɸɳɟɣ ɩɪɨɬɨ­ɤɨɥɭ ɨɛɦɟɧɚ. ɉɪɨɰɟɫɫɨɪ ɫɜɹɡɚɧ ɫ ɫɢɫɬɟɦɧɨɣ ɲɢɧɨɣ ɛɨɥɶɲɢɦ ɤɨɥɢɱɟɫɬɜɨɦ ɥɢɧɢɣ ɫɜɹɡɢ (ɩɪɚɤɬɢɱɟɫɤɢ ɜɫɟɦɢ ɜɵɜɨɞɚɦɢ), ɨɫɬɚɧɨɜɢɦɫɹ ɧɚ ɥɢɧɢɹɯ ɬɪɟɯ ɤɚɬɟɝɨɪɢɣ: ɧɚɛɨɪ ɥɢɧɢɣ ɚɞɪɟɫɨɜ, ɧɚɛɨɪ ɥɢɧɢɣ ɞɚɧɧɵɯ ɢ ɨɞɢɧ ɢɡ ɫɢɝɧɚɥɨɜ ɭɩɪɚɜɥɟɧɢɹ. ɉɨɫɥɟɞɧɢɣ ɫɢɝɧɚɥ ɫɨɞɟɪɠɢɬɫɹ ɬɨɥɶɤɨ ɫɪɟɞɢ ɜɵɯɨɞɧɵɯ ɫɢɝɧɚ­ɥɨɜ ɦɢɤɪɨɩɪɨɰɟɫɫɨɪɚ. ɉɪɨɰɟɫɫɨɪ ɞɥɹ ɡɚɩɢɫɢ ɞɚɧɧɵɯ ɩɨ ɧɟɤɨɬɨɪɨɦɭ ɚɞɪɟ­ɫɭ ɜ ɩɚɦɹɬɢ ɜɵɫɬɚɜɥɹɟɬ ɧɚ ɥɢɧɢɢ ɚɞɪɟɫɨɜ ɬɪɟɛɭɟɦɵɣ ɚɞɪɟɫ, ɚ ɧɚ ɥɢɧɢɢ ɞɚɧɧɵɯ – ɬɪɟɛɭɟɦɵɟ ɞɚɧɧɵɟ. ɍɫɬɪɨɣɫɬɜɨ ɭɩɪɚɜɥɟɧɢɹ ɩɚɦɹɬɶɸ ɪɚɫɲɢɮɪɨ­ɜɵɜɚɟɬ ɩɨɫɬɭɩɢɜɲɢɣ ɚɞɪɟɫ, ɟɫɥɢ ɨɧ ɩɪɢɧɚɞɥɟɠɢɬ ɩɚɦɹɬɢ, ɩɪɢɧɢɦɚɟɬ ɫ ɥɢ­ɧɢɣ ɞɚɧɧɵɯ ɩɨɫɬɭɩɢɜɲɢɟ ɫɜɟɞɟɧɢɹ ɢ ɡɚɧɨɫɢɬ ɢɯ ɜ ɫɨɨɬɜɟɬɫɬɜɭɸɳɭɸ ɹɱɟɣɤɭ ɩɚɦɹɬɢ. Ɉɩɢɫɚɧɧɚɹ ɩɪɨɰɟɞɭɪɚ
ɨɬɪɚɠɚɟɬ ɜɵɩɨɥɧɟɧɢɟ ɩɪɨɰɟɫɫɨɪɨɦ
ɤɨɦɚɧɞɵ ɬɢɩɚ:
mɨv mem, ȺX,
ɝɞɟ mem – ɫɢɦɜɨɥɢɱɟɫɤɨɟ ɨɛɨɡɧɚɱɟɧɢɟ ɹɱɟɣɤɢ ɩɚɦɹɬɢ, ɩɪɢɧɚɞɥɟɠɚɳɟɣ ɫɟɝɦɟɧɬɭ ɞɚɧɧɵɯ ɩɪɨɝɪɚɦɦɵ. ȿɫɥɢ ɩɪɨɰɟɫɫɨɪ, ɜɵɩɨɥɧɹɹ ɤɨɦɚɧɞɭ ɬɢɩɚ:
mɨv ȺX, mem,
ɞɨɥɠɟɧ ɩɪɨɱɢɬɚɬɶ ɞɚɧɧɵɟ ɢɡ ɩɚɦɹɬɢ, ɨɧ ɜɵɫɬɚɜɥɹɟɬ ɧɚ ɥɢɧɢɢ ɚɞɪɟɫɨɜ ɬɪɟ­ɛɭɟɦɵɣ ɚɞɪɟɫ ɢ ɨɠɢɞɚɟɬ ɩɨɫɬɭɩɥɟɧɢɹ ɫɜɟɞɟɧɢɣ. ɍɫɬɪɨɣɫɬɜɨ ɭɩɪɚɜɥɟɧɢɹ ɩɚɦɹɬɶɸ ɩɨɫɥɟ ɪɚɫɲɢɮɪɨɜɤɢ ɩɨɫɬɭɩɢɜɲɟɝɨ ɩɨ ɥɢɧɢɢ ɚɞɪɟɫɚ, ɭɛɟɞɢɜɲɢɫɶ ɜ ɟɝɨ ɧɚɥɢɱɢɢ, ɨɬɵɫɤɢɜɚɟɬ ɜ ɩɚɦɹɬɢ ɬɪɟɛɭɟɦɭɸ ɹɱɟɣɤɭ, ɫɱɢɬɵɜɚɟɬ ɢɡ ɧɟɟ ɫɜɟɞɟɧɢɹ ɢ ɜɵɫɬɚɜɥɹɟɬ ɢɯ ɧɚ ɥɢɧɢɸ ɞɚɧɧɵɯ. ɉɪɨɰɟɫɫɨɪ ɫɧɢɦɚɟɬ ɢɯ ɫ ɲɢ-
29
ɧɵ ɢ ɨɬɩɪɚɜɥɹɟɬ ɜ ɭɤɚɡɚɧɧɵɣ ɜ ɤɨɦɚɧɞɟ ɨɩɟɪɚɧɞ (ɜ ɞɚɧɧɨɦ ɫɥɭɱɚɟ ɜ ɪɟ­ɝɢɫɬɪ Ⱥɏ).
Ɉɩɢɫɚɧɧɵɟ ɩɪɨɰɟɞɭɪɵ ɡɚɩɢɫɢ ɢ ɱɬɟɧɢɹ ɫɩɪɚɜɟɞɥɢɜɵ ɧɟ ɬɨɥɶɤɨ ɩɨ ɨɬ­ɧɨɲɟɧɢɢ ɤ ɩɚɦɹɬɢ. Ⱦɥɹ ɜɫɟɯ ɨɫɬɚɥɶɧɵɯ ɭɫɬɪɨɣɫɬɜ ɤɨɦɩɶɸɬɟɪɚ ɨɧɢ ɫɨɜɩɚ­ɞɚɸɬ. Ɂɚ ɤɚɠɞɵɦ ɭɫɬɪɨɣɫɬɜɨɦ ɡɚɤɪɟɩɥɟɧɚ ɨɩɪɟɞɟɥɟɧɧɚɹ ɝɪɭɩɩɚ ɚɞɪɟɫɨɜ, ɧɚ ɤɨɬɨɪɵɟ ɨɧɨ ɞɨɥɠɧɨ ɨɬɡɵɜɚɬɶɫɹ. ɍɫɬɪɨɣɫɬɜɨ, ɨɛɧɚɪɭɠɢɜ ɫɜɨɣ
ɚɞɪɟɫ ɧɚ ɦɚɝɢɫɬɪɚɥɢ, ɜ ɡɚɜɢɫɢɦɨɫɬɢ ɨɬ ɡɚɞɚɧɧɨɝɨ ɩɪɨɰɟɫɫɨɪɨɦ ɧɚɩɪɚɜɥɟɧɢɹ ɩɟɪɟ­ɞɚɱɢ ɞɚɧɧɵɯ ɜɵɩɨɥɧɹɟɬ ɨɞɧɨ ɢɡ ɫɥɟɞɭɸɳɢɯ ɞɟɣɫɬɜɢɣ: ɥɢɛɨ ɫɱɢɬɵɜɚɟɬ ɫ ɦɚɝɢɫɬɪɚɥɢ ɩɨɫɬɭɩɢɜɲɢɟ ɞɚɧɧɵɟ, ɥɢɛɨ, ɧɚɨɛɨɪɨɬ, ɭɫɬɚɧɚɜɥɢɜɚɟɬ ɢɦɟɸ­ɳɢɟɫɹ ɜ ɧɟɦ ɞɚɧɧɵɟ ɧɚ ɦɚɝɢɫɬɪɚɥɶ.
Ⱥɧɚɥɨɝɢɱɧɚɹ ɫɢɬɭɚɰɢɹ ɧɚɛɥɸɞɚɟɬɫɹ ɫɨ ɦɧɨɝɢɦɢ ɞɪɭɝɢɦɢ ɭɫɬɪɨɣɫɬɜɚ­ɦɢ ɤɨɦɩɶɸɬɟɪɚ. ɇɚɩɪɢɦɟɪ, ɤɨɧɬɪɨɥɥɟɪ ɩɪɟɪɵɜɚɧɢɣ, ɫɥɭɠɚɳɢɣ ɞɥɹ ɨɛɴ­ɟɞɢɧɟɧɢɹ ɫɢɝɧɚɥɨɜ
ɩɪɟɪɵɜɚɧɢɣ ɨɬ ɜɫɟɯ ɭɫɬɪɨɣɫɬɜ ɤɨɦɩɶɸɬɟɪɚ ɢ ɧɚɩɪɚɜ­ɥɟɧɢɹ ɢɯ ɧɚ ɟɞɢɧɫɬɜɟɧɧɵɣ ɜɯɨɞ ɩɪɟɪɵɜɚɧɢɹ ɦɢɤɪɨɩɪɨɰɟɫɫɨɪɚ, ɭɩɪɚɜɥɹɟɬ­ɫɹ ɱɟɪɟɡ ɞɜɚ ɚɞɪɟɫɚ. ɉɨɫɤɨɥɶɤɭ ɜ ɫɨɫɬɚɜ ɦɚɲɢɧɵ ɜɫɟɝɞɚ ɜɤɥɸɱɚɸɬ ɞɜɚ ɤɨɧɬɪɨɥɥɟɪɚ, ɞɥɹ ɧɢɯ ɜɵɞɟɥɹɸɬɫɹ ɞɜɟ ɩɚɪɵ ɚɞɪɟɫɨɜ. ȼɨ ɜɫɟɯ ɤɨɦɩɶɸɬɟɪɚɯ ɬɢɩɚ IBM Ɋɋ ɤɨɧɬɪɨɥɥɟɪɚɦ ɩɪɟɪɵɜɚɧɢɣ ɧɚɡɧɚɱɚɸɬɫɹ ɚɞɪɟɫɚ 20h-21h ɢ Ⱥ0h-Ⱥlh, ɤɨɬɨɪɵɟ ɨɞɧɨɜɪɟɦɟɧɧɨ ɨɬɜɟɱɚɸɬ ɧɟɤɨɬɨɪɵɦ ɛɚɣɬɚɦ
ɨɩɟɪɚɬɢɜɧɨɣ
ɩɚɦɹɬɢ.
ɉɪɨɝɪɚɦɦɧɨɟ ɪɚɡɞɟɥɟɧɢɟ ɭɫɬɪɨɣɫɬɜ ɪɟɚɥɢɡɭɟɬɫɹ ɫ ɩɨɦɨɳɶɸ ɞɜɭɯ
ɧɚɛɨɪɨɜ ɤɨɦɚɧɞ ɩɪɨɰɟɫɫɨɪɚ – ɞɥɹ ɩɚɦɹɬɢ ɢ ɞɥɹ ɭɫɬɪɨɣɫɬɜ ɜɜɨɞɚ/ɜɵɜɨɞɚ.
ȼ ɩɟɪɜɭɸ ɝɪɭɩɩɭ ɜɯɨɞɹɬ ɩɪɚɤɬɢɱɟɫɤɢ ɜɫɟ ɤɨɦɚɧɞɵ ɦɢɤɪɨɩɪɨɰɟɫɫɨɪɚ, ɫ
ɩɨɦɨɳɶɸ ɤɨɬɨɪɵɯ ɦɨɠɧɨ ɨɛɪɚɬɢɬɶɫɹ ɩɨ ɬɨɦɭ ɢɥɢ ɢɧɨɦɭ ɚɞɪɟɫɭ: ɩɟɪɟɫɵɥɤɢ mov ɢ movs, ɚɪɢɮɦɟɬɢɱɟɫɤɢɯ ɞɟɣɫɬɜɢɣ add, mul ɢ div, ɫɞɜɢɝɨɜ rol, ror, sal ɢ sar, ɚɧɚɥɢɡɚ ɫɨɞɟɪɠɢɦɨɝɨ ɛɚɣɬɚ ɢɥɢ ɫɥɨɜɚ test ɢ ɦɧɨɝɢɟ ɞɪɭɝɢɟ. Ɏɚɤɬɢɱɟ­ɫɤɢ ɜ ɩɟɪɜɭɸ ɝɪɭɩɩɭ ɤɨɦɚɧɞɵ ɜɯɨɞɢɬ ɛɨɥɶɲɢɧɫɬɜɨ ɤɨɦɚɧɞ ɩɪɨɰɟɫɫɨɪɚ.
ȼɬɨɪɭɸ ɝɪɭɩɩɭ ɨɛɪɚɡɭɸɬ ɫɩɟɰɢɮɢɱɟɫɤɢɟ ɚɫɫɟɦɛɥɟɪɧɵɟ ɤɨɦɚɧɞɵ ɜɜɨɞɚ/
ɜɵɜɨɞɚ. ȼ Ɇɉ 8086 ɜɫɟɝɨ ɞɜɟ ɤɨɦɚɧɞɵ: ɜɜɨɞɚ in ɢ ɜɵɜɨɞɚ out. Ɍɚɤɢɦ ɨɛɪɚ­ɡɨɦ, ɩɪɢ ɨɛɪɚɳɟɧɢɢ ɤ ɩɚɦɹɬɢ ɢɥɢ ɤ ɜɢɞɟɨɛɭɮɟɪɭ ɢɧɠɟɧɟɪ-
ɩɪɨɝɪɚɦɦɢɫɬ ɦɨɠɟɬ ɢɫɩɨɥɶɡɨɜɚɬɶ ɜɫɟ ɩɨɞɯɨɞɹɳɢɟ ɩɨ ɫɦɵɫɥɭ ɤɨɦɚɧɞɵ ɩɪɨɰɟɫɫɨɪɚ. ɉɪɢ ɷɬɨɦ, ɪɚɛɨɬɚɹ, ɧɚɩɪɢɦɟɪ, ɫ ɜɢɞɟɨɛɭɮɟɪɨɦ, ɦɨɠɧɨ ɧɟ ɬɨɥɶɤɨ ɡɚɫɵɥɚɬɶ ɜ ɧɟ­ɝɨ (ɢɥɢ ɩɨɥɭɱɚɬɶ ɢɡ ɧɟɝɨ) ɞɚɧɧɵɟ, ɧɨ ɢ ɜɵɩɨɥɧɹɬɶ ɧɟɩɨɫɪɟɞɫɬɜɟɧɧɨ ɜ ɧɟɦ ɥɸɛɵɟ ɚɪɢɮɦɟɬɢɱɟɫɤɢɟ, ɥɨɝɢɱɟɫɤɢɟ ɢ ɞɪɭɝɢɟ ɨɩɟɪɚɰɢɢ. Ɉɛɪɚɳɚɬɶɫɹ ɤ ɤɨɧɬɪɨɥɥɟɪɚɦ ɬɟɯ ɢɥɢ ɢɧɵɯ ɭɫɬɪɨɣɫɬɜ (ɤ ɜɢɞɟɨɚɞɚɩɬɟɪɭ ɜ ɬɨɦ ɱɢɫɥɟ
) ɞɨ-
ɩɭɫɬɢɦɨ ɬɨɥɶɤɨ ɫ ɩɨɦɨɳɶɸ ɞɜɭɯ ɤɨɦɚɧɞ – in ɢ out.
ɉɪɨɜɟɞɟɧɢɟ ɚɪɢɮɦɟɬɢɱɟɫɤɢɯ ɨɩɟɪɚɰɢɣ ɢɥɢ ɚɧɚɥɢɡɚ ɞɚɧɧɵɯ ɜ ɭɫɬɪɨɣ-
ɫɬɜɟ ɧɟɜɨɡɦɨɠɧɨ. ɇɟɨɛɯɨɞɢɦɨ ɫɧɚɱɚɥɚ ɩɪɨɱɢɬɚɬɶ ɜ ɩɪɨɰɟɫɫɨɪɟ ɞɚɧɧɵɟ ɢɡ ɜɧɟɲɧɟɝɨ ɭɫɬɪɨɣɫɬɜɚ ɢ ɥɢɲɶ ɡɚɬɟɦ ɜɵɩɨɥɧɹɬɶ ɧɚɞ ɧɢɦ ɬɪɟɛɭɟɦɭɸ ɨɩɟɪɚ­ɰɢɸ. ɇɚɥɢɱɢɟ ɞɜɭɯ ɤɚɬɟɝɨɪɢɣ ɚɞɪɟɫɨɜ ɭɫɬɪɨɣɫɬɜ ɫɜɢɞɟɬɟɥɶɫɬɜɭɟɬ ɨ ɫɭɳɟ­ɫɬɜɨɜɚɧɢɢ ɞɜɭɯɚɞɪɟɫɧɵɯ ɩɪɨɫɬɪɚɧɫɬɜ:
30
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]