S.Reza
پنج شنبه 18 خرداد 1391, 11:51 صبح
سلام دوستان
ایا این امکان وجود دارد که در نرم افزار emu 8086 ساختمان داده یا همان struct تعریف کنیم
اگر این امکان وجود داره به چه صورت تعریف و به چه صورتی میتوان از ان استفاده کرد اگر یک مثال خیلی ساده هم باشه عالی میشه
اگر این امکان در نرم افزار وجود نداشته باشد چه جایگزینی برای ان پیشنهاد میکنید
ممنون
S.Reza
جمعه 19 خرداد 1391, 12:41 عصر
نمیدونم چه حکمتی هست هر سوالی در این سایت میپرسم بی جواب میماند
احتمالا نحوه سوال کردن من مشکل داره :متفکر:
MostafaMohammadi
جمعه 19 خرداد 1391, 17:34 عصر
سلام دوستان
ایا این امکان وجود دارد که در نرم افزار emu 8086 ساختمان داده یا همان struct تعریف کنیم
اگر این امکان وجود داره به چه صورت تعریف و به چه صورتی میتوان از ان استفاده کرد اگر یک مثال خیلی ساده هم باشه عالی میشه
خیر
اگر این امکان در نرم افزار وجود نداشته باشد چه جایگزینی برای ان پیشنهاد میکنید
ممنون
چه جور ساختمان داده ای میخوای؟
اگه آرایه می خوای، این دستور یه آرایه 100 خونه ای می سازه که هر خونه اش یک بایت است.
AR DB 100 DUP(0)
اگه SI رو اندیس آرایه در نظر بگیری، با
AR[SI]
می تونی به تک تک خونه های اون آرایه دسترسی پیدا کنی.
S.Reza
جمعه 19 خرداد 1391, 22:18 عصر
شما فرض میخواهم نمرات درس های ریاضی و فیزیک و ... 10 دانشجو رو وارد کنیم و رو انها عملیات هایی همچون جستجو ، ویرایش انجام دهیم
حال به نظر من اصولی تر اینکه یک struct تعریف کنیم من طریقه تعریف و فراخوانی struct در اسمبلی رو احتیاج داشتم
اینجور که شما میگید در emu 8086 ساختمان داده ای به نام struct نداریم
با چندین ارایه میشه struct رو شبیه سازی کرد اما کار پیچیده میشه
MostafaMohammadi
جمعه 19 خرداد 1391, 23:30 عصر
شما فرض میخواهم نمرات درس های ریاضی و فیزیک و ... 10 دانشجو رو وارد کنیم و رو انها عملیات هایی همچون جستجو ، ویرایش انجام دهیم
حال به نظر من اصولی تر اینکه یک struct تعریف کنیم من طریقه تعریف و فراخوانی struct در اسمبلی رو احتیاج داشتم
اینجور که شما میگید در emu 8086 ساختمان داده ای به نام struct نداریم
با چندین ارایه میشه struct رو شبیه سازی کرد اما کار پیچیده میشه
هم می تونی چند تا آرایه رو به صورت موازی در نظر بگیری، مثلا یه آرایه برای اسم دانشجوها و یه آرایه برای نمرات درس ریاضی و یه آرایه ...
هم می تونی یک آرایه رو برای کل اطلاعات ات در نظر بگیری، مثلا 16 خونه اول اسم دانشجو و خانه 17ام نمره ریاضی و خانه 18 ام نمره فیزیک و ... فقط باید فضایی که یک نمونه اشغال می کنه رو اندازه بگیری. مثلا یه اطلاعات هر دانشجو 30 بایت فضا میگیره، پس اطلاعات دانشجو iام از خونه SI+ 30* i شروع میشه.
xman_1365_x
شنبه 20 خرداد 1391, 02:35 صبح
ایا این امکان وجود دارد که در نرم افزار emu 8086 ساختمان داده یا همان struct تعریف کنیم
اگر این امکان وجود داره به چه صورت تعریف و به چه صورتی میتوان از ان استفاده کرد اگر یک مثال خیلی ساده هم باشه عالی میشه
اگر این امکان در نرم افزار وجود نداشته باشد چه جایگزینی برای ان پیشنهاد میکنید
قبلا در ارتباط با ساختمان پست داده بودم که جستجو نکردین با این حال اینبار شبیه سازی میکنم
struct در masm وجود دارد اما در emu8086 خیر نمیتونید تعریف کنید(فعلا برای این شبیه ساز تعریف نشده) اما به نوعی میشه شبیه سازیش کرد به کدی که میزارم دقت کنید
میتونید برای هر عملی که نوشتم یعنی آماده سازی ساختمان ، چاپ ساختمان و انتقال از بافر ساختمان به ساختمان مورد نظرتون یک پروسیجر بنویسید که کارتون ساده شه تکرار نکنید.
ضمنا میتونید این برنامه رو بهینه تر کنید! که من برای آشنایی دوستان این مورد رو گفتم
data segment
struct01 label byte
name01 db 10 dup(?)
family01 db 10 dup(?)
age01 db 3 dup(?)
x db 23 dup(?)
y db 23 dup(?)
ends
stack segment stack
dw 128 dup(0)
ends
code segment
start:
mov ax,data
mov ds,ax
mov es,ax
;--------------------------------------------------------------
;initialize 1
xor di,di ; di=0, pointer to name
mov byte ptr struct01[di],'X'
inc di
mov byte ptr struct01[di],'m'
inc di
mov byte ptr struct01[di],'a'
inc di
mov byte ptr struct01[di],'n'
inc di
mov byte ptr struct01[di],'$'
mov di,struct01+10 ;pointer to family
mov byte ptr struct01[di],'N'
inc di
mov byte ptr struct01[di],'o'
inc di
mov byte ptr struct01[di],'t'
inc di
mov byte ptr struct01[di],'h'
inc di
mov byte ptr struct01[di],'i'
inc di
mov byte ptr struct01[di],'n'
inc di
mov byte ptr struct01[di],'g'
inc di
mov byte ptr struct01[di],'$'
mov di,struct01+20 ;pointer to age
mov byte ptr struct01[di],'2'
inc di
mov byte ptr struct01[di],'6'
inc di
mov byte ptr struct01[di],'$'
;store struct x
mov cx,23
xor di,di
xor si,si
copystruct:
mov al,byte ptr struct01[di]
mov x[si],al
inc di
inc si
loop copystruct
;--------------------------------------------------------------
;initialize 2
xor di,di ; di=0, pointer to name
mov byte ptr struct01[di],'T'
inc di
mov byte ptr struct01[di],'e'
inc di
mov byte ptr struct01[di],'s'
inc di
mov byte ptr struct01[di],'t'
inc di
mov byte ptr struct01[di],'$'
mov di,struct01+10 ;pointer to family
mov byte ptr struct01[di],'N'
inc di
mov byte ptr struct01[di],'o'
inc di
mov byte ptr struct01[di],'t'
inc di
mov byte ptr struct01[di],'h'
inc di
mov byte ptr struct01[di],'i'
inc di
mov byte ptr struct01[di],'n'
inc di
mov byte ptr struct01[di],'g'
inc di
mov byte ptr struct01[di],'$'
mov di,struct01+20 ;pointer to age
mov byte ptr struct01[di],'1'
inc di
mov byte ptr struct01[di],'3'
inc di
mov byte ptr struct01[di],'$'
;store struct y
mov cx,23
xor di,di
xor si,si
copystruct2:
mov al,byte ptr struct01[di]
mov y[si],al
inc di
inc si
loop copystruct2
;print struct x
xor di,di
mov ah,9
lea dx,x[di]
int 21h
mov di,10
mov ah,9
lea dx,x[di]
int 21h
mov di,20
mov ah,9
lea dx,x[di]
int 21h
;print enter
mov ah,2
mov dl,13
int 21h
mov dl,10
int 21h
;print struct y
xor di,di
mov ah,9
lea dx,y[di]
int 21h
mov di,10
mov ah,9
lea dx,y[di]
int 21h
mov di,20
mov ah,9
lea dx,y[di]
int 21h
mov ax, 4c00h
int 21h
ends
end start
struct in masm:
http://www.ousob.com/ng/asm/ng41c99.php
http://support.microsoft.com/KB/30887
http://webster.cs.ucr.edu/Page_TechDocs/MASMDoc/ProgrammersGuide/Chap_05.htm
http://webster.cs.ucr.edu/AoA/DOS/ch05/CH05-3.html
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.