Dup ассСмблСр. Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π² ассСмблСрС: DB, DUP ΠΈ особСнности ΠΈΡ… использования

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° DB Π² ассСмблСрС. Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ DUP. КакиС Π΅ΡΡ‚ΡŒ особСнности использования DB ΠΈ DUP Π² ассСмблСрных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ массивы ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ².

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° DB Π² ассСмблСрС: ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ использованиС

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° DB (Define Byte) являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² Π² ассСмблСрС для опрСдСлСния Π΄Π°Π½Π½Ρ‹Ρ…. Она ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для рСзСрвирования памяти ΠΏΠΎΠ΄ Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Π΅ значСния.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ способы использования DB:

  • ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: NUM DB 34 — создаСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ NUM ΠΈ присваиваСт Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 34
  • ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ строк: MSG DB 'Hello' — создаСт строку ΠΈΠ· 5 Π±Π°ΠΉΡ‚
  • ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ массивов: ARR DB 1, 2, 3, 4, 5 — создаСт массив ΠΈΠ· 5 Π±Π°ΠΉΡ‚

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ DB всСгда Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ Π±Π°ΠΉΡ‚Ρ‹, Π΄Π°ΠΆΠ΅ Ссли Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ числа большС 255. НапримСр:

VAL DB 1000

Π­Ρ‚ΠΎ создаст 2 Π±Π°ΠΉΡ‚Π° — 232 ΠΈ 3, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ 1000 Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ это 11 1110 1000.


ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ DUP: Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…

DUP (Duplicate) — это ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·. Он часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ вмСстС с DB для создания массивов.

Бинтаксис DUP:

количСство DUP (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования DUP:

  • ARR DB 5 DUP (0) — создаСт массив ΠΈΠ· 5 Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… Π±Π°ΠΉΡ‚
  • STR DB 10 DUP ('A') — создаСт строку ΠΈΠ· 10 символов ‘A’
  • BUF DB 100 DUP (?) — Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΠ΅Ρ‚ 100 Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ использования DB ΠΈ DUP

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с DB ΠΈ DUP Π²Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ нСсколько ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ²:

  1. DB всСгда ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚Π°ΠΌΠΈ. Для опрСдСлСния слов (2 Π±Π°ΠΉΡ‚Π°) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ DW, для Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… слов — DD.
  2. DUP ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ опрСдСлСния Π΄Π°Π½Π½Ρ‹Ρ… (DB, DW, DD ΠΈ Ρ‚.Π΄.).
  3. Π’Π½ΡƒΡ‚Ρ€ΠΈ DUP ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ выраТСния:
    ARR DB 10 DUP (1, 2, 3)
    — создаст массив ΠΈΠ· 30 Π±Π°ΠΉΡ‚
  4. Π‘ΠΈΠΌΠ²ΠΎΠ» ? Π² DUP ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ объявлСниС массивов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DB ΠΈ DUP

ΠŸΡ€ΠΈ объявлСнии массивов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DB ΠΈ DUP слСдуСт ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»:


  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ DUP для создания Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов с ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΌΠΈΡΡ значСниями
  • Для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ значСниями ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ просто DB с пСрСчислСниСм элСмСнтов
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ? Π²Π½ΡƒΡ‚Ρ€ΠΈ DUP, Ссли Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния Π½Π΅ Π²Π°ΠΆΠ½Ρ‹
  • ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ элСмСнтов — DB для Π±Π°ΠΉΡ‚, DW для слов ΠΈ Ρ‚.Π΄.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ объявлСния массивов:

SMALL_ARR DB 1, 2, 3, 4, 5 ; МалСнький массив с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ значСниями BIG_ARR DB 1000 DUP (0) ; Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ массив, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ нулями MATRIX DB 10 DUP (10 DUP (0)) ; Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив 10x10 BUFFER DB 512 DUP (?) ; Π‘ΡƒΡ„Π΅Ρ€ Π±Π΅Π· Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… с использованиСм DB ΠΈ DUP

DB ΠΈ DUP ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π³ΠΈΠ±ΠΊΠΈΠ΅ возмоТности для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ассСмблСрных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии:

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ строк

Для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ строк ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ DB Π±Π΅Π· DUP:

MESSAGE DB 'Hello, World!', 0 ; Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π°ΡΡΡ Π½ΡƒΠ»Π΅ΠΌ NAME DB 'John Doe' ; Π‘Ρ‚Ρ€ΠΎΠΊΠ° фиксированной Π΄Π»ΠΈΠ½Ρ‹

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ числовых массивов

Для числовых массивов ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ DB, Ρ‚Π°ΠΊ ΠΈ DUP:


NUMBERS DB 1, 2, 3, 4, 5 ; Массив ΠΈΠ· 5 чисСл HUNDREDS DB 100 DUP (100) ; 100 элСмСнтов со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 100 SEQUENCE DB 10 DUP (1, 2, 3, 4, 5) ; ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π°ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ структур Π΄Π°Π½Π½Ρ‹Ρ…

DB ΠΈ DUP ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ слоТных структур Π΄Π°Π½Π½Ρ‹Ρ…:

PERSON DB 'John Doe', 0, 30, 5 DUP (0) ; Имя, возраст ΠΈ 5 Π±Π°ΠΉΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… TEAM DB 10 DUP ('Player', 0, 25, 0) ; Массив ΠΈΠ· 10 записСй ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ²

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΏΡ€ΠΈ использовании DB ΠΈ DUP

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с DB ΠΈ DUP Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ часто Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ошибки:

  • ИспользованиС DB для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ большС 255 Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° пСрСполнСния
  • Π—Π°Π±Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ DUP создаСт Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…
  • ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ строк
  • ΠŸΡƒΡ‚Π°Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ DB, DW ΠΈ DD ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:

WRONG_VAL DB 1000 ; Π‘ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΊΠ°ΠΊ Π΄Π²Π° Π±Π°ΠΉΡ‚Π°: 232 ΠΈ 3 BAD_STR DB "Hello' ; ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ MIXED_ARR DB 5 DUP (1, 2) ; Боздаст массив ΠΈΠ· 10 Π±Π°ΠΉΡ‚, Π° Π½Π΅ 5

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ использования памяти с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DB ΠΈ DUP

Π“Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠ΅ использованиС DB ΠΈ DUP позволяСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ использованиС памяти Π² ассСмблСрных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Π’ΠΎΡ‚ нСсколько совСтов:


  1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ DUP для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ значСниями вмСсто ΠΈΡ… явного пСрСчислСния
  2. Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ связанныС Π΄Π°Π½Π½Ρ‹Π΅ для Π»ΡƒΡ‡ΡˆΠ΅ΠΉ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ кэша
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ? для Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ исполняСмого Ρ„Π°ΠΉΠ»Π°
  4. Π’Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°ΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌ слов ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… слов для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ доступа

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:

ALIGN 4 ; Π’Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π΅ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ слова DATA_START: COUNTER DD 0 ; Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ (4 Π±Π°ΠΉΡ‚Π°) FLAGS DB 16 DUP (0) ; Π€Π»Π°Π³ΠΈ (16 Π±Π°ΠΉΡ‚) BUFFER DB 1024 DUP (?) ; Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π±ΡƒΡ„Π΅Ρ€ DATA_END:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ понимания DB ΠΈ DUP Π² ассСмблСрС

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° DB ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ DUP ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ инструмСнтами Π² ассСмблСрном ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π˜Ρ… ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС позволяСт эффСктивно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слоТныС структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ для запоминания:

  • DB всСгда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π±Π°ΠΉΡ‚Π°ΠΌΠΈ
  • DUP позволяСт эффСктивно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ большиС массивы
  • ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ DB ΠΈ DUP прСдоставляСт Π³ΠΈΠ±ΠΊΠΈΠ΅ возмоТности для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…
  • Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ слСдитС Π·Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ DB ΠΈ DUP для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ использования памяти

Π“Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ этих ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ являСтся Π²Π°ΠΆΠ½Ρ‹ΠΌ шагом Π½Π° ΠΏΡƒΡ‚ΠΈ ΠΊ мастСрству Π² ассСмблСрном ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.



Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² ассСмблСрС

Β 

Π”Π°Π½Π½Ρ‹Π΅ – числа ΠΈ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ символы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² качСствС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄.
ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² ассСмблСрС

Π’ΠΈΠΏΠ”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π±Π°ΠΉΡ‚
Π‘Π°ΠΉΡ‚DB1
Π‘Π»ΠΎΠ²ΠΎDW2
Π”Π²ΠΎΠΉΠ½ΠΎΠ΅ словоDD4
8 Π±Π°ΠΉΡ‚DQ8
10 Π±Π°ΠΉΡ‚DT10

Π”Π°Π½Π½Ρ‹Π΅, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ машиной, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° 4 Π³Ρ€ΡƒΠΏΠΏΡ‹:

  • цСлочислСнныС;
  • вСщСствСнныС.
  • ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅;
  • логичСскиС;
ЦСлочислСнныС Π΄Π°Π½Π½Ρ‹Π΅

Π¦Π΅Π»Ρ‹Π΅ числа Π² ассСмблСрС ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны Π² 1-Π±Π°ΠΉΡ‚Π½ΠΎΠΉ, 2-Π±Π°ΠΉΡ‚Π½ΠΎΠΉ, 4-Π±Π°ΠΉΡ‚Π½ΠΎΠΉ ΠΈΠ»ΠΈ 8-Π±Π°ΠΉΡ‚Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅. ЦСлочислСнныС Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ Π² Π·Π½Π°ΠΊΠΎΠ²ΠΎΠΉ ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅.

Π‘Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±ΠΈΡ‚ΠΎΠ² Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ 2n-1, Π³Π΄Π΅ n- количСство Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… Π±ΠΈΡ‚ΠΎΠ².


Π—Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ -2n-1 … +2n-1-1. ΠŸΡ€ΠΈ этом ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ отводится ΠΏΠΎΠ΄ Π·Π½Π°ΠΊ числа (0 соотвСтствуСт ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ числу, 1 – ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ).

ВСщСствСнныС Π΄Π°Π½Π½Ρ‹Π΅

ВСщСствСнныС Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ 4, 8 ΠΈΠ»ΠΈ 10-Π±Π°ΠΉΡ‚Π½Ρ‹ΠΌΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ матСматичСским сопроцСссором.

ЛогичСскиС Π΄Π°Π½Π½Ρ‹Π΅

ЛогичСскиС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π±ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±ΠΈΡ‚ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 (Π›ΠžΠ–Π¬) ΠΈΠ»ΠΈ 1 (ИБВИНА). ЛогичСскиС Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с любой ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² Π±Π°ΠΉΡ‚Π΅.

Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅

Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ΄Π°Ρ… ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π»ΠΈΠ½Ρƒ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, 1 Π±Π°ΠΉΡ‚ (для ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ASCII) ΠΈΠ»ΠΈ 2 Π±Π°ΠΉΡ‚Π° (для ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ Unicode)Β  .

Числа Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎ-дСсятичном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅

Π’ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎ-дСсятичном ΠΊΠΎΠ΄Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа, ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΎΡ‚ 0 Π΄ΠΎ 9. Числа Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎ-дСсятичном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… Π²ΠΈΠ΄ΠΎΠ²:

  • ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΌ;
  • Π½Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΌ.

Π’ Π½Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π±Π°ΠΉΡ‚Π΅ хранится ΠΎΠ΄Π½Π° Ρ†ΠΈΡ„Ρ€Π°, размСщСнная Π² младшСй ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ Π±Π°ΠΉΡ‚Π° (Π±ΠΈΡ‚Ρ‹ 3…0).

Π£ΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄ допускаСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… дСсятичных Ρ†ΠΈΡ„Ρ€ Π² ΠΎΠ΄Π½ΠΎΠΌ Π±Π°ΠΉΡ‚Π΅, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΡΡ‚Π°Ρ€ΡˆΠ°Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° Π±Π°ΠΉΡ‚Π° отводится ΠΏΠΎΠ΄ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ разряд.

ЧисловыС константы

ЧисловыС константы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для обозначСния арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΈ адрСсов памяти. Для числовых констант Π² АссСмблСрС ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ числовыС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹.

ДСсятичный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ – допускаСт использованиС дСсятичных Ρ†ΠΈΡ„Ρ€ ΠΎΡ‚ 0 Π΄ΠΎ 9 ΠΈ обозначаСтся послСднСй Π±ΡƒΠΊΠ²ΠΎΠΉ d, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 125 ΠΈΠ»ΠΈ 125d. АссСмблСр сам ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ значСния Π² дСсятичном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ записываСт Π±Π°ΠΉΡ‚Ρ‹ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ прямой адрСсации.

a DB 12

ШСстнадцатСричный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ – допускаСт использованиС ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Ρ… Ρ†ΠΈΡ„Ρ€ ΠΎΡ‚ 0 Π΄ΠΎ F ΠΈ обозначаСтся послСднСй Π±ΡƒΠΊΠ²ΠΎΠΉ h, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 7Dh. Π’Π°ΠΊ ΠΊΠ°ΠΊ ассСмблСр ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ с Π±ΡƒΠΊΠ²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ символом ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ константы Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ†ΠΈΡ„Ρ€Π° ΠΎΡ‚ 0 Π΄ΠΎ 9. НапримСр, 0Eh.

a DB 0Ch

Π”Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ – допускаСт использованиС Ρ†ΠΈΡ„Ρ€ 0 ΠΈ 1 ΠΈ обозначаСтся послСднСй Π±ΡƒΠΊΠ²ΠΎΠΉ b. Π”Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅Ρ‚ΠΊΠΎΠ³ΠΎ прСдставлСния Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² логичСских ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… (AND, OR, XOR).

a DB 00001100b

Π’ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ – допускаСт использованиС Ρ†ΠΈΡ„Ρ€ ΠΎΡ‚ 0 Π΄ΠΎ 7 ΠΈ обозначаСтся послСднСй Π±ΡƒΠΊΠ²ΠΎΠΉ q ΠΈΠ»ΠΈ o, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 253q.

a DB 14q

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΈ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ

Массивом называСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ.

Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° β€” массив, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ фиксированный Π½Π°Π±ΠΎΡ€ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ

M1 DD 0,1,2,3,4,5,6,7,8,9
M2 DD 0,1,2,3

Β Β  DD 4,5,6,7

Β Β  DD 8,9

КаТдая ΠΈΠ· записСй выдСляСт Π΄Π΅ΡΡΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… 4-Π±Π°ΠΉΡ‚Π½Ρ‹Ρ… ячССк памяти ΠΈ записываСт Π² Π½ΠΈΡ… значСния 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ M1 опрСдСляСт смСщСниС Π½Π°Ρ‡Π°Π»Π° этой области Π² сСгмСнтС Π΄Π°Π½Π½Ρ‹Ρ… .DATA.

Для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ всСх элСмСнтов массива ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ значСниями ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ DUP:

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π’ΠΈΠΏ Π Π°Π·ΠΌΠ΅Ρ€ DUP (Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ β€” имя массива;
Π’ΠΈΠΏ β€” опрСдСляСт количСство Π±Π°ΠΉΡ‚, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ΅ ΠΎΠ΄Π½ΠΈΠΌ элСмСнтом;
Π Π°Π·ΠΌΠ΅Ρ€ β€” константа, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ количСство элСмСнтов Π² массивС
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнтов.

НапримСр

a DD 20 DUP (0)

описываСт массив a ΠΈΠ· 20 элСмСнтов, Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π²Π½Ρ‹ 0.

Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π½ΠΎ Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅, Π² качСствС поля Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π½Π°ΠΊ ?. НапримСр,

b DD 20 DUP(?)

Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки

Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π½Π°Π±ΠΎΡ€ символов для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ строки отмСчаСтся

  • ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ Β», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, β€˜ΡΡ‚Ρ€ΠΎΠΊΠ°β€™
  • Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ «», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ «строка»

Бимвольная строка опрСдСляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ DB, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ указываСтся Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ.

Бимвольная строка, прСдназначСнная для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°, Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½ΡƒΠ»ΡŒ-символом β€˜\0’ с ΠΊΠΎΠ΄ΠΎΠΌ, Ρ€Π°Π²Π½Ρ‹ΠΌ 0.

Str DB β€˜ΠŸΡ€ΠΈΠ²Π΅Ρ‚ всСм!’, 0

Для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ символы

  • Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ с ΠΊΠΎΠ΄ΠΎΠΌ 13 (0Dh)
  • ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки с ΠΊΠΎΠ΄ΠΎΠΌ 10 (0Ah).

Stroka DB Β«ΠŸΡ€ΠΈΠ²Π΅Ρ‚Β», 13, 10, 0

Назад

Назад: Π―Π·Ρ‹ΠΊ ассСмблСра

ОписаниС Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² АссСмблСрС Intel

Для описания Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ рСзСрвирования ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ памяти:

  • DB – 1 Π±Π°ΠΉΡ‚ – 8 Π±ΠΈΡ‚,

  • DW – 2 Π±Π°ΠΉΡ‚Π° – 16 Π±ΠΈΡ‚,

  • DD – 4 Π±Π°ΠΉΡ‚Π° – 32 Π±ΠΈΡ‚Π°,

  • DQ – 8 Π±Π°ΠΉΡ‚ – 64 Π±ΠΈΡ‚Π°,

  • DT – 10 Π±Π°ΠΉΡ‚ – 80 Π±ΠΈΡ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Π΄Π»ΠΈΠ½ΠΎΠΉ 6 Π±Π°ΠΉΡ‚ (для дальнСго указатСля – 2 Π±Π°ΠΉΡ‚Π° сСлСктор ΠΈ 4 Π±Π°ΠΉΡ‚Π° смСщСниС):

  • DF – 6 Π±Π°ΠΉΡ‚ – 48 Π±ΠΈΡ‚,

  • DP – 6 Π±Π°ΠΉΡ‚ – 48 Π±ΠΈΡ‚,

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

The_byte DB 5 ; 0 … 255 (28-1)

The_word DW 3000 ; 0 … 65 535 (216-1)

The_dword DD 12345678 ; 0 … 4 294 967 295 (2

32-1)

The_qword DQ 1122334455667788 ; 0 … (264-1)

The_ptr DP 112233445566 ; 0 … (248-1)

ΠŸΡ€ΠΈ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ памяти ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ΅ количСство элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ…, инициализируя ΠΈΡ… значСния ΠΈΠ»ΠΈ Π½Π΅ инициализируя, присваивая имя ΠΈΠ»ΠΈ Π½Π΅ присваивая. Для описания символов Π² ΠΊΠΎΠ΄Π΅ ASCII АссСмблСр допускаСт Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ значСния Π±Π°ΠΉΡ‚ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ….

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

DB ? ; ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ Π±Π΅Π· ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΈΠΌΠ΅Π½ΠΈ

DB 5, 0Fh ; Π΄Π²Π° Π±Π°ΠΉΡ‚Π° Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ с ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ

DB 5,?,7 ; Ρ‚Ρ€ΠΈ Π±Π°ΠΉΡ‚Π°, Π΄Π²Π° с ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, ΠΎΠ΄ΠΈΠ½ – Π±Π΅Π·

Five_bytes DB 0,0,0,0,0 ; ΠΎΠ±Π»Π°ΡΡ‚ΡŒ 5 Π±Π°ΠΉΡ‚, значСния всСх Π½ΡƒΠ»Π΅Π²Ρ‹Π΅

The_ptr DB 1122334455 ; 0 … (2

48-1)

Str DB β€˜Π‘Ρ‚Ρ€ΠΎΠΊΠ° тСкста’ ; 13 Π±Π°ΠΉΡ‚

DB β€˜5’ ; ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚, Ρ€Π°Π²Π½Ρ‹ΠΉ 53 ΠΈΠ»ΠΈ 35h ΠΈΠ»ΠΈ β€˜5’

DB 5 ; ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚, Ρ€Π°Π²Π½Ρ‹ΠΉ 5

ΠŸΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ памяти ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΌΠΈΡΡ значСниями ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ dup:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

Buffer DB 200h dup (0) ; Π±ΡƒΡ„Π΅Ρ€ 512 Π±Π°ΠΉΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ нулями.

String_buf DB 78 dup (β€˜ β€˜) ; Π±ΡƒΡ„Π΅Ρ€ ΠΏΡ€ΠΈΠ΅ΠΌΠ° строки Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ.

К ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ячСйкам памяти ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Один ΠΈΠ· способов описания Ρ‚Π°ΠΊΠΈΡ… ячССк памяти ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ использованиС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ LABEL.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

Bytes label byte

Words label word

DB 0,1,2,3,4,5 ; ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡˆΠ΅ΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈ слова

; слова Ρ€Π°Π²Π½Ρ‹: 0100h, 0302h, 0504h

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ячСйкам ΠΊΠ°ΠΊ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈ Π±Π΅Π· описания ΠΈΡ… Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ LABEL, Ссли явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ PTR.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

b_or_w db 1,2,3,4 ; Π΄Π°Π½Π½Ρ‹Π΅

…

mov al, byte ptr b_or_w ; al := 01

mov ax, word ptr b_or_w ; ax := 0201h

mov al, byte ptr b_or_w+3 ; al := 04

mov ax, word ptr b_or_w+2 ; ax := 0403h

w_or_b dw 0201h,0403h ; Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅

…

mov al,byte ptr w_or_b+3 ; al := 04

mov ax,w_or_b+2 ; ax := 0403h

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС АссСмблСр с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, описанными Π² сСгмСнтС Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Π΅Π³ΠΌΠ΅Π½Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹Π΄Π΅Π»Π΅Π½ ΠΏΠΎΠ»ΡƒΠΆΠΈΡ€Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ.

На ΠΏΠ΅Ρ€Π²ΠΎΠΉ страницС листинга ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ трансляции рассматриваСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ Π² исходном ΠΌΠΎΠ΄ΡƒΠ»Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹.

Turbo Assembler Version 2.51 03/07/00 12:25:41 Page 1

prog.ASM

1 name prog

2

3 0000 .model small

4

5 0000 .data

6 ;———————

7 0000 42 65 67 69 6E 20 6F+ db ‘Begin of DATAseg’

8 66 20 44 41 54 41 73+

9 65 67

10

11 0010 12 x1 db 12h

12 0011 1234 x2 dw 1234h

13 0013 12345678 x3 dd 12345678h

14 0017 0123456789ABCDEF x4 dq 0123456789ABCDEFh

15 001F 112233445566778899AA x5 dt 112233445566778899AAh

16 0029 112233445566 x6 dp 112233445566h

17 002F AABBCCDDEEFF x7 df 0AABBCCDDEEFFh

18

19 0035 53 74 72 69 6E 67 20+ s1 db ‘String 1’

20 31

21 003D 2A db ‘*’

22 003E ?? db ?

23 003F ?? db ?

24

25 0040 10*(02 03) b1 db 10h dup (2,3)

26

27 0060 . code

28 ;———————

29 0000 main proc far

30 0000 start:

31 0000 B8 0000s mov ax,@data

32 0003 8E D8 mov ds,ax

33

34 0005 exit:

35 0005 B8 4C00 mov ax,4C00h ; exit

36 0008 CD 21 int 21h

37

38 000A main endp

39 ;———————

40 end start

На Π²Ρ‚ΠΎΡ€ΠΎΠΉ страницС листинга ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° символичСских ΠΈΠΌΠ΅Π½ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΡ… адрСсов. Π’Π°ΠΊ, адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x4 Ρ€Π°Π²Π΅Π½ 0017h, Ρ‚. Π΅. находится Π² 23-Π΅ΠΉ ячСйкС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡Π°Π»Π° сСгмСнта Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ DGROUP.

Turbo Assembler Version 2.51 03/07/00 12:25:41 Page 2

Symbol Table

Symbol Name Type Value

??DATE Text «03/07/00»

??FILENAME Text «prog «

??TIME Text «12:25:41»

??VERSION Number 0205

@CODE Text _TEXT

@CODESIZE Text 0

@CPU Text 0101H

@CURSEG Text _TEXT

@DATA Text DGROUP

@DATASIZE Text 0

@FILENAME Text PROG

@MODEL Text 2

@WORDSIZE Text 2

B1 Byte DGROUP:0040

EXIT Near _TEXT:0005

MAIN Far _TEXT:0000

S1 Byte DGROUP:0035

START Near _TEXT:0000

X1 Byte DGROUP:0010

X2 Word DGROUP:0011

X3 Dword DGROUP:0013

X4 Qword DGROUP:0017

X5 Tbyte DGROUP:001F

X6 Pword DGROUP:0029

X7 Pword DGROUP:002F

Groups & Segments Bit Size Align Combine Class

DGROUP Group

_DATA 16 0060 Word Public DATA

_TEXT 16 000A Word Public CODE

Π’ΠΈΠ΄ модуля Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ AFD ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис. 1.

Π’ ыдСлСнная Π²Π½ΠΈΠ·Ρƒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ – это сСгмСнт Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. АдрСса Π΄Π°Π½Π½Ρ‹Ρ… ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠ· Π΄Π²ΡƒΡ… ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Ρ… чисСл: Π² Π»Π΅Π²ΠΎΠΌ столбцС ΠΈ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ строкС Π½Π°Π΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π’Π°ΠΊ, Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Π±Π°ΠΉΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ адрСс 0000h, Π° Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ 42h, ΠΈΠ»ΠΈ β€˜B’ Π»Π°Ρ‚., ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ строки String1 ΠΈΠΌΠ΅Π΅Ρ‚ адрСс 0030h + 5h = 0035h, Π° Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ 53h ΠΈΠ»ΠΈ β€˜S’ Π»Π°Ρ‚. Π‘ΠΏΡ€Π°Π²Π° ΠΎΡ‚ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π΄Π°ΠΌΠΏΠ° памяти располоТСно ASCII-прСдставлСниС этих Π΄Π°Π½Π½Ρ‹Ρ… (символьноС прСдставлСниС, ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ для чтСния тСкстовых констант).

Рисунок 1

Π‘ Π΅Π³ΠΌΠ΅Π½Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° рис.2. ΠŸΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² исходном ΠΌΠΎΠ΄ΡƒΠ»Π΅ области Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ с записью Π² исходном ΠΌΠΎΠ΄ΡƒΠ»Π΅ располоТСниС Π±Π°ΠΉΡ‚ΠΎΠ² – Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ΠΉ эффСкт, связанный с прСдставлСниСм ячССк памяти Π² ΠΎΠΊΠ½Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ (ΠΎΡ‚ ΠΌΠ»Π°Π΄ΡˆΠΈΡ… ΠΊ ΡΡ‚Π°Ρ€ΡˆΠΈΠΌ). Π’Π°ΠΊ, Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ слово x3, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ константой 12345678h, Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π±Π°ΠΉΡ‚Ρ‹ с адрСсами 13, 14, 15, 16. ΠŸΡ€ΠΈ этом Π΄Π²Π΅ младшиС Ρ†ΠΈΡ„Ρ€Ρ‹ числа (7 ΠΈ 8) Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ младший Π±Π°ΠΉΡ‚ с адрСсом 13, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹ (5 ΠΈ 6) Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π±Π°ΠΉΡ‚ с адрСсом 14 ΠΈ Ρ‚.Π΄. Π‘Ρ‚Ρ€ΠΎΠΊΠ° тСкста Π² ΠΎΠΊΠ½Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° читаСтся Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² исходном ΠΌΠΎΠ΄ΡƒΠ»Π΅, Ρ‚.ΠΊ. располоТСниС тСкста Π² памяти – ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° тСкста Π² ΠΌΠ»Π°Π΄ΡˆΠΈΡ… адрСсах ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ тСкста Π² ΡΡ‚Π°Ρ€ΡˆΠΈΡ… адрСсах – совпадаСт с СстСствСнным располоТСниСм Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ тСкста слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ (см. рис.1). Π‘Π°ΠΉΡ‚Ρ‹ с адрСсами 3E, 3F, значСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ, Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Π‘Π°ΠΉΡ‚Ρ‹ с адрСсами 40-5F Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° dup.

Рисунок 2

Π’ΠΈΠ΄ модуля Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ TurboDebuger 5.0 ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис.3.

Рисунок 3

Π‘Π±ΠΎΡ€ΠΊΠ°

— Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ `dup (?)` Π² TASM?

спросил

ИзмСнСно 1 Π³ΠΎΠ΄, 9 мСсяцСв Π½Π°Π·Π°Π΄

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ 60 тысяч Ρ€Π°Π·

Π£ мСня Π΅ΡΡ‚ΡŒ этот ΠΊΠΎΠ΄, Π½ΠΎ я Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌ с синтаксисом.

 STACK16_SIZE = 100 Ρ‡
stack16 db STACK16_SIZE Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ (?)
 

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ dup ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ объявляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° массив, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это стСк, Π½ΠΎ я Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½. Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ dup Π² TASM?

  • Π² сборС
  • x86
  • тасм

0

STACK16_SIZE dup (?) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² скобках STACK16_SIZE Ρ€Π°Π·. Π­Ρ‚ΠΎ эквивалСнтно написанию ?, ?, ?, ?, … (100Ρ‡ Ρ€Π°Π·)

Π”Π°Π½Π½Ρ‹Π΅ Π² скобках ΡΠ²Π»ΡΡŽΡ‚ΡΡ «Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ». Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ выдСляСтся, Π½ΠΎ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π½Π΅ устанавливаСтся ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π‘Π±ΠΎΡ€ΠΊΠ° Π½Π΅ прСдоставляСт массив «Ρ‚ΠΈΠΏ». Если это Ρ‚Π°ΠΊ, это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠ² для использования ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. Однако Π² этом Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° stack16 β€” это символ с адрСсом, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ Π±Π»ΠΎΠΊ памяти Π±Π°ΠΉΡ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ Π·Π΄Ρ€Π°Π²ΠΎΠΌΡƒ смыслу ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ источником Ρ‚ΠΎΠ½ΠΊΠΎΠΉ ошибки. Для стСка ЦП Π΅Π³ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ слСдуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊ 16-Π±ΠΈΡ‚Π½Ρ‹Π΅ слова ( dw ) ΠΈΠ»ΠΈ 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ слова ( dd ).

5

НачнСм с Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ 20 DUP (0) ΠΊΠ°ΠΊ Β«Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΡŒ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ²Β». ВсС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ INPUTSTR DB 20 DUP (0) эквивалСнтно INPUTSTR DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0 .

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ? ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β», 20 DUP (?) даст Π²Π°ΠΌ 20 Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ². И Π² этом ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ STACK16_SIZE DUP (?) , Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ STACK16_SIZE Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ².

Π­Ρ‚ΠΎΡ‚ синтаксис Π½Π΅ спСцифичСн для TASM. MASM Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ это; заглянитС Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ справочник MASM ΠΎΡ‚ Microsoft.

? ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ отсутствиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ значСния, Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅. DUP ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ 100h Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ².

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΈΠ»ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² систСму

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Google

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· Facebook

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π³ΠΎΡΡ‚ΡŒ

ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π°

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π½Π΅ отобраТаСтся

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π³ΠΎΡΡ‚ΡŒ

ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π°

ВрСбуСтся, Π½ΠΎ Π½Π΅ отобраТаСтся

x86 16 — ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² DB ΠΈ DUP сборки 8086

Π—Π°Π΄Π°Π²Π°Ρ‚ΡŒ вопрос

спросил

ИзмСнСно 2 Π³ΠΎΠ΄Π°, 9 мСсяцСв Π½Π°Π·Π°Π΄

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ 14 тысяч Ρ€Π°Π·

Π˜Ρ‚Π°ΠΊ, я столкнулся с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, которая заставила мСня ΡƒΡΠΎΠΌΠ½ΠΈΡ‚ΡŒΡΡ Π² ΠΌΠΎΠ΅ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ DB (ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π±Π°ΠΉΡ‚) ΠΈ DUP (Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚). Как я ΠΈΡ… понял:

  • NUM DB 34 создаст ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ NUM ΠΈ присвоит Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 34. НапримСр, C char NUM = 34; 1
  • NUM DB 34 DUP(?) даст ΠΌΠ½Π΅ массив ΠΈΠ· 34 элСмСнтов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½.
  • NUM DB 3 DUP(4) даст ΠΌΠ½Π΅ массив с ΠΈΠΌΠ΅Π½Π΅ΠΌ NUM с 3 элСмСнтами: 4, 4, 4.

Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ?

Π’ ΠΌΠΎΠ΅ΠΌ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ΅ я встрСтил:

 PRINT_SELECT Π‘Π” 133 (?)
             Π”Π‘ 123 (?)
 

Π­Ρ‚ΠΎ просто ошибка Π² ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ΅, ΠΈΠ»ΠΈ эти Π΄Π²Π΅ строчки ΠΊΠΎΠ΄Π° ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ совсСм Π΄Ρ€ΡƒΠ³ΠΎΠ΅?


Бноска 1: (ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°): NUM = 34 Π² ассСмблСрС опрСдСляСт ΠΏΠΎΡΡ‚ΠΎΡΠ½Π½ΡƒΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сборки, Π½Π΅ Ρ…Ρ€Π°Π½ΡΡ‰ΡƒΡŽΡΡ Π² памяти Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ассСмблСрС синтаксиса MASM Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… контСкстах ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π° Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ mul NUM Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с источником памяти, Π° Π½Π΅ с нСпосрСдствСнным, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ imul eax, ecx, NUM ΠΈΠ»ΠΈ shl ax, NUM , ΠΈΠ»ΠΈ mov ax, NUM/2 Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с нСпосрСдствСнным, Π° Π½Π΅ источник памяти.

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

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