PDA

View Full Version : سوال: برنامه اي كه 2 عدد چهار رقمي به صورت BCD در يافت كرده و آنها را باهم جمع كند ؟



alquimista
پنج شنبه 01 اردیبهشت 1390, 13:23 عصر
لطف مي كنيد به اين سوال جواب بديد.

unknown.unforgiven
جمعه 23 اردیبهشت 1390, 09:43 صبح
مقدار های BCD که داری رو تو دو تا رجیستر 8 بیتی ذخیره کن، بعد این دو تا رجیستر رو با هم جمع کن، بعد چک کن ببین مجموع دو تا عدد BCD بیشتر از 9 شده یا نه؟ اگه بیشتر نشده بود که هیچ، ولی اگه بیشتر شده بود مجموع رو با 6(0110) جمع کن. حالا جوابت به صورت BCD هست. تنها کاری که باید بکنی اینه که جواب 8 بیتی رو به دو تا مقدار 4 بیتی تبدیل کنی که با and و شیفت دادن راحت میتونی این کار رو بکنی

فرض کردم مقدارهای BCD رو تو رجیسترهای AL و AH ذخیره داری و نمیخوای که مقدارشون بعد از عمل جمع از AL و AH پاک بشه. بعد از جمع کردن نتیجه توی رجیسترهای BL و BH قرار میگیره

mov al,1001b
mov ah,0100b
mov cl,al
mov ch,ah
add ch,cl
cmp ch,10
jb lbl
add ch,0110b
lbl:
mov bl,ch
and bl,1111b
shr ch,4
mov bh,ch