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

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

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

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

پرسش 1

الف) یک روش ساده برای رمز گذاری یک متن، xor نمودن هر حرف متن با یک مقدار از پیش تعین شده است. رشته this is a test  را در سگمنت داده با نام txt ذخیره و با استفاده از xor و مقدار 216 حرف به حرف آنرا رمزگذاری و با movsb در سگمنت داده با نام mes ذخیره و سپس با استفاده از تابع 09 int 21h رشته رمز گذاری شده را نمایش دهید. اعمال تکراری در داخل حلقه با بکارگیری فرمان loop انجام شود.  (2)

ب) با توجه به سگمنت داده در قسمت الف) فرمانهای لازم برای برداشتن رمز از متن ذخیره شده با نام mes و نمایش رشته اولیه را بنویسید .(1)

 

پرسش 2

برنامه ای بنویسید در دو فایل جدا برای جمع دو عدد دو بایتی. فایل main.asm حاوی سگمنت استک (256 بایت)، سگمنت داده برای ذخیره flda=250 و fldb=125 و سگمنت کد برای main proc far. فایل procs.asm حاوی proc add2 far برای جمع دو عدد تعریف شده در main.asm.

الف) flda و fldb از طریق استک با روش آدرس دهی base به برنامه add2 انتقال داده شوند. (1)

ب) flda و fldb در add2 با روش آدرس دهی direct آدرس دهی شوند.(1)

ج) flda و fldb از طریق سگمنت داده با روش آدرس دهی base به برنامه add2 انتقال داده شوند. (1)

د) موقعیت و مراحل تغییر SP و BP و محتویات استک را در الف) نمایش دهید.(1)

 

پرسش 3

برای خواندن ساعت سیستم از تابع AH=2C  وقفه 21H استفاده میشود. پس از اجرا CH ساعت (23..0) و CL دقیقه (59..0) را مشخص میکنند. برای نمونه اگر ساعت 10:35 صبح باشد پس از اجرای وقفه CH=10 و CL=35 میشود.  برنامه ای برای نمایش ساعت بصورت hh:mm با استفاده از تابع 09  وقفه 21h بر روی صفحه مانیتور،  بنویسید. تبدیل در PROC NEAR به نام TABDIL انجام شود. در صورت امکان از فرمان های بیت پرداز استفاده کنید. (3)

 

پرسش 4

الف) برنامه ای بنویسید برای خواندن یک سطر متن حداکثر 80 کاراکتری از صفحه کلید با تابع 0ah int 21h,  و با استفاده از فرمان های repne  و scasb  کاراکتر اول هر کلمه را یافته و در صورت کوچک بودن حرف، آنرا به معادل بزرگ تبدیل کند. (1.5)

ب) فرمانهای لازم برای تقسیم AX بر 16 با بکارگیری shr و ذخیره باقیمانده در DX بنویسید.(1)

ج) دو دلیل link نمودن فایل .obj برای بدست آوردن فایل .exe را نام برده و توضیح دهید.(0.5)

 

پرسش 5

با مثالهای مناسب عملکرد فلگهایcf,zf,sf,of  را توضیح دهید.(1)

 

پرسش 6

الف) معادل کسر دهدهی عدد اعشاری BFD99800 با توجه به قالب زیر را بنویسید. (1.5)

0

22

23

30

31

M

e'

s

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

ب) 8000H چه عددی در مکمل 2 و مقدار علامت است ؟ (0.5)

 

 

پرسش 7

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

 

datasg

Segment

 

string

db ‘ABCDEF’

 

aa

dw   ?

 

bb

dw   250,10,-1

 

x

db 5 dup(16)

 

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,aa+1

push ax=50

 

push ax

mov dx=8B16

 

mov dx,ds:0006

mov ax=B8

 

mov ax,0

inc ax= 40

l1:

inc ax

cmp al=3C

 

cmp al,5

jne=75

 

jne l2

mov cl=8A0E

 

mov cl,string+1

loop=E2

 

loop l1

ret=CB

l2:

Ret

 

main

Endp

 

codesg

Ends

 

 

end main