PDA

View Full Version : مبتدی: کار با آرایه ها



waterlily.n
سه شنبه 10 خرداد 1390, 19:46 عصر
سلام
من دوتا آرایه دارم که هر عنصرشون 1بایته که eax به آرایه اول اشاره میکنه و اسم آرایه دوم instruction است.میخواستم یه عنصر از اولی رو توی یه عنصر از instruction کپی کنم ولی نمیدونم چه جوری؟؟ خودم این جوری نوشتم ولی وقتی instruction رو چاپ میکنم 4خونه ی اول eax رو چاپ میکنه ! ممنون میشم راهنمایی کنید.

mov ecx,[eax]
mov [instruction],ecx

xman_1365_x
سه شنبه 10 خرداد 1390, 20:33 عصر
كد زير مقدار اولين خانه آرايه اول رو درعنصر اول ارايه دوم كپي ميكنه
براي دسترسي و كپي انديس آرايه هاي يك بعدي و دوبعدي هم قبلا گفتم جستحو كنيد پيدا ميكنيد.


mov cl,[eax]
mov byte ptr [instruction],cl

موفق باشي

waterlily.n
سه شنبه 10 خرداد 1390, 22:30 عصر
این کدی که گفتید ارور داره من یادم رفت بگم با nasm کار میکنم.

armin0282
چهارشنبه 11 خرداد 1390, 01:04 صبح
این برنامه کامل کپی کردن یه آرایه داخل یه آرایه دیگه هست. ببین به کارت می خوره!در ضمن بهتره بجای eax از SI , DI استفاده کنی به عنوان اشاره گر!!


dseg segment
name1 db "armin$"
name2 db 5 dup (?),'$'
dseg ends

sseg segment
db 50 dup(?)
sseg ends

cseg segment
begin proc far
assume cs:cseg,ds:dseg,ss:sseg

mov ax,dseg
mov ds,ax

mov cx,6
lea si,name1
lea di,name2

next:mov al,[si]
mov [di],al ;Copy name1 to name2
inc si
inc di
loop next

;Print name2
lea dx,name2
mov ah,9
int 21h

;Wait for press key
mov ah,0
int 16h

begin endp
cseg ends
end begin

موفق باشید.

xman_1365_x
شنبه 28 خرداد 1390, 09:54 صبح
این کدی که گفتید ارور داره من یادم رفت بگم با nasm کار میکنم.

كد زير براي nasm


org 0x100

;lea ebx,[instruction]
;lea eax,[x]
;mov cl,[eax]
;mov [ebx],cl

;or under method
; ||
; \/

lea eax,[x]
mov cl,[eax]
mov [instruction],cl

;display
lea dx, [instruction]
mov ah, 9
int 21h

;wait
mov ah, 1
int 21h
;return to os
mov ax, 4c00h
int 21h
;var address
x db "1234"
instruction db "5678"
pkey db 13,10,"press any key...$"

موفق باشي

AMIBCT
شنبه 28 خرداد 1390, 10:05 صبح
وقتي شما از ecx كه يه ثبات ۳۲ بيتي يا ۴ بايتي هست استفاده مي‌كنيد
۴ بايت از مبدا خونده مي‌شه

از يه ثبات ۱بايتي استفاده كنيد
مثلا cl يا ch