دانشگاه آزاد اسلامی واحد تهران مرکز – دانشکده فنی – گروه کامپیوتر

 

درس زبان ماشین و برنامه نویسی اسمبلی  کد 3672 دوره کارشناسی رشته کامپیوتر

نیمسال دوم سال تحصیلی 84-83 تاریخ امتحان 7/4/84 مدت امتحان 2 ساعت

طرح پرسش نامه و تکثیر: رفیع علامه

پرسش 1

یک عدد علامت دار BCD (در هر 4 بیت یک رقم 9-0) در AX ذخیره شده است. برنامه ای برای نمایش محتوای AX بر روی مانیتور بنویسید. عدد تبدیل شده از BCD به ASCII در مکانی به نام adabcd ذخیره شود. برای نمایش رشته تبدیل شده از تابع 09 استفاده کنید. تبدیل در proc near به نام tabdil انجام پذیرد. از فرمان های بیت پرداز استفاده کنید. (4)

 

پرسش 2

الف)  برنامه ای برای جمع دو عدد 2 بایتی ذخیره شده در data segment با نام a1 و a2  که قبل از فراخوانی proc add2 far  (برنامه جمع دو عدد) توسط برنامه فراخواننده در استک قرار داده شده اند را بنویسید. با استفاده از ثبات BP اعداد بهproc add2  انتقال داده شوند. (2)

 

ب) proc add2  را در فایلی جدا از برنامه فراخواننده  بنویسید. (0.5)

 

ج) اگر برنامه فراخواننده در فایل main.asm باشد و برنامه add2 در فایل procs.asm،  مراحل بدست آوردن فایل اجرایی main.exe  را بنویسید. (0.5)

 

د) نحوه قرار گرفتن اطلاعات در data segment و stack segment را کشیده، موقعیت SP و BP و آدرس های offset برای هر واحد اطلاعاتی را مشخص کنید.(1)

 

پرسش 3

الف)برنامه ای برای دریافت یک سطر متن حداکثر 80 کاراکتری از صفحه کلید و ذخیره آن در مکان text با تابع 0A بنویسید. در این برنامه با استفاده از فرمان های repne وscasb تعداد کاراکترهای'a'  در رشته دریافتی را شمارش ( با در نظر گرفتن کاراکتر اول و آخر ) و با تابع 09 پیغام “number of a’s  are = # #” تعداد شمارش شده را نمایش دهید. تبدیل در proc far مناسبی به نام itoa خاص دورقم بدون علامت با استفاده از فرمان های بیت پرداز انجام شود. (4)

 

پرسش 4

الف) مراحل اجرایی فرمان push ax   و pop ax   را فهرست وار بنویسید. (1)

 

ج) چرا برنامه های از نوع اسمبلی معمولا سریع تر از برنامه های معاد لشان نوشته شده به زبان سطح بالا، اجرا میشوند؟ (1)

 

پرسش 5

الف) نمایش 0.35 - با توجه به قالب زیر را بنویسید. (1)

0

22

23

30

31

M

e'

s

علامت عدد= s تعداد بیتهای اختصاص داده شده به b=e'  , e'=e+2b-1 مانتیس=m

ب) نمایش BCD عدد -1 چیست؟(0.5)

 

پرسش 6

test ah,20h  برای ah=61h چه تاثیری برzf  دارد.

 neg ah برای ah=80h چه تاثیری برof  و sf دارد.

Sub ah,40h برای ah=30h چه تاثیری برcf  دارد.(1)

 

پرسش 7

نمایش داخلی و شمارنده مکان برای هر سطر برنامه را مشخص کنید. (3)

 

datasg

Segment

 

string

db  ‘ABCDEF’

 

a2

dw   11111111b,00ffh

 

b2

dw   250,10,-1

 

x

dw 6 dup(‘AA’)

 

datasg

Ends

 

 

 

 

codesg

Segment

 

 

Assume cs:codesg,ds:datasg

 

main

proc far

mov ax,seg datasg =B8 + datasg رزرو 2 بایت برای

 

mov ax,seg datasg

mov ds,ax=8E D8

 

mov ds,ax

mov ax=A1

 

mov ax,b2+2

push ax=  50

 

push ax

mov ax=A1

l1:

mov ax,x

inc ax= 40

 

inc ax

cmp al=3C

 

cmp al,5

jne=75

 

jne l2

mov cx=8B0E

 

mov cx,a2+2

loop=E2

mov ax=B8

 

loop l1

mov ax,0

ret=CB

l2:

ret

 

main

Endp

 

codesg

Ends

 

 

end main

 

پرسش 8

در اسمبلی از چه روش آدرس دهی برای داده های از نوع structure استفاده میشود، توضیح دهید. (0.5)

 

همواره سربلند باشید – رفیع علامه