واضح آرشیو وب فارسی:سایت ریسک: سوال در مورد ماکرو اسمبلی scooter2005 15 خرداد 1388, 11:53دو تا سوال داشتم : یکی اینکه ماکرویی بنویسید که 3 پارامتر a , b , min را گرفته کوچکترین از بین a , b را در min بریزد و همه هم یک بایتی min macro a,b,min mov al,a cmp a,b jbe L1 jmp L2 L1: شرط مقایسه mov min,al L2: دوم اینکه ماکرویی بنویسید که 4 پارامتر a,b,c,max را گرفته بزرگترین آنها را در max بریزد همه دو بایتی max macro a,b,c,max mov ax,a mov bx,b cmp bx,ax cmp c,bx jae L1: jmp L2 mov max,ax ممنون اگر اشتباهاتش رو بگیرید و درست کنید scooter2005 20 خرداد 1388, 14:32کسی نیست کمک کنه ؟ the_king 20 خرداد 1388, 17:13دو تا سوال داشتم : یکی اینکه ماکرویی بنویسید که 3 پارامتر a , b , min را گرفته کوچکترین از بین a , b را در min بریزد و همه هم یک بایتی min macro a,b,min mov al,a cmp a,b jbe L1 jmp L2 L1: شرط مقایسه mov min,al L2: 1) نامی که برای ماکرو انتخاب می کنید نبایستی برای نام مورد دیگری مثلا نام پارامتر بکار برود : min macro a,b,min مثلا نام ماکرو را minimum قرار دهید : minimum macro a,b,min 2) مقایسه یک آدرس مستقیم حافظه با آدرس حافظه دیگر نمی تواند در اسمبلی 8086 بصورت یک دستور CMP انجام شود، مثلا نمی توانید مقدار a و b را در یک دستور CMP مقایسه کنید، تنها یکی از دو پارامتر می توانند حافظه ای مانند a باشند، نه هر دوی آنها : cmp a,b بایستی یکی از دو مقدار a و b را به یک Register مانند al انتقال داده و سپس مقدار al را با مقدار دیگر مقایسه کنید : cmp al, b 3) دستور پرش به L2 با منطق کار مطابقت ندارد : jmp L2 کد صحیح ماکرو چنین خواهد بود : minimum MACRO a, b, min mov AL, a CMP AL, b JBE l1 MOV AL, b l1: MOV min, AL ENDM the_king 20 خرداد 1388, 17:28ماکرویی بنویسید که 4 پارامتر a,b,c,max را گرفته بزرگترین آنها را در max بریزد همه دو بایتی max macro a,b,c,max mov ax,a mov bx,b cmp bx,ax cmp c,bx jae L1: jmp L2 mov max,ax ممنون اگر اشتباهاتش رو بگیرید و درست کنید 1) نامی که برای ماکرو انتخاب می کنید نبایستی برای نام مورد دیگری مثلا نام پارامتر بکار برود : max macro a,b,c,max مثلا نام ماکرو را maximum قرار دهید : maximum macro a,b,c,max 2) مقایسه پی در پی توسط CMP تنها نتیجه آخرین مقایسه را حفظ خواهد کرد و مقایسه های قبلی فراموش خواهند شد و بلا استفاده هستند : cmp bx,ax cmp c,bx 3) نام c به عنوان یک عبارت در زبان اسمبلی تعریف شده که در مشخص کردن نوع ارسال پارامتر های توابع بکار می رود، به همین دلیل نبایستی از آن برای نامگذاری پارامتر های ماکرو یا متغیر ها استفاده کرد. به همین جهت در کاربرد عملی بجای متغیر های a و b و c از نام هایی نظیر aa و bb و cc استفاده کنید. کد صحیح ماکرو چنین خواهد بود : maximum MACRO aa, bb, cc, max mov AX, aa CMP AX, bb JAE l1 MOV AX, bb l1: CMP AX, cc JAE l2 MOV AX, cc l2: MOV max, AX ENDM
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 1125]