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

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

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
9. ɐɟɩɨɱɟɱɧɵɟ ɤɨɦɚɧɞɵ
ɗɥɟɦɟɧɬɚɪɧɵɟ (ɢɥɢ ɛɚɡɨɜɵɟ) ɬɢɩɵ ɞɚɧɧɵɯ:
–
ɧɟɩɨɫɪɟɞɫɬɜɟɧɧɵɟ ɞɚɧɧɵɟ, ɩɪɟɞɫɬɚɜɥɹɸɳɢɟ ɫɨɛɨɣ ɱɢɫɥɨɜɵɟ ɢɥɢ ɫɢɦɜɨɥɶɧɵɟ ɡɧɚɱɟɧɢɹ, ɹɜɥɹɸɳɢɟɫɹ ɱɚɫɬɶɸ ɤɨɦɚɧɞɵ;
–
ɞɚɧɧɵɟ, ɨɩɢɫɵɜɚɟɦɵɟ ɫ ɩɨɦɨɳɶɸ ɨɝɪɚɧɢɱɟɧɧɨɝɨ ɧɚɛɨɪɚ ɞɢɪɟɤɬɢɜ ɪɟɡɟɪɜɢɪɨɜɚɧɢɹ ɩɚɦɹɬɢ, ɩɨɡɜɨɥɹɸɳɢɟ ɜɵɩɨɥɧɢɬɶ ɫɚɦɵɟ ɷɥɟɦɟɧɬɚɪɧɵɟ ɨɩɟɪɚɰɢɢ ɩɨ ɪɚɡɦɟɳɟɧɢɸ ɢ ɢɧɢɰɢɚɥɢɡɚɰɢɢ ɱɢɫɥɨɜɨɣ ɢ ɫɢɦɜɨɥɶɧɨɣ ɢɧ­ɮɨɪɦɚɰɢɢ.
Ɋɚɛɨɬɚ ɫ ɷɥɟɦɟɧɬɚɪɧɵɦɢ ɬɢɩɚɦɢ ɞɚɧɧɵɯ ɩɨɞɞɟɪɠɢɜɚɟɬɫɹ ɧɚ ɭɪɨɜɧɟ ɫɢɫɬɟɦɵ ɤɨɦɚɧɞ ɦɢɤɪɨɩɪɨɰɟɫɫɨɪɚ. Ȼɥɚɝɨɞɚɪɹ ɢɫɩɨɥɶɡɨɜɚɧɢɸ ɞɚɧɧɵɯ ɷɬɢɯ ɬɢɩɨɜ ɦɨɠɧɨ ɮɨɪɦɚɥɢɡɨɜɚɬɶ ɢ ɡɚɩɪɨɝɪɚɦɦɢɪɨɜɚɬɶ ɩɪɚɤɬɢɱɟɫɤɢ ɥɸɛɭɸ ɡɚ­ɞɚɱɭ, ɩɪɢɥɨɠɢɜ ɧɟɤɨɬɨɪɨɟ ɭɫɢɥɢɟ.
ɋ ɰɟɥɶɸ ɭɩɪɨɳɟɧɢɹ ɪɚɡɪɚɛɨɬɤɢ ɩɪɨɝɪɚɦɦ ɜ ɹɡɵɤ ɚɫɫɟɦɛɥɟɪɚ ɛɵɥɚ ɜɜɟɞɟɧɚ ɜɨɡɦɨɠɧɨɫɬɶ ɢɫɩɨɥɶɡɨɜɚɧɢɹ ɧɟɫɤɨɥɶɤɢɯ ɫɥɨɠɧɵɯ ɬɢɩɨɜ ɞɚɧɧɵɯ: ɫɤɚɧɢɪɨɜɚɧɢɟ ɰɟɩɨɱɤɢ, ɡɚɝɪɭɡɤɚ ɷɥɟɦɟɧɬɚ ɢɡ ɰɟɩɨɱɤɢ, ɫɨɯɪɚɧɟɧɢɟ ɷɥɟɦɟɧ ɬɚ ɜ ɰɟɩɨɱɤɟ, ɩɨɥɭɱɟɧɢɟ ɷɥɟɦɟɧɬɨɜ ɰɟɩɨɱɤɢ ɢɡ ɩɨɪɬɚ ɜɜɨɞɚ/ɜɵɜɨɞɚ, ɜɵɜɨɞ ɷɥɟɦɟɧɬɨɜ ɰɟɩɨɱɤɢ ɜ ɩɨɪɬ ɜɜɨɞɚ/ɜɵɜɨɞɚ. Ɉɧɢ ɫɬɪɨɹɬɫɹ ɧɚ ɫɪɚɜɧɟɧɢɢ ɛɚɣɬ, ɫɥɨɜ, ɞɜɨɣɧɵɯ ɫɥɨɜ.
ɋɤɚɧɢɪɨɜɚɧɢɟ ɰɟɩɨɱɤɢ
Sɫɚs ɚɞɪɟɫ_ɩɪɢɟɦɧɢɤɚ
sɫɚsb
sɫɚsw
sɫɚsd
Ɂɚɝɪɭɡɤɚ ɷɥɟɦɟɧɬɚ ɰɟɩɨɱɤɢ
lɨds ɚɞɪɟɫ_ɢɫɬɨɱɧɢɤɚ
lɨdsb
lɨdsw
lɨdsd
ɋɨɯɪɚɧɟɧɢɟ ɷɥɟɦɟɧɬɚ ɜ ɰɟɩɨɱɤɟ
stɨs ɚɞɪɟɫ_ɩɪɢɟɦɧɢɤɚ
stɨsb
stɨsw
stɨsd
ɉɨɥɭɱɟɧɢɟ ɷɥɟɦɟɧɬɨɜ ɰɟɩɨɱɤɢ ɢɡ ɩɨɪɬɚ ɜɜɨɞɚ/ɜɵɜɨɞɚ
ins ɚɞɪɟɫ_ɩɪɢɟɦɧɢɤɚ, ɧɨɦɟɪ ɩɨɪɬɚ
insb
insw
insd
-
41
ȼɵɜɨɞ ɷɥɟɦɟɧɬɨɜ ɰɟɩɨɱɤɢ ɜ ɩɨɪɬ ɜɜɨɞɚ/ɜɵɜɨɞɚ
ɨuts ɧɨɦɟɪ ɩɨɪɬɚ, ɚɞɪɟɫ_ɢɫɬɨɱɧɢɤɚ
ɨutsb
ɨutsw
ɨutsd
ɉɪɢɜɟɞɟɧɧɵɟ ɧɢɠɟ ɬɪɢ ɤɨɦɚɧɞɵ (cmps*) ɫɪɚɜɧɢɜɚɸɬ ɛɚɣɬ, ɫɥɨɜɨ, ɞɜɨɣɧɨɟ ɫɥɨɜɨ ɢɡ ɩɚɦɹɬɢ ɩɨ ɚɞɪɟɫɭ esi ɫ ɛɚɣɬɨɦ, ɫɥɨɜɨɦ, ɞɜɨɣɧɵɦ ɫɥɨɜɨɦ ɩɨ ɚɞɪɟɫɭ edi ɢ ɭɫɬɚɧɚɜɥɢɜɚɸɬ ɮɥɚɝɢ. ɉɪɢ ɷɬɨɦ esi ɢ edi ɩɪɨɞɜɢɝɚɸɬɫɹ.
ɫmɪsb ɫmɪsw ɫmɪsd
Ʌɨɝɢɱɟɫɤɢ ɤ ɷɬɢɦ ɤɨɦɚɧɞɚɦ ɦɨɠɧɨ ɨɬɧɟɫɬɢ ɬɚɤ ɧɚɡɵɜɚɟɦɵɟ ɩɪɟɮɢɤɫɵ ɩɨɜɬɨɪɟɧɢɹ, ɩɪɟɞɧɚɡɧɚɱɟɧɧɵɟ ɞɥɹ ɢɫɩɨɥɶɡɨɜɚɧɢɹ ɰɟɩɨɱɟɱɧɵɦɢ ɤɨɦɚɧɞɚ­ɦɢ ɢ ɢɦɟɸɳɢɟ ɫɜɨɢ ɨɛɨɡɧɚɱɟɧɢɹ.
reɪ (reɪeɚt)
reɪe ɢɥɢ reɪz (reɪeɚt while equɚl ɨr zerɨ)
reɪne ɢɥɢ reɪnz (reɪeɚt while nɨt equɚl ɨr zerɨ)
ɉɪɟɮɢɤɫɵ ɩɨɜɬɨɪɟɧɢɹ ɭɤɚɡɵɜɚɸɬɫɹ ɩɟɪɟɞ ɰɟɩɨɱɟɱɧɨɣ ɤɨɦɚɧɞɨɣ ɜ ɩɨ­ɥɟ ɦɟɬɤɢ. ɐɟɩɨɱɟɱɧɚɹ ɤɨɦɚɧɞɚ ɛɟɡ ɩɪɟɮɢɤɫɚ ɜɵɩɨɥɧɹɟɬɫɹ ɨɞɢɧ ɪɚɡ. Ɋɚɡ­ɦɟɳɟɧɢɟ ɩɪɟɮɢɤɫɚ ɩɟɪɟɞ ɰɟɩɨɱɟɱɧɨɣ ɤɨɦɚɧɞɨɣ ɡɚɫɬɚɜɥɹɟɬ ɟɟ ɜɵɩɨɥɧɹɬɶɫɹ ɜ ɰɢɤɥɟ. Ɉɬɥɢɱɢɹ ɩɪɟɮɢɤɫɨɜ ɡɚɤɥɸɱɚɸɬɫɹ ɜ ɬɨɦ, ɧɚ ɤɚɤɨɦ ɨɫɧɨɜɚɧɢɢ ɩɪɢ­ɧɢɦɚɟɬɫɹ ɪɟɲɟɧɢɟ ɨ ɰɢɤɥɢɱɟɫɤɨɦ ɜɵɩɨɥɧɟɧɢɢ ɰɟɩɨɱɟɱɧɨɣ ɤɨɦɚɧɞɵ – ɥɢ­ɛɨ ɩɨ ɫɨɫɬɨɹɧɢɸ ɪɟɝɢɫɬɪɚ eɫx/
ɫx, ɥɢɛɨ ɩɨ ɮɥɚɝɭ ɧɭɥɹ zf.
ɉɪɟɮɢɤɫ ɩɨɜɬɨɪɟɧɢɹ reɪ – ɢɫɩɨɥɶɡɭɟɬɫɹ ɫ ɤɨɦɚɧɞɚɦɢ, ɪɟɚɥɢɡɭɸɳɢ-
ɦɢ ɨɩɟɪɚɰɢɢ-ɩɪɢɦɢɬɢɜɵ ɩɟɪɟɫɵɥɤɢ ɢ ɫɨɯɪɚɧɟɧɢɹ ɷɥɟɦɟɧɬɨɜ ɰɟɩɨɱɟɤ –
mɨvs, stɨs, ɢ ɡɚɫɬɚɜɥɹɟɬ ɞɚɧɧɵɟ ɤɨɦɚɧɞɵ ɜɵɩɨɥɧɹɬɶɫɹ, ɩɨɤɚ ɫɨɞɟɪɠɢɦɨɟ ɜ eɫx/ɫx ɧɟ ɫɬɚɧɟɬ ɪɚɜɧɵɦ 0. ɉɪɢ ɷɬɨɦ ɰɟɩɨɱɟɱɧɚɹ ɤɨɦɚɧɞɚ, ɩɟɪɟɞ ɤɨɬɨɪɨɣ
ɫɬɨɢɬ ɩɪɟɮɢɤɫ, ɚɜɬɨɦɚɬɢɱɟɫɤɢ ɭɦɟɧɶɲɚɟɬ
ɫɨɞɟɪɠɢɦɨɟ eɫx/ɫx ɧɚ ɟɞɢɧɢɰɭ.
ɗɬɚ ɤɨɦɚɧɞɚ, ɧɨ ɛɟɡ ɩɪɟɮɢɤɫɚ ɷɬɨɝɨ ɧɟ ɞɟɥɚɟɬ.
ɉɪɟɮɢɤɫɵ ɩɨɜɬɨɪɟɧɢɹ reɪe ɢɥɢ reɪz
ɗɬɢ ɩɪɟɮɢɤɫɵ ɹɜɥɹɸɬɫɹ ɚɛɫɨɥɸɬɧɵɦɢ ɫɢɧɨɧɢɦɚɦɢ. Ɉɧɢ ɡɚɫɬɚɜɥɹɸɬ ɰɟɩɨɱɟɱɧɭɸ ɤɨɦɚɧɞɭ ɜɵɩɨɥɧɹɬɶɫɹ ɞɨ ɬɟɯ ɩɨɪ, ɩɨɤɚ ɫɨɞɟɪɠɢɦɨɟ eɫx/ɫx ɧɟ ɫɬɚɧɟɬ ɪɚɜɧɵɦ ɧɭɥɸ ɢɥɢ ɮɥɚɝ zf ɛɭɞɟɬ ɪɚɜɟɧ 1. Ʉɚɤ ɬɨɥɶɤɨ ɨɞɧɨ ɢɡ ɭɫɥɨ
-
ɜɢɣ ɧɚɪɭɲɚɟɬɫɹ, ɭɩɪɚɜɥɟɧɢɟ ɩɟɪɟɞɚɟɬɫɹ ɫɥɟɞɭɸɳɟɣ ɤɨɦɚɧɞɟ ɩɪɨɝɪɚɦɦɵ. Ȼɥɚɝɨɞɚɪɹ ɜɨɡɦɨɠɧɨɫɬɢ ɚɧɚɥɢɡɚ ɮɥɚɝɚ zf ɧɚɢɛɨɥɟɟ ɷɮɮɟɤɬɢɜɧɨ ɷɬɢ ɩɪɟ­ɮɢɤɫɵ ɦɨɠɧɨ ɢɫɩɨɥɶɡɨɜɚɬɶ ɫ ɤɨɦɚɧɞɚɦɢ ɫmɪs ɢ sɫɚs ɞɥɹ ɩɨɢɫɤɚ ɨɬɥɢɱɚ­ɸɳɢɯɫɹ ɷɥɟɦɟɧɬɨɜ ɰɟɩɨɱɟɤ.
ɉɪɟɮɢɤɫɵ ɩɨɜɬɨɪɟɧɢɹ reɪne ɢɥɢ reɪnz
ɗɬɢ ɩɪɟɮɢɤɫɵ ɬɚɤɠɟ ɫɢɧɨɧɢɦɢɱɧɵ. Ɉɧɢ ɡɚɫɬɚɜɥɹɸɬ ɰɟɩɨɱɟɱɧɭɸ ɤɨ­ɦɚɧɞɭ ɰɢɤɥɢɱɟɫɤɢ ɜɵɩɨɥɧɹɬɶɫɹ ɞɨ ɬɟɯ
ɩɨɪ, ɩɨɤɚ ɫɨɞɟɪɠɢɦɨɟ eɫx/ɫx ɧɟ
ɫɬɚɧɟɬ ɪɚɜɧɵɦ ɧɭɥɸ ɢɥɢ ɮɥɚɝ zf ɛɭɞɟɬ ɪɚɜɟɧ ɧɭɥɸ. ɉɪɢ ɧɟɜɵɩɨɥɧɟɧɢɢ
42
ɨɞɧɨɝɨ ɢɡ ɷɬɢɯ ɭɫɥɨɜɢɣ ɪɚɛɨɬɚ ɤɨɦɚɧɞɵ ɩɪɟɤɪɚɳɚɟɬɫɹ. ɗɬɢ ɤɨɦɚɧɞɵ ɬɚɤ­ɠɟ ɦɨɠɧɨ ɢɫɩɨɥɶɡɨɜɚɬɶ ɫɨɜɦɟɫɬɧɨ ɫ ɤɨɦɚɧɞɚɦɢ ɫmɪs ɢ sɫɚs, ɧɨ ɞɥɹ ɩɨɢɫ­ɤɚ ɫɨɜɩɚɞɚɸɳɢɯ ɷɥɟɦɟɧɬɨɜ ɰɟɩɨɱɟɤ.
ɐɟɩɨɱɤɚ-ɢɫɬɨɱɧɢɤ, ɚɞɪɟɫɭɟɦɚɹ ɨɩɟɪɚɧɞɨɦ ɚɞɪɟɫ ɢɫɬɨɱɧɢɤɚ, ɦɨɠɟɬ ɧɚɯɨɞɢɬɶɫɹ ɜ ɬɟɤɭɳɟɦ ɫɟɝɦɟɧɬɟ ɞɚɧɧɵɯ, ɨɩɪɟɞɟɥɹɟɦɨɦ ɪɟɝɢɫɬɪɨɦ ds. ɐɟ-
ɩɨɱɤɚ-ɩɪɢɟɦɧɢɤ, ɚɞɪɟɫɭɟɦɚɹ ɨɩɟɪɚɧɞɨɦ ɚɞɪɟɫ ɩɪɢɟɦɧɢɤɚ
, ɞɨɥɠɧɚ ɧɚɯɨ-
ɞɢɬɶɫɹ ɜ ɞɨɩɨɥɧɢɬɟɥɶɧɨɦ ɫɟɝɦɟɧɬɟ ɞɚɧɧɵɯ, ɚɞɪɟɫɭɟɦɨɦ ɫɟɝɦɟɧɬɧɵɦ ɪɟɝɢ­ɫɬɪɨɦ es. Ⱦɨɩɭɫɤɚɟɬɫɹ ɡɚɦɟɧɚ ɬɨɥɶɤɨ ɪɟɝɢɫɬɪɚ ds. Ɋɟɝɢɫɬɪ es ɩɨɞɦɟɧɹɬɶ ɧɟɥɶɡɹ. ȼɬɨɪɵɟ ɱɚɫɬɢ ɚɞɪɟɫɨɜ – ɫɦɟɳɟɧɢɹ ɰɟɩɨɱɟɤ – ɬɚɤɠɟ ɧɚɯɨɞɹɬɫɹ ɜ ɫɬɪɨɝɨ ɨɩɪɟɞɟɥɟɧɧɵɯ ɦɟɫɬɚɯ. Ⱦɥɹ ɰɟɩɨɱɤɢ-ɢɫɬɨɱɧɢɤɚ ɷɬɨ esi/si (ɢɧɞɟɤɫ- ɧɵɣ ɪɟɝɢɫɬɪ ɢɫɬɨɱɧɢɤɚ). Ⱦɥɹ ɰɟɩɨɱɤɢ-ɩɨɥɭɱɚɬɟɥɹ ɷɬɨ ɪɟɝɢɫɬɪ edi/di (ɢɧ­ɞɟɤɫɧɵɣ ɪɟɝɢɫɬɪ
ɩɪɢɟɦɧɢɤɚ).
.model tiny
.code
org 100h
begin:
jmp start
_mul proc
push bp
mov bp,sp
mov ax,[bp+4]
mul word ptr [bp+6]
mov [bp+4],ax
mov [bp+6],dx
pop bp
ret
_mul endp
start:
mov dx,130h
push dx
push 100h
call _mul
pop ax
pop bx
ret
end begin
ɇɚ ɫɚɦɨɦ ɞɟɥɟ ɧɚɛɨɪ ɤɨɦɚɧɞ ɦɢɤɪɨɩɪɨɰɟɫɫɨɪɚ ɢɦɟɟɬ ɫɨɨɬɜɟɬɫɬɜɭɸ­ɳɢɟ ɦɚɲɢɧɧɵɟ ɤɨɦɚɧɞɵ ɬɨɥɶɤɨ ɞɥɹ ɰɟɩɨɱɟɱɧɵɯ ɤɨɦɚɧɞ ɚɫɫɟɦɛɥɟɪɚ ɛɟɡ ɨɩɟɪɚɧɞɨɜ. Ʉɨɦɚɧɞɵ ɫ ɨɩɟɪɚɧɞɚɦɢ ɬɪɚɧɫɥɹɬɨɪ ɚɫɫɟɦɛɥɟɪɚ ɢɫɩɨɥɶɡɭɟɬ ɬɨɥɶɤɨ ɞɥɹ ɨɩɪɟɞɟɥɟɧɢɹ ɬɢɩɨɜ ɨɩɟɪɚɧɞɨɜ. ɉɨɫɥɟ ɬɨɝɨ ɤɚɤ ɜɵɹɫɧɟɧ ɬɢɩ
43
ɷɥɟɦɟɧɬɨɜ ɰɟɩɨɱɟɤ ɩɨ ɢɯ ɨɩɢɫɚɧɢɸ ɜ ɩɚɦɹɬɢ, ɝɟɧɟɪɢɪɭɟɬɫɹ ɨɞɧɚ ɢɡ ɬɪɟɯ ɦɚɲɢɧɧɵɯ ɤɨɦɚɧɞ ɞɥɹ ɤɚɠɞɨɣ ɢɡ ɰɟɩɨɱɟɱɧɵɯ ɨɩɟɪɚɰɢɣ.
ɉɨ ɷɬɨɣ ɩɪɢɱɢɧɟ ɜɫɟ ɪɟɝɢɫɬɪɵ, ɫɨɞɟɪɠɚɳɢɟ ɚɞɪɟɫɚ ɹɱɟɟɤ, ɞɨɥɠɧɵ ɛɵɬɶ ɢɧɢɰɢɚɥɢɡɢɪɨɜɚɧɵ ɡɚɪɚɧɟɟ, ɜ ɬɨɦ ɱɢɫɥɟ ɞɥɹ ɤɨɦɚɧɞ, ɞɨɩɭɫɤɚɸɳɢɯ ɹɜɧɨɟ ɭɤɚɡɚɧɢɟ ɨɩɟɪɚɧɞɨɜ. ɉɪɚɜɢɥɶɧɚɹ ɡɚɝɪɭɡɤɚ ɪɟɝɢɫɬɪɨɜ ɭɤɚɡɚɬɟɥɹɦɢ ɨɛɹɡɚɬɟɥɶɧɨ ɩɪɟɞɭɫɦɚɬɪɟɧɚ ɞɨ ɜɵɞɚɱɢ ɥɸɛɨɣ ɰɟɩɨɱɟɱɧɨɣ ɤɨɦɚɧɞɵ.
ɋɭɳɟɫɬɜɭɸɬ
–
ɨɬ ɧɚɱɚɥɚ ɰɟɩɨɱɤɢ ɤ ɤɨɧɰɭ, ɬɨ ɟɫɬɶ ɜ ɧɚɩɪɚɜɥɟɧɢɢ ɜɨɡɪɚɫɬɚɧɢɹ ɚɞ-
ɞɜɟ ɜɨɡɦɨɠɧɨɫɬɢ ɧɚɩɪɚɜɥɟɧɢɹ ɨɛɪɚɛɨɬɤɢ ɰɟɩɨɱɟɤ:
ɪɟɫɨɜ;
–
ɨɬ ɤɨɧɰɚ ɰɟɩɨɱɤɢ ɤ ɧɚɱɚɥɭ, ɬɨ ɟɫɬɶ ɜ ɧɚɩɪɚɜɥɟɧɢɢ ɭɛɵɜɚɧɢɹ ɚɞɪɟɫɨɜ.
ɐɟɩɨɱɟɱɧɵɟ ɤɨɦɚɧɞɵ ɫɚɦɢ ɜɵɩɨɥɧɹɸɬ ɦɨɞɢɮɢɤɚɰɢɸ ɪɟɝɢɫɬɪɨɜ, ɚɞ­ɪɟɫɭɸɳɢɯ ɨɩɟɪɚɧɞɵ, ɨɛɟɫɩɟɱɢɜɚɹ ɬɟɦ ɫɚɦɵɦ ɚɜɬɨɦɚɬɢɱɟɫɤɨɟ ɩɪɨɞɜɢɠɟ­ɧɢɟ ɩɨ ɰɟɩɨɱɤɟ. Ʉɨɥɢɱɟɫɬɜɨ ɛɚɣɬ, ɧɚ ɤɨɬɨɪɵɟ ɷɬɚ ɦɨɞɢɮɢɤɚɰɢɹ ɨɫɭɳɟɫɬɜ­ɥɹɟɬɫɹ, ɨɩɪɟɞɟɥɹɟɬɫɹ ɤɨɞɨɦ ɤɨɦɚɧɞɵ. Ɂɧɚɤ ɦɨɞɢɮɢɤɚɰɢɢ ɨɩɪɟɞɟɥɹɟɬɫɹ ɡɧɚɱɟɧɢɟɦ ɮɥɚɝɚ ɧɚɩɪɚɜɥɟɧɢɹ df.
ȿɫɥɢ df = 0, ɬɨ ɡɧɚɱɟɧɢɹ ɢɧɞɟɤɫɧɵɯ ɪɟɝɢɫɬɪɨɜ esi/si ɢ edi/di ɛɭɞɭɬ ɚɜɬɨ­ɦɚɬɢɱɟɫɤɢ ɭɜɟɥɢɱɢɜɚɬɶɫɹ ɰɟɩɨɱɟɱɧɵɦɢ ɤɨɦɚɧɞɚɦɢ, ɬ. ɟ. ɨɛɪɚɛɨɬɤɚ ɛɭɞɟɬ ɨɫɭɳɟɫɬɜɥɹɬɶɫɹ ɜ ɧɚɩɪɚɜɥɟɧɢɢ ɜɨɡɪɚɫɬɚɧɢɹ ɚɞɪɟɫɨɜ. ȿɫɥɢ df = 1, ɬɨ ɡɧɚɱɟ­ɧɢɹ ɢɧɞɟɤɫɧɵɯ ɪɟɝɢɫɬɪɨɜ esi/si ɢ edi/di ɛɭɞɭɬ ɚɜɬɨɦɚɬɢɱɟɫɤɢ ɭɦɟɧɶɲɚɬɶɫɹ, ɬ. ɟ. ɨɛɪɚɛɨɬɤɚ ɛɭɞɟɬ ɩɪɨɢɫɯɨɞɢɬɶ ɜ ɧɚɩɪɚɜɥɟɧɢɢ ɭɛɵɜɚɧɢɹ ɚɞɪɟɫɨɜ.
ɋɨɫɬɨɹɧɢɟɦ ɮɥɚɝɚ df ɦɨɠɧɨ ɭɩɪɚɜɥɹɬɶ ɫ ɩɨɦɨɳɶɸ ɞɜɭɯ ɤɨɦɚɧɞ, ɧɟ ɢɦɟɸɳɢɯ ɨɩɟɪɚɧɞɨɜ:
1. ɋld – ɨɱɢɫɬɢɬɶ ɮɥɚɝ ɧɚɩɪɚɜɥɟɧɢɹ (ɤɨɦɚɧɞɚ ɫɛɪɚɫɵɜɚɟɬ ɮɥɚɝ
ɧɚɩɪɚɜɥɟɧɢɹ ɜ 0).
2. Std – ɭɫɬɚɧɨɜɢɬɶ ɮɥɚɝ ɧɚɩɪɚɜɥɟɧɢɹ (ɤɨɦɚɧɞɚ ɭɫɬɚɧɚɜɥɢɜɚɟɬ ɮɥɚɝ
ɧɚɩɪɚɜɥɟɧɢɹ ɜ 1).
44
ȽɅȺȼȺ 3. ɊȺȻɈɌȺ ɋɈ ɋɌɊɍɄɌɍɊȺɆɂ ȾȺɇɇɕɏ
10. ɋɥɨɠɧɵɟ ɫɬɪɭɤɬɭɪɵ ɞɚɧɧɵɯ (ɱɚɫɬɶ 1)
Ʉɨɦɚɧɞɵ ɫɬɪɭɤɬɭɪɵ ɞɚɧɧɵɯ ɧɚɡɵɜɚɸɬ ɤɨɦɚɧɞɚɦɢ ɨɛɪɚɛɨɬɤɢ ɫɬɪɨɤ ɫɢɦɜɨɥɨɜ, ɨɬɥɢɱɚɸɳɢɯɫɹ ɨɬ ɰɟɩɨɱɟɱɧɵɯ ɤɨɦɚɧɞ ɬɟɦ, ɱɬɨ ɩɨɞ ɫɬɪɨɤɨɣ ɫɢɦɜɨɥɨɜ ɩɨɧɢɦɚɟɬɫɹ ɩɨɫɥɟɞɨɜɚɬɟɥɶɧɨɫɬɶ ɛɚɣɬ, ɚ ɰɟɩɨɱɤɚ – ɛɨɥɟɟ ɨɛɳɟɟ ɧɚɡɜɚɧɢɟ ɞɥɹ ɫɥɭɱɚɟɜ, ɤɨɝɞɚ ɷɥɟɦɟɧɬɵ ɩɨɫɥɟɞɨɜɚɬɟɥɶɧɨɫɬɢ ɢɦɟɸɬ ɪɚɡɦɟɪ ɛɨɥɶɲɟ ɛɚɣɬɚ (ɫɥɨɜɨ ɢɥɢ ɞɜɨɣɧɨɟ ɫɥɨɜɨ). Ɍɚɤɢɦ ɨɛɪɚɡɨɦ, ɰɟɩɨɱɟɱɧɵɟ ɤɨ­ɦɚɧɞɵ ɩɨɡɜɨɥɹɸɬ ɩɪɨɜɨɞɢɬɶ ɞɟɣɫɬɜɢɹ ɧɚɞ ɛɥɨɤɚɦɢ ɩɚɦɹɬɢ, ɩɪɟɞɫɬɚɜɥɹɸ-
ɫɨɛɨɣ ɩɨɫɥɟɞɨɜɚɬɟɥɶɧɨɫɬɶ ɷɥɟɦɟɧɬɨɜ ɫɥɟɞɭɸɳɟɝɨ ɪɚɡɦɟɪɚ: 8 ɛɢɬ –
ɳɢɦɢ
ɛɚɣɬ; 16 ɛɢɬ – ɫɥɨɜɨ; 32 ɛɢɬɚ – ɞɜɨɣɧɨɟ ɫɥɨɜɨ.
ɋɨɞɟɪɠɢɦɨɟ ɷɬɢɯ ɛɥɨɤɨɜ ɞɥɹ ɦɢɤɪɨɩɪɨɰɟɫɫɨɪɚ ɧɢɤɚɤɨɝɨ ɡɧɚɱɟɧɢɹ ɧɟ ɢɦɟɟɬ. Ɋɚɡɦɟɪɧɨɫɬɶ ɷɥɟɦɟɧɬɨɜ ɞɨɥɠɧɚ ɫɨɜɩɚɞɚɬɶ, ɚ ɷɬɢ ɷɥɟɦɟɧɬɵ ɞɨɥɠɧɵ ɧɚɯɨɞɢɬɶɫɹ ɜ ɫɨɫɟɞɧɢɯ ɹɱɟɣɤɚɯ ɩɚɦɹɬɢ.
Ɇɚɫɫɢɜɵ – ɷɬɨ ɫɬɪɭɤɬɭɪɢɪɨɜɚɧɧɵɣ ɬɢɩ ɞɚɧɧɵɯ, ɫɨɫɬɨɹɳɢɣ ɢɡ ɧɟɤɨ­ɬɨɪɨɝɨ ɱɢɫɥɚ ɷɥɟɦɟɧɬɨɜ ɨɞɧɨɝɨ ɬɢɩɚ.
ȼ ɫɥɭɱɚɟ ɧɟɨɛɯɨɞɢɦɨɫɬɢ
ɢɫɩɨɥɶɡɨɜɚɧɢɹ ɦɚɫɫɢɜɚ ɜ ɩɪɨɝɪɚɦɦɟ ɟɝɨ ɦɨ-
ɞɟɥɢɪɭɸɬ ɨɞɧɢɦ ɢɡ ɫɥɟɞɭɸɳɢɯ ɫɩɨɫɨɛɨɜ:
1. ɉɟɪɟɱɢɫɥɟɧɢɟ ɪɚɡɞɟɥɹɸɳɢɯɫɹ ɡɚɩɹɬɵɦɢ ɷɥɟɦɟɧɬɨɜ ɦɚɫɫɢɜɚ ɜ ɩɨɥɟ
ɨɩɟɪɚɧɞɨɜ ɨɞɧɨɣ ɢɡ ɞɢɪɟɤɬɢɜ ɨɩɢɫɚɧɢɹ ɞɚɧɧɵɯ:
mɚs dd 1,2,3,4,5
mɚs dw 5 duɪ (0)
2. ɉɪɢɦɟɧɟɧɢɟ ɨɩɟɪɚɬɨɪɚ ɩɨɜɬɨɪɟɧɢɹ duɪ. Ɋɚɡɦɟɪ ɤɚɠɞɨɝɨ ɷɥɟɦɟɧɬɚ ɫɨɫɬɚɜɥɹɟɬ 2 ɛɚɣɬɚ. Ɍɚɤɨɣ ɫɩɨɫɨɛ ɢɫɩɨɥɶɡɭɟɬɫɹ ɞɥɹ ɪɟɡɟɪɜɢɪɨɜɚɧɢɹ ɩɚɦɹɬɢ ɫ ɰɟɥɶɸ ɪɚɡɦɟɳɟɧɢɹ
ɢ ɢɧɢɰɢɚɥɢɡɚɰɢɢ ɷɥɟɦɟɧɬɨɜ ɦɚɫɫɢɜɚ.
3. ɂɫɩɨɥɶɡɨɜɚɧɢɟ ɞɢɪɟɤɬɢɜɵ lɚbel ɢ reɪt. Ⱦɢɪɟɤɬɢɜɚ reɪt ɨɬɧɨɫɢɬɫɹ ɤ ɦɚɤɪɨɫɪɟɞɫɬɜɚɦ ɹɡɵɤɚ ɚɫɫɟɦɛɥɟɪɚ ɢ ɜɵɡɵɜɚɟɬ ɩɨɜɬɨɪɟɧɢɟ ɭɤɚɡɚɧɧɨɝɨ ɱɢɫ­ɥɚ ɪɚɡ ɫɬɪɨɤ, ɡɚɤɥɸɱɟɧɧɵɯ ɦɟɠɞɭ ɞɢɪɟɤɬɢɜɨɣ ɢ ɫɬɪɨɤɨɣ endm. ɉɪɟɢɦɭ­ɳɟɫɬɜɨ ɞɢɪɟɤɬɢɜɵ lɚbel ɡɚɤɥɸɱɚɟɬɫɹ ɜ ɬɨɦ, ɱɬɨ ɨɧɚ ɧɟ ɪɟɡɟɪɜɢɪɭɟɬ ɩɚɦɹɬɶ, ɚ ɥɢɲɶ ɨɩɪɟɞɟɥɹɟɬ ɯɚɪɚɤɬɟɪɢɫɬɢɤɢ
ɨɛɴɟɤɬɚ. ɂɫɩɨɥɶɡɭɹ ɧɟɫɤɨɥɶɤɨ ɞɢɪɟɤ-
ɬɢɜ lɚbel, ɧɚɩɢɫɚɧɧɵɯ ɨɞɧɚ ɡɚ ɞɪɭɝɨɣ, ɦɨɠɧɨ ɩɪɢɫɜɨɢɬɶ ɨɞɧɨɣ ɢ ɬɨɣ ɠɟ ɨɛɥɚɫɬɢ ɩɚɦɹɬɢ ɪɚɡɧɵɟ ɢɦɟɧɚ ɢ ɬɢɩɵ.
4. ɂɫɩɨɥɶɡɨɜɚɧɢɟ ɰɢɤɥɚ ɞɥɹ ɢɧɢɰɢɚɥɢɡɚɰɢɢ ɡɧɚɱɟɧɢɹɦɢ ɨɛɥɚɫɬɢ ɩɚ- ɦɹɬɢ, ɤɨɬɨɪɭɸ ɦɨɠɧɨ ɜɩɨɫɥɟɞɫɬɜɢɢ ɬɪɚɤɬɨɜɚɬɶ ɤɚɤ ɦɚɫɫɢɜ.
Ⱦɨɫɬɭɩ ɤ ɷɥɟɦɟɧɬɚɦ ɦɚɫɫɢɜɚ
ȼɫɟ ɷɥɟɦɟɧɬɵ ɦɚɫɫɢɜɚ ɪɚɫɩɨɥɚɝɚɸɬɫɹ ɜ ɩɚɦɹɬɢ ɩɨɫɥɟɞɨɜɚɬɟɥɶɧɨ. Ɉɞ­ɧɭ ɢ ɬɭ ɠɟ ɨɛɥɚɫɬɶ ɩɚɦɹɬɢ ɦɨɠɧɨ ɬɪɚɤɬɨɜɚɬɶ ɤɚɤ ɨɞɧɨɦɟɪɧɵɣ ɦɚɫɫɢɜ, ɢ ɨɞɧɨɜɪɟɦɟɧɧɨ ɬɟ ɠɟ ɞɚɧɧɵɟ ɦɨɝɭɬ ɬɪɚɤɬɨɜɚɬɶɫɹ ɤɚɤ ɞɜɭɦɟɪɧɵɣ ɦɚɫɫɢɜ, ɱɬɨ ɡɚɜɢɫɢɬ ɬɨɥɶɤɨ ɨɬ ɚɥɝɨɪɢɬɦɚ ɢɯ ɨɛɪɚɛɨɬɤɢ ɜ ɤɨɧɤɪɟɬɧɨɣ ɩɪɨɝɪɚɦɦɟ. ɗɬɨ ɨɬɧɨɫɢɬɫɹ ɤ ɢɧɞɟɤɫɚɦ ɷɥɟɦɟɧɬɨɜ ɦɚɫɫɢɜɚ. ɉɪɢ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɢ
ɧɚ
ɚɫɫɟɦɛɥɟɪɟ ɩɨɞ ɢɧɞɟɤɫɨɦ ɩɨɞɪɚɡɭɦɟɜɚɸɬ ɧɟ ɧɨɦɟɪ ɷɥɟɦɟɧɬɚ ɦɚɫɫɢɜɚ, ɚ
45
ɧɟɤɨɬɨɪɵɣ ɚɞɪɟɫ. ɇɭɦɟɪɚɰɢɹ ɷɥɟɦɟɧɬɨɜ ɜ ɦɚɫɫɢɜɟ ɧɚɱɢɧɚɟɬɫɹ ɫ ɧɭɥɹ. ȼ ɨɛɳɟɦ ɫɥɭɱɚɟ ɞɥɹ ɩɨɥɭɱɟɧɢɹ ɚɞɪɟɫɚ ɷɥɟɦɟɧɬɚ ɜ ɦɚɫɫɢɜɟ ɧɟɨɛɯɨɞɢɦɨ ɧɚɱɚɥɶɧɵɣ ɟɝɨ ɛɚɡɨɜɵɣ ɚɞɪɟɫ ɫɥɨɠɢɬɶ ɫ ɩɪɨɢɡɜɟɞɟɧɢɟɦ ɢɧɞɟɤɫɚ (ɧɨɦɟɪ ɷɥɟɦɟɧɬɚ ɦɢɧɭɫ ɟɞɢɧɢɰɚ) ɧɚ ɪɚɡɦɟɪ ɷɥɟɦɟɧɬɚ ɦɚɫɫɢɜɚ:
ɛɚɡɚ + (ɢɧɞɟɤɫx ɪɚɡɦɟɪ ɷɥɟɦɟɧɬɚ)
Ⱦɥɹ ɪɚɛɨɬɵ ɫ ɦɚɫɫɢɜɚɦɢ ɩɪɟɞɨɫɬɚɜɥɹɸɬɫɹ: ɛɚɡɨɜɵɟ ɢ ɢɧɞɟɤɫɧɵɟ ɪɟɝɢ­ɫɬɪɵ, ɩɨɡɜɨɥɹɸɳɢɟ ɪɟɚɥɢɡɨɜɚɬɶ ɧɟɫɤɨɥɶɤɨ ɪɟɠɢɦɨɜ ɚɞɪɟɫɚɰɢɢ ɞɚɧɧɵɯ. Ɇɢɤɪɨɩɪɨɰɟɫɫɨɪ ɩɨɡɜɨɥɹɟɬ ɦɚɫɲɬɚɛɢɪɨɜɚɬɶ ɢɧɞɟɤɫ. ɗɬɨ ɨɛɨɡɧɚɱɚɟɬ, ɱɬɨ ɟɫɥɢ ɩɨɫɥɟ ɢɦɟɧɢ ɢɧɞɟɤɫɧɨɝɨ ɪɟɝɢɫɬɪɚ ɭɤɚɡɚɬɶ ɡɧɚɤ ɭɦɧɨɠɟɧɢɹ ɫ ɩɨɫɥɟɞɭ­ɸɳɟɣ ɰɢɮɪɨɣ 2, 4 ɢɥɢ 8, ɬɨ ɟɝɨ ɫɨɞɟɪɠɢɦɨɟ ɛɭɞɟɬ ɭɦɧɨɠɟɧɨ ɧɚ 2, 4 ɢɥɢ 8. ɉɪɢɦɟɧɟɧɢɟ ɦɚɫɲɬɚɛɢɪɨɜɚɧɢɹ ɭɩɪɨɳɚɟɬ ɪɚɛɨɬɭ ɫ ɦɚɫɫɢɜɚɦɢ
, ɤɨɬɨɪɵɟ ɢɦɟɸɬ ɪɚɡɦɟɪ ɷɥɟɦɟɧɬɨɜ, ɪɚɜɧɵɣ 2, 4 ɢɥɢ 8 ɛɚɣɬɚɦ, ɬɚɤ ɤɚɤ ɦɢɤɪɨɩɪɨɰɟɫ­ɫɨɪ ɫɚɦ ɩɪɨɢɡɜɨɞɢɬ ɤɨɪɪɟɤɰɢɸ ɢɧɞɟɤɫɚ ɞɥɹ ɩɨɥɭɱɟɧɢɹ ɚɞɪɟɫɚ ɨɱɟɪɟɞɧɨɝɨ ɷɥɟɦɟɧɬɚ ɦɚɫɫɢɜɚ. ȼ ɢɧɞɟɤɫɧɵɣ ɪɟɝɢɫɬɪ ɧɟɨɛɯɨɞɢɦɨ ɡɚɝɪɭɡɢɬɶ ɡɧɚɱɟɧɢɟ ɬɪɟɛɭɟɦɨɝɨ ɢɧɞɟɤɫɚ, ɫɱɢɬɚɹ ɨɬ 0. ȼɨɡɦɨɠɧɨɫɬɶ ɦɚɫɲɬɚɛɢɪɨɜɚɧɢɹ ɩɨɹɜɢ­ɥɚɫɶ ɜ ɦɢɤɪɨɩɪɨɰɟɫɫɨɪɚɯ Intel, ɧɚɱɢɧɚɹ ɫ i486.
ɋɨɝɥɚɲɟɧɢɹ:
1. ȿɫɥɢ ɞɥɹ ɨɩɢɫɚɧɢɹ ɚɞɪɟɫɚ ɢɫɩɨɥɶɡɭɟɬɫɹ ɬɨɥɶɤɨ ɨɞɢɧ
ɪɟɝɢɫɬɪ, ɬɨ ɷɬɨ
ɛɚɡɨɜɚɹ ɚɞɪɟɫɚɰɢɹ ɢ ɷɬɨɬ ɪɟɝɢɫɬɪ ɪɚɫɫɦɚɬɪɢɜɚɟɬɫɹ ɤɚɤ ɛɚɡɨɜɵɣ.
ɩɟɪɟɫɥɚɬɶ ɛɚɣɬ ɢɡ ɨɛɥɚɫɬɢ ɞɚɧɧɵɯ, ɚɞɪɟɫ ɤɨɬɨɪɨɣ ɧɚɯɨɞɢɬɫɹ ɜ ɪɟ-
ɝɢɫɬɪɟ ebx
mɨv ɚl, [ebx]
2. ȿɫɥɢ ɞɥɹ ɡɚɞɚɧɢɹ ɚɞɪɟɫɚ ɜ ɤɨɦɚɧɞɟ ɢɫɩɨɥɶɡɭɟɬɫɹ ɩɪɹɦɚɹ ɚɞɪɟɫɚɰɢɹ ɜ ɜɢɞɟ ɢɞɟɧɬɢɮɢɤɚɬɨɪɚ ɜ ɫɨɱɟɬɚɧɢɢ ɫ ɨɞɧɢɦ ɪɟɝɢɫɬɪɨɦ, ɬɨ ɷɬɨ ɢɧɞɟɤɫɧɚɹ ɚɞɪɟɫɚɰɢɹ. Ɋɟɝɢɫɬɪ ɫɱɢɬɚɟɬɫɹ ɢɧɞɟɤɫɧɵɦ, ɢ
ɩɨɷɬɨɦɭ ɦɨɠɧɨ ɢɫɩɨɥɶɡɨɜɚɬɶ
ɦɚɫɲɬɚɛɢɪɨɜɚɧɢɟ ɞɥɹ ɩɨɥɭɱɟɧɢɹ ɚɞɪɟɫɚ ɧɭɠɧɨɝɨ ɷɥɟɦɟɧɬɚ ɦɚɫɫɢɜɚ.
ɋɥɨɠɢɬɶ ɫɨɞɟɪɠɢɦɨɟ eɚx ɫ ɞɜɨɣɧɵɦ ɫɥɨɜɨɦ ɜ ɩɚɦɹɬɢ ɩɨ ɚɞɪɟɫɭ mɚs+(ebx) ɚdd eɚx, mɚs[ebx
x 4
x 4]
3. ȿɫɥɢ ɜ ɨɩɢɫɚɧɢɢ ɚɞɪɟɫɚ ɢɫɩɨɥɶɡɭɸɬ ɞɜɚ ɪɟɝɢɫɬɪɚ, ɬɨ ɷɬɨ ɛɚɡɨɜɨ- ɢɧɞɟɤɫɧɚɹ ɚɞɪɟɫɚɰɢɹ. Ʌɟɜɵɣ ɪɟɝɢɫɬɪ ɪɚɫɫɦɚɬɪɢɜɚɟɬɫɹ ɤɚɤ ɛɚɡɨɜɵɣ, ɚ ɩɪɚ­ɜɵɣ – ɤɚɤ ɢɧɞɟɤɫɧɵɣ. Ɉɞɧɚɤɨ ɟɫɥɢ ɩɪɢɦɟɧɹɟɬɫɹ ɦɚɫɲɬɚɛɢɪɨɜɚɧɢɟ ɫ ɨɞ­ɧɢɦ ɢɡ ɪɟɝɢɫɬɪɨɜ, ɬɨ ɨɧ ɜɫɟɝɞɚ ɹɜɥɹɟɬɫɹ ɢɧɞɟɤɫɧɵɦ. ɉɪɢ ɢɫɩɨɥɶɡɨɜɚɧɢɢ ɪɟɝɢɫɬɪɨɜ ebɪ/bɪ ɢ esɪ/sɪ ɩɨ ɭɦɨɥɱɚɧɢɸ ɩɨɞɪɚɡɭɦɟɜɚɟɬɫɹ, ɱɬɨ
ɫɟɝɦɟɧɬɧɚɹ ɫɨɫɬɚɜɥɹɸɳɚɹ ɚɞɪɟɫɚ ɧɚɯɨɞɢɬɫɹ ɜ ɪɟɝɢɫɬɪɟ ss. Ȼɚɡɨɜɨ-ɢɧɞɟɤɫɧɭɸ ɚɞɪɟɫɚ­ɰɢɸ ɧɟ ɡɚɩɪɟɳɟɧɨ ɫɨɱɟɬɚɬɶ ɫ ɩɪɹɦɨɣ ɚɞɪɟɫɚɰɢɟɣ ɢɥɢ ɭɤɚɡɚɧɢɟɦ ɧɟɩɨɫɪɟɞ­ɫɬɜɟɧɧɨɝɨ ɡɧɚɱɟɧɢɹ. ɉɪɢ ɷɬɨɦ ɚɞɪɟɫ ɛɭɞɟɬ ɫɮɨɪɦɢɪɨɜɚɧ ɤɚɤ ɫɭɦɦɚ ɜɫɟɯ ɤɨɦɩɨɧɟɧɬɨɜ.
.386; Ⱦɢɪɟɤɬɢɜɚ ɨɩɪɟɞɟɥɟɧɢɹ ɬɢɩɚ ɦɢɤɪɨɩɪɨɰɟɫɫɨɪɚ . Model flat, stdcall; ɡɚɞɚɱɢ ɥɢɧɟɣɧɨɣ ɦɨɞɟɥɢ ɩɚɦɹɬɢ ; ɂ ɫɨɝɥɚɲɟɧɢɹ Ɉɋ Windows
46
option casemap: none; ɨɬɥɢɱɢɟ ɫɬɪɨɱɧɵɯ ɢ ɩɪɨɩɢɫɧɵɯ ɛɭɤɜ
include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\fpu.inc include \masm32\include\user32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\fpu.lib
ExitProcess proto: DWORD BSIZE equ 30
. Data; ɞɢɪɟɤɬɢɜɚ ɨɩɪɟɞɟɥɟɧɢɹ ɞɚɧɧɵɯ _a dword 3.0; ɫɨɯɪɚɧɟɧɢɟ ɜ 32-ɪɚɡɪɹɞɧɨɣ ɹɱɟɣɤɟ ɩɚɦɹɬɢ ɩɟɪɟɦɟɧɧɨɣ ɯ _prob dword 0 _sum dd 0
mas1 db 'Privet kak dela u tebya' mas2 db 30 dup (0), 0 st1 db "ȼɵɜɨɞ ɤɨɥɢɱɟɫɬɜɚ ɩɪɨɛɟɥɨɜ", 0 st2 db 10 dup (?), 0 ifmt db "Ʉɨɥɢɱɟɫɬɜɨ ɥɢɲɧɢɯ ɩɪɨɛɟɥɨɜ ɜ ɬɟɤɫɬɟ = % d", 0
. Code; ɞɢɪɟɤɬɢɜɚ ɧɚɱɚɥɚ ɤɨɞɚ _start: lea edi, mas1 lea esi, mas2 mov ecx, 30; ɫɱɟɬɱɢɤ mov edx, 1 mov ebx, 0
m1: mov eax, 0 mov al, '' mov bl, [edi] xor al, bl; ɩɪɨɜɟɪɤɚ ɪɚɜɟɧɫɬɜɚ ɫɪɨɤ jz m2 mov _sum, 0; ɫɭɦɦɚ ɩɪɨɛɟɥɨɜ ɪɚɜɧɚ ɧɭɥɸ _m1: mov edx, 1 mov ax, [edi];Ʉɨɩɢɪɨɜɚɧɢɟ ɫɪɨɤɢ ɜ ɫɪɨɤɟ ɛɟɡ ɥɢɲɧɢɯ mov [esi], ax; ɩɪɨɛɟɥɨɜ inc esi
47
_m2: cld inc edi loop m1; ɭɦɟɧɶɲɟɧɢɹ ɫɱɟɬɱɢɤ jmp m3; ɛɟɡɭɫɥɨɜɧɵɣ ɩɟɪɟɯɨɞ ɧɚ ɜɵɜɨɞɨɤ
m2: inc _sum; ɢɧɤɪɟɦɟɧɬɢɪɨɜɚɧɢɟ sub edx, _sum; ɩɪɨɜɟɪɤɚ: ɷɬɨ ɩɟɪɜɵɣ ɩɪɨɛɟɥ ɢɥɢ ɧɟɬ jz _m1 mov edx, 1 inc _prob;ɩɨɞɫɱɢɬɵɜɚɧɢɟ ɥɢɲɧɢɯ ɩɪɨɛɟɥɨɜ jmp _m2
m3: mov edx,0 mov edx,_prob
mov ecx,30 lea edi,mas1 mov eax,0
m4: mov [edi],ax inc edi loop m4
lea edi,mas1 lea esi,mas2 mov ecx,30
m5: mov ax,[Edi]; ɤɨɩɢɪɨɜɚɧɢɟ ɜɬɨɪɨɣ ɫɬɪɨɤɢ ɜ ɩɟɪɜɭɸ mov [esi],x inc esi inc edi cld loop m5 invoke wsprintf, \ ADDR st2, \ ADDR ifmt, \ edx invoke MessageBox, \
48
NULL, \ addr st2, \ addr st1 \ MB_OK invoke ExitProcess, 0 end _start; ɨɤɨɧɱɚɧɢɹ ɩɪɨɝɪɚɦɦɵ
Ⱦɜɭɦɟɪɧɵɟ ɦɚɫɫɢɜɵ
Ⱦɜɭɦɟɪɧɵɣ ɦɚɫɫɢɜ ɧɟɨɛɯɨɞɢɦɨ ɦɨɞɟɥɢɪɨɜɚɬɶ. ɇɚ ɨɩɢɫɚɧɢɢ ɞɚɧɧɵɯ ɷɬɨ ɩɨɱɬɢ ɧɢɤɚɤ ɧɟ ɨɬɪɚɠɚɟɬɫɹ – ɩɚɦɹɬɶ ɩɨɞ ɦɚɫɫɢɜ ɜɵɞɟɥɹɟɬɫɹ ɫ ɩɨɦɨ­ɳɶɸ ɞɢɪɟɤɬɢɜ ɪɟɡɟɪɜɢɪɨɜɚɧɢɹ ɢ ɢɧɢɰɢɚɥɢɡɚɰɢɢ ɩɚɦɹɬɢ. ɇɟɩɨɫɪɟɞɫɬɜɟɧɧɨ ɦɨɞɟɥɢɪɨɜɚɧɢɟ ɨɛɪɚɛɨɬɤɢ ɦɚɫɫɢɜɚ ɩɪɨɢɡɜɨɞɢɬɫɹ ɜ ɫɟɝɦɟɧɬɟ ɤɨɞɚ, ɝɞɟ ɨɩɪɟɞɟɥɹɟɬɫɹ ɧɟɤɨɬɨɪɚɹ ɨɛɥɚɫɬɶ ɩɚɦɹɬɢ, ɤɨɬɨɪɭɸ ɧɟɨɛɯɨɞɢɦɨ ɬɪɚɤɬɨɜɚɬɶ ɤɚɤ ɞɜɭɦɟɪɧɵɣ ɦɚɫɫɢɜ. ɉɪɢ ɷɬɨɦ ɡɚ ɪɚɡɪɚɛɨɬɱɢɤɨɦ ɨɫɬɚɟɬɫɹ ɪɟɲɟɧɢɟ
ɨ ɬɨɦ, ɤɚɤ ɬɪɚɤɬɨɜɚɬɶ ɪɚɫɩɨɥɨɠɟɧɢɟ ɷɥɟɦɟɧɬɨɜ ɞɜɭɦɟɪɧɨɝɨ ɦɚɫɫɢɜɚ ɜ ɩɚɦɹ­ɬɢ: ɩɨ ɫɬɪɨɤɚɦ ɢɥɢ ɩɨ ɫɬɨɥɛɰɚɦ.
ȿɫɥɢ ɩɨɫɥɟɞɨɜɚɬɟɥɶɧɨɫɬɶ ɨɞɧɨɬɢɩɧɵɯ ɷɥɟɦɟɧɬɨɜ ɜ ɩɚɦɹɬɢ ɬɪɚɤɬɭɟɬɫɹ ɤɚɤ ɞɜɭɦɟɪɧɵɣ ɦɚɫɫɢɜ, ɪɚɫɩɨɥɨɠɟɧɧɵɣ ɩɨ ɫɬɪɨɤɚɦ, ɬɨ ɚɞɪɟɫ ɷɥɟɦɟɧɬɚ (i,j) ɜɵɱɢɫɥɹɟɬɫɹ ɩɨ ɮɨɪɦɭɥɟ:
(ɛɚɡɚ + ɤɨɥɢɱɟɫɬɜɨ ɷɥɟɦɟɧɬɨɜ ɜ ɫɬɪɨɤɟ x ɪɚɡɦɟɪ ɷɥɟɦɟɧɬɚ x i + + j)
Ɉɪɝɚɧɢɡɨɜɚɬɶ ɚɞɪɟɫɚɰɢɸ ɞɜɭɦɟɪɧɨɝɨ ɦɚɫɫɢɜɚ ɥɨɝɢɱɧɨ, ɢɫɩɨɥɶɡɭɹ ɛɚ­ɡɨɜɨ-ɢɧɞɟɤɫɧɭɸ ɚɞɪɟɫɚɰɢɸ. ɉɪɢ ɷɬɨɦ ɜɨɡɦɨɠɧɵ ɞɜɚ ɨɫɧɨɜɧɵɯ ɜɚɪɢɚɧɬɚ ɜɵɛɨɪɚ ɤɨɦɩɨɧɟɧɬɨɜ ɞɥɹ ɮɨɪɦɢɪɨɜɚɧɢɹ ɷɮɮɟɤɬɢɜɧɨɝɨ ɚɞɪɟɫɚ:
1. ɋɨɱɟɬɚɧɢɟ ɩɪɹɦɨɝɨ ɚɞɪɟɫɚ, ɤɚɤ ɛɚɡɨɜɨɝɨ ɤɨɦɩɨɧɟɧɬɚ, ɢ ɞɜɭɯ ɢɧ-
ɞɟɤɫɧɵɯ ɪɟɝɢɫɬɪɨɜ ɞɥɹ ɯɪɚɧɟɧɢɹ ɢɧɞɟɤɫɨɜ.
mɨv ɚx, mɚs[ebx][esi]
2. ɋɨɱɟɬɚɧɢɟ ɞɜɭɯ ɢɧɞɟɤɫɧɵɯ ɪɟɝɢɫɬɪɨɜ, ɨɞɢɧ ɢɡ ɤɨɬɨɪɵɯ ɹɜɥɹɟɬɫɹ ɛɚ
ɡɨɜɵɦ ɢ ɢɧɞɟɤɫɧɵɦ ɨɞɧɨɜɪɟɦɟɧɧɨ, ɚ ɞɪɭɝɨɣ – ɬɨɥɶɤɨ ɢɧɞɟɤɫɧɵɦ.
mɨv ɚx, [ebx][esi]
ɋɬɪɭɤɬɭɪɵ
ɋɬɪɭɤɬɭɪɚ – ɬɢɩ ɞɚɧɧɵɯ, ɫɨɫɬɨɹɳɢɣ ɢɡ ɮɢɤɫɢɪɨɜɚɧɧɨɝɨ ɱɢɫɥɚ ɷɥɟ­ɦɟɧɬɨɜ ɪɚɡɧɨɝɨ ɬɢɩɚ. Ⱦɥɹ ɢɫɩɨɥɶɡɨɜɚɧɢɹ ɫɬɪɭɤɬɭɪ ɜ ɩɪɨɝɪɚɦɦɟ ɧɟɨɛɯɨɞɢ­ɦɨ ɜɵɩɨɥɧɢɬɶ ɬɪɢ ɞɟɣɫɬɜɢɹ:
1. Ɂɚɞɚɬɶ ɲɚɛɥɨɧ ɫɬɪɭɤɬɭɪɵ – ɨɩɪɟɞɟɥɟɧɢɟ ɧɨɜɨɝɨ ɬɢɩɚ ɞɚɧɧɵɯ, ɤɨɬɨ- ɪɵɣ ɜɩɨɫɥɟɞɫɬɜɢɢ ɦɨɠɧɨ ɢɫɩɨɥɶɡɨɜɚɬɶ ɞɥɹ ɨɩɪɟɞɟɥɟɧɢɹ ɩɟɪɟɦɟɧɧɵɯ ɷɬɨ­ɝɨ ɬɢɩɚ.
2. Ɉɩɪɟɞɟɥɢɬɶ ɷɤɡɟɦɩɥɹɪ ɫɬɪɭɤɬɭɪɵ – ɢɧɢɰɢɚɥɢɡɚɰɢɹ ɤɨɧɤɪɟɬɧɨɣ ɩɟ- ɪɟɦɟɧɧɨɣ ɫ ɡɚɪɚɧɟɟ ɨɩɪɟɞɟɥɟɧɧɨɣ ɩɨ ɲɚɛɥɨɧɭ ɫɬɪɭɤɬɭɪɨɣ.
3. Ɉɪɝɚɧɢɡɨɜɚɬɶ ɨɛɪɚɳɟɧɢɟ ɤ ɷɥɟɦɟɧɬɚɦ ɫɬɪɭɤɬɭɪɵ.
-
49
Ɉɩɢɫɚɬɶ ɫɬɪɭɤɬɭɪɭ ɜ ɩɪɨɝɪɚɦɦɟ ɨɛɨɡɧɚɱɚɟɬ ɭɤɚɡɚɧɢɟ ɟɟ ɫɯɟɦɵ ɢɥɢ ɲɚɛɥɨɧɚ, ɩɚɦɹɬɶ ɩɪɢ ɷɬɨɦ ɧɟ ɜɵɞɟɥɹɟɬɫɹ. ɗɬɨɬ ɲɚɛɥɨɧ ɦɨɠɧɨ ɪɚɫɫɦɚɬɪɢ­ɜɚɬɶ ɬɨɥɶɤɨ ɤɚɤ ɢɧɮɨɪɦɚɰɢɸ ɞɥɹ ɬɪɚɧɫɥɹɬɨɪɚ ɨ ɪɚɫɩɨɥɨɠɟɧɢɢ ɩɨɥɟɣ ɢ ɢɯ ɡɧɚɱɟɧɢɢ ɩɨ ɭɦɨɥɱɚɧɢɸ. Ɉɩɪɟɞɟɥɟɧɢɟ ɫɬɪɭɤɬɭɪɵ – ɭɤɚɡɚɧɢɟ ɬɪɚɧɫɥɹɬɨɪɭ ɜɵɞɟɥɢɬɶ ɩɚɦɹɬɶ ɢ ɩɪɢɫɜɨɢɬɶ ɷɬɨɣ ɨɛɥɚɫɬɢ ɩɚɦɹɬɢ ɫɢɦɜɨɥɢɱɟɫɤɨɟ ɢɦɹ. Ɉɩɢɫɚɬɶ ɫɬɪɭɤɬɭɪɭ ɜ ɩɪɨɝɪɚɦɦɟ ɦɨɠɧɨ
ɬɨɥɶɤɨ ɨɞɧɚɠɞɵ, ɚ ɨɩɪɟɞɟɥɢɬɶ –
ɥɸɛɨɟ ɤɨɥɢɱɟɫɬɜɨ ɪɚɡ.
Ɉɩɢɫɚɧɢɟ ɫɬɪɭɤɬɭɪɵ ɲɚɛɥɨɧɚ ɢɦɟɟɬ ɫɥɟɞɭɸɳɢɣ ɫɢɧɬɚɤɫɢɫ.
ɢɦɹ_ɫɬɪɭɤɬɭɪɵ STRUɋT
<ɨɩɢɫɚɧɢɟ ɩɨɥɟɣ>
ɢɦɹ_ɫɬɪɭɤɬɭɪɵ ENDS
ȼ ɷɬɨɦ ɫɥɭɱɚɟ <ɨɩɢɫɚɧɢɟ ɩɨɥɟɣ> ɩɪɟɞɫɬɚɜɥɹɟɬ ɫɨɛɨɣ ɩɨɫɥɟɞɨɜɚɬɟɥɶ­ɧɨɫɬɶ ɞɢɪɟɤɬɢɜ ɨɩɢɫɚɧɢɹ ɞɚɧɧɵɯ db, dw, dd, dq ɢ dt. ɂɯ ɨɩɟɪɚɧɞɵ ɨɩɪɟ­ɞɟɥɹɸɬ ɪɚɡɦɟɪ ɩɨɥɟɣ ɢ ɩɪɢ ɧɟɨɛɯɨɞɢɦɨɫɬɢ – ɧɚɱɚɥɶɧɵɟ ɡɧɚɱɟɧɢɹ
11. ɋɥɨɠɧɵɟ ɫɬɪɭɤɬɭɪɵ ɞɚɧɧɵɯ (ɱɚɫɬɶ 2)
.
ɉɪɢ ɨɩɢɫɚɧɢɢ ɲɚɛɥɨɧɚ ɩɚɦɹɬɶ ɧɟ ɜɵɞɟɥɹɟɬɫɹ, ɬɚɤ ɤɚɤ ɷɬɨ ɜɫɟɝɨ ɥɢɲɶ ɢɧɮɨɪɦɚɰɢɹ ɞɥɹ ɬɪɚɧɫɥɹɬɨɪɚ. Ɇɟɫɬɨɩɨɥɨɠɟɧɢɟ ɲɚɛɥɨɧɚ ɜ ɩɪɨɝɪɚɦɦɟ ɦɨɠɟɬ ɛɵɬɶ ɩɪɨɢɡɜɨɥɶɧɵɦ, ɧɨ ɫ ɭɱɟɬɨɦ ɥɨɝɢɤɢ ɪɚɛɨɬɵ ɨɞɧɨɩɪɨɯɨɞɧɨɝɨ ɬɪɚɧɫɥɹɬɨɪɚ ɨɧ ɞɨɥɠɟɧ ɛɵɬɶ ɪɚɫɩɨɥɨɠɟɧ ɞɨ ɬɨɝɨ ɦɟɫɬɚ, ɝɞɟ ɨɩɪɟɞɟɥɹɟɬɫɹ ɩɟɪɟɦɟɧɧɚɹ ɫ ɬɢɩɨɦ ɞɚɧɧɨɣ ɫɬɪɭɤɬɭɪɵ. Ɍɚɤɢɦ ɨɛɪɚɡɨɦ ɩɪɢ ɨɩɢɫɚɧɢɢ ɜ ɫɟɝɦɟɧɬɟ ɞɚɧɧɵɯ ɩɟɪɟɦɟɧɧɨɣ ɫ
ɬɢɩɨɦ ɧɟɤɨɬɨɪɨɣ ɫɬɪɭɤɬɭɪɵ ɟɟ ɲɚɛɥɨɧ
ɧɟɨɛɯɨɞɢɦɨ ɩɨɦɟɫɬɢɬɶ ɜ ɧɚɱɚɥɨ ɫɟɝɦɟɧɬɚ ɞɚɧɧɵɯ ɥɢɛɨ ɩɟɪɟɞ ɧɢɦ.
Ⱦɥɹ ɢɫɩɨɥɶɡɨɜɚɧɢɹ ɨɩɢɫɚɧɧɨɣ ɫ ɩɨɦɨɳɶɸ ɲɚɛɥɨɧɚ ɫɬɪɭɤɬɭɪɵ ɜ ɩɪɨ­ɝɪɚɦɦɟ ɧɟɨɛɯɨɞɢɦɨ ɨɩɪɟɞɟɥɢɬɶ ɩɟɪɟɦɟɧɧɭɸ ɫ ɬɢɩɨɦ ɞɚɧɧɨɣ ɫɬɪɭɤɬɭɪɵ, ɫɨɝɥɚɫɧɨ ɫɥɟɞɭɸɳɟɣ ɫɢɧɬɚɤɫɢɱɟɫɤɨɣ ɤɨɧɫɬɪɭɤɰɢɢ:
[ɢɦɹ ɩɟɪɟɦɟɧɧɨɣ] ɢɦɹ_ɫɬɪɭɤɬɭɪɵ <[ɫɩɢɫɨɤ ɡɧɚɱɟɧɢɣ]>
ɂɦɹ ɩɟɪɟɦɟɧɧɨɣ – ɢɞɟɧɬɢɮɢɤɚɬɨɪ ɩɟɪɟɦɟɧɧɨɣ ɞɚɧɧɨɝɨ ɫɬɪɭɤɬɭɪɧɨɝɨ ɬɢɩɚ. Ɂɚɞɚɧɢɟ ɢɦɟɧɢ
ɩɟɪɟɦɟɧɧɨɣ ɧɟɨɛɹɡɚɬɟɥɶɧɨ. ȿɫɥɢ ɟɝɨ ɧɟ ɭɤɚɡɚɬɶ, ɬɨ ɛɭɞɟɬ ɩɪɨɫɬɨ ɜɵɞɟɥɟɧɚ ɨɛɥɚɫɬɶ ɩɚɦɹɬɢ ɪɚɡɦɟɪɨɦ, ɫɨɫɬɚɜɥɹɸɳɢɦ ɫɭɦɦɭ ɞɥɢɧ ɜɫɟɯ ɷɥɟɦɟɧɬɨɜ ɫɬɪɭɤɬɭɪɵ.
ɋɩɢɫɨɤ ɡɧɚɱɟɧɢɣ – ɡɚɤɥɸɱɟɧɧɵɣ ɜ ɭɝɥɨɜɵɟ ɫɤɨɛɤɢ ɫɩɢɫɨɤ ɧɚɱɚɥɶɧɵɯ
ɡɧɚɱɟɧɢɣ ɷɥɟɦɟɧɬɨɜ ɫɬɪɭɤɬɭɪɵ, ɪɚɡɞɟɥɟɧɧɵɯ ɡɚɩɹɬɵɦɢ. ȿɝɨ ɡɚɞɚɧɢɟ ɬɚɤɠɟ ɧɟɨɛɹɡɚɬɟɥɶɧɨ. ȿɫɥɢ ɫɩɢɫɨɤ ɭɤɚɡɚɧ ɧɟ ɩɨɥɧɨɫɬɶɸ, ɬɨ ɜɫɟ ɩɨɥɹ ɫɬɪɭɤɬɭɪɵ ɞɥɹ ɞɚɧɧɨɣ ɩɟɪɟɦɟɧɧɨɣ ɢɧɢɰɢɚɥɢɡɢɪɭɸɬɫɹ ɡɧɚɱɟɧɢɹɦɢ ɢɡ ɲɚɛɥɨɧɚ, ɟɫɥɢ ɬɚɤɨɜɵɟ ɡɚɞɚɧɵ. Ⱦɨɩɭɫɤɚɟɬɫɹ ɢɧɢɰɢɚɥɢɡɚɰɢɹ ɨɬɞɟɥɶɧɵɯ ɩɨɥɟɣ, ɧɨ ɜ ɷɬɨɦ ɫɥɭɱɚɟ ɩɪɨɩɭɳɟɧɧɵɟ ɩɨɥɹ ɞɨɥɠɧɵ ɪɚɡɞɟɥɹɬɶɫɹ ɡɚɩɹɬɵɦɢ. ɉɪɨɩɭɳɟɧɧɵɟ ɩɨɥɹ ɛɭɞɭɬ ɢɧɢɰɢɚɥɢɡɢɪɨɜɚɧɵ ɡɧɚɱɟɧɢɹɦɢ ɲɚɛɥɨɧɚ ɫɬɪɭɤɬɭɪɵ. ȿɫɥɢ ɩɪɢ ɨɩɪɟɞɟɥɟɧɢɢ ɧɨɜɨɣ ɩɟɪɟɦɟɧɧɨɣ ɫ ɬɢɩɨɦ ɞɚɧɧɨɣ ɫɬɪɭɤɬɭɪɵ ɦɵ ɫɨɝɥɚɫɧɵ ɫɨ ɜɫɟɦɢ ɡɧɚɱɟɧɢɹɦɢ ɩɨɥɟɣ ɜ ɟɟ ɲɚɛɥɨɧɟ, ɬɨ ɧɟɨɛɯɨɞɢɦɨ ɧɚɩɢɫɚɬɶ ɩɭɫɬɵɟ ɭɝɥɨɜɵɟ ɫɤɨɛɤɢ.
50
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]