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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ копирования строки

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π—Π°Π΄Π°Ρ‡Π°, практичСски идСнтичная ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ. Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ способа пСрСсылки строки. Π’ Π΄Π°Π½Π½ΠΎΠΌ случСС Π½Π°ΠΌ ΡƒΠΆΠ΅ Π½Π΅ Ρ‚рСбуСтся вСсти запись Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС. Π’Π°ΠΊΠΆΠ΅, создаём Π΄Π²Π΅ строки. Одна выполняСт Ρ€ΠΎΠ»ΡŒ источника Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π΄Ρ€ΡƒΠ³Π°Ρ — ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ адрСс источника ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Сля с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Lea. ΠŸΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ DI Π½Π° 15 Π±Π°ΠΉΡ‚ΠΎΠ² большС Π½Π΅ ΡΠΌΠ΅Ρ‰Π°Π΅ΠΌ. ΠžΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ Ρ†ΠΈΠΊΠ» ΠΈ ΠΏΠΎΡΡ€Π΅Π΄ΡΡ‚Π²ΠΎΠΌ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ копирования строки (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎ Π Π€ ΠΏΠΎ ΡΠ²ΡΠ·ΠΈ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ПоволТская государствСнная акадСмия Ρ‚Π΅Π»Π΅ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠšΠ°Ρ„Π΅Π΄Ρ€Π° «Π’Π«Π§Π˜Π‘Π›Π˜Π’Π•Π›Π¬ΠΠΠ― Π’Π•Π₯НИКА»

ΠšΠžΠΠ’Π ΠžΠ›Π¬ΠΠΠ― Π ΠΠ‘ΠžΠ’Π ΠŸΠž ΠŸΠ Π•Π”ΠœΠ•Π’Π£

«ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ Π­Π’Πœ ΠΈ ΡΠΈΡΡ‚Π΅ΠΌ»

Π‘Π°ΠΌΠ°Ρ€Π°

2009 Π³.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° копирования строки Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС

Π‘ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ копирования строки ΠΈΠ· 15 символов Π² Ρ€ΡΠ΄ΠΎΠΌ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти, Π½ΠΎ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС.

Для этого ΠΌΡ‹ ΡΠΎΠ·Π΄Π°Ρ‘ΠΌ Π΄Π²Π΅ строки. Одна выполняСт Ρ€ΠΎΠ»ΡŒ источника Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π΄Ρ€ΡƒΠ³Π°Ρ — ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ адрСс источника ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Сля с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Lea, которая являСтся Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ ассСмблСра offset. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ offset ΠΊΠΎΠΌΠ°Π½Π΄Π° lea допускаСт ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°, Ρ‡Ρ‚ΠΎ позволяСт Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π΄Ρ€Π΅ΡΠ°Ρ†ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ². Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС, Ρ‚ΠΎ ΠΌΡ‹ ΡΡ€Π°Π·Ρƒ смСщаСм адрСс ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ° DI Π½Π° 15 Π±Π°ΠΉΡ‚ΠΎΠ². ΠžΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ Ρ†ΠΈΠΊΠ» ΠΈ ΠΏΠΎΡΡ€Π΅Π΄ΡΡ‚Π²ΠΎΠΌ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ рСгистра AL заносим наши символы Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ DI, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ, с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ шагом, Π±Π°ΠΉΡ‚Ρ‹ записи. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ счётчик CX ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡΡ Π΄ΠΎ 0, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ

Π›Π˜Π‘Π’Π˜ΠΠ“ Π—ΠΠ”ΠΠ§Π˜ «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ строки Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС»

Π—Π°Π΄Π°Ρ‡Π° 17

Data Segment; ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ сСгмСнт Π΄Π°Π½Π½Ρ‹Ρ…

text1 DB 'My name Valerij', 13, 10, '$'

text2 DB 25 DUP (?); строка ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ

Data ENDS; Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ сСгмСнт Π΄Π°Π½Π½Ρ‹Ρ…

;———————————————————————-

STK Segment; ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ сСгмСнт Π΄Π°Π½Π½Ρ‹Ρ…

DB 100 DUP (?); Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ стСк 100 ячССк памяти

STK ENDS; Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ сСгмСнт стСка

;—————————————————————————-

ASSUME SS: STK, CS: CODE, DS: DATA ;Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ сСгмСнтныС рСгистры

;——————————————————————————-

CODE Segment; ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ сСгмСнт ΠΊΠΎΠ΄Π°

START: mov AX, DATA; Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° сСгмСнтного рСгистра DS

mov DS, AX; рСгистра DS

lea SI, TEXT1; Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ адрСс строки-источника занСсти Π² SI

lea DI, TEXT2; Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ адрСс строки получатСля занСсти Π² DI

mov CX, 15; ΠΏΠ΅Ρ€Π΅ΡΠ»Π°Ρ‚ΡŒ 15 Π±Π°ΠΉΡ‚ΠΎΠ²

Metka1: mov AL, [SI]; Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ пСрСсылку

mov [DI + 15], AL; Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ рСгистр AL

INC SI; ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ адрСс источника Π½Π° 1

DEC DI; ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ адрСс источника Π½Π° 1

LOOP Metka1; (CX)-1, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» ΠΏΠΎΠΊΠ° CX Π½Π΅ Ρ€Π°Π²Π½ΠΎ 0

mov AL, 0; Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‡Π΅Ρ€Π΅Π·

mov AH, 4Ch; ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°

int 21h; Π² DOS

CODE ENDS; Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ сСгмСнт ΠΊΠΎΠ΄Π°

END START; Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° копирования строки Π½Π° ΠΏΡ€ΡΠΌΡƒΡŽ

Π‘ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‰ΡƒΡŽ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ строки ΠΈΠ· 15 символов Π² Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ рядом ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти.

Π—Π°Π΄Π°Ρ‡Π°, практичСски идСнтичная ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ. Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ способа пСрСсылки строки. Π’ Π΄Π°Π½Π½ΠΎΠΌ случСС Π½Π°ΠΌ ΡƒΠΆΠ΅ Π½Π΅ Ρ‚рСбуСтся вСсти запись Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС. Π’Π°ΠΊΠΆΠ΅, создаём Π΄Π²Π΅ строки. Одна выполняСт Ρ€ΠΎΠ»ΡŒ источника Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π΄Ρ€ΡƒΠ³Π°Ρ — ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ адрСс источника ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Сля с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Lea. ΠŸΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ DI Π½Π° 15 Π±Π°ΠΉΡ‚ΠΎΠ² большС Π½Π΅ ΡΠΌΠ΅Ρ‰Π°Π΅ΠΌ.

ΠžΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ Ρ†ΠΈΠΊΠ» ΠΈ ΠΏΠΎΡΡ€Π΅Π΄ΡΡ‚Π²ΠΎΠΌ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ рСгистра AL заносим наши символы Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ DI. ΠŸΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС Π±Π°ΠΉΡ‚Ρ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π΅ DI Π½Π° ΠΎΠ΄ΠΈΠ½. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ счётчик CX ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡΡ Π΄ΠΎ 0, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π›Π˜Π‘Π’Π˜ΠΠ“ Π—ΠΠ”ΠΠ§Π˜ «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° копирования строки Π½Π° ΠΏΡ€ΡΠΌΡƒΡŽ»

Π—Π°Π΄Π°Ρ‡Π° 1

Data Segment; ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ сСгмСнт Π΄Π°Π½Π½Ρ‹Ρ…

text1 DB 'abcdefghijklmno', 13, 10, '$'

text2 DB 25 DUP (?); строка ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ

Data ENDS; Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ сСгмСнт Π΄Π°Π½Π½Ρ‹Ρ…

;———————————————————————-

STK Segment; ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ сСгмСнт Π΄Π°Π½Π½Ρ‹Ρ…

DB 100h DUP (?); Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ стСк 100 ячССк памяти

STK ENDS; Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ сСгмСнт стСка

;—————————————————————————-

ASSUME SS: STK, CS: CODE, DS: DATA ;Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ сСгмСнтныС рСгистры

;——————————————————————————-

CODE Segment; ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ сСгмСнт ΠΊΠΎΠ΄Π°

START: mov AX, DATA; Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° сСгмСнтного рСгистра DS

mov DS, AX; рСгистра DS

lea SI, TEXT1; Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ адрСс строки-источника занСсти Π² SI

lea DI, TEXT2; Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ адрСс строки получатСля занСсти Π² DI

mov CX, 15; ΠΏΠ΅Ρ€Π΅ΡΠ»Π°Ρ‚ΡŒ 15 Π±Π°ΠΉΡ‚ΠΎΠ²

Metka1: mov AL, [SI]; Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ пСрСсылку

mov [DI], AL; Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ рСгистр AL

INC SI; ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ адрСс источника Π½Π° 1

INC DI; ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ адрСс ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ° Π½Π° 1

LOOP Metka1 ;(CX)-1 ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» ΠΏΠΎΠΊΠ° CX Π½Π΅ Ρ€Π°Π²Π½ΠΎ 0

mov AL, 0; Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‡Π΅Ρ€Π΅Π·

mov AH, 4Ch; ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°

int 21h; Π² DOS

CODE ENDS; Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ сСгмСнт ΠΊΠΎΠ΄Π°

END START; Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ

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