The task is as follows:
Insert another array into the specified array of numbers, starting from the selected position.
When checking registers, garbage or incomprehensible values ββare recorded, look in your debugger pliz
.486 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\masm32.inc include \masm32\include\kernel32.inc include \masm32\macros\macros.asm includelib \masm32\lib\masm32.lib includelib \masm32\lib\kernel32.lib .data mas1 dd 1,2,3,4,5,6 ; ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ 1 ΠΌΠ°ΡΡΠΈΠ²Π° mas2 dd 7,8; ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ 2 ΠΌΠ°ΡΡΠΈΠ²Π° .code start: mov EDI, 0 ; ΠΎΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² mov ECX, 0 mov ESI, 0 mov EBP,0 ; 0-ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° mas2 mov EDI,1 ; Π²ΡΠ±ΠΎΡΠΊΠ° Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠ°Π»ΠΎ Π·Π°ΠΌΠ΅Π½Ρ mov ECX, 2; ΡΡΠ΅ΡΡΠΈΠΊ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΈ ΡΠΈΠΊΠ»Π° ΠΎΡΠ½ΠΈΠΌΠ°ΡΡΡΡ 1 metka: mov ESI,mas2[EBP] ; Π·Π°ΠΏΠΈΡΡΠ²Π°Ρ 0 Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΡΠ΅Π³ΠΈΡΡΡ ESI mov mas1[EDI], ESI ; Π·Π°ΠΏΠΈΡΡΠ²Π°Ρ ΠΈΠ· ΡΠ΅Π³ΠΈΡΡΡΠ° ESI Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° mas1 Π½Π° 1 ΠΏΠΎΠ·ΠΈΡΠΈΡ inc EBP ; ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° mas2 inc EDI; ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° mas1 loop metka mov ECX, mas1[0] ; ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ²Π°, Π·Π°ΠΏΠΈΡΡΠ²Π°Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΡΡΡ, ΡΡΠΎΠ± Π³Π»ΡΠ½ΡΡΡ. mov EBX, mas1[1]; ΠΈ ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅.. mov EAX, mas1[2] mov EDX, mas1[3] ;mov ECX, mas1[4] ;mov ECX, mas1[5] int 20h end start
mov eax,[edi]and then add to edi by 4. Although of course modern masm can do something for you ... - Mike[mas1 + 2](the address of the beginning of the array + 2 bytes). Those. There is no pointer arithmetic there. - insolor