PDA

View Full Version : مبتدی: منطق این تکه برنامه؟!



Hussain<ELite>
پنج شنبه 27 خرداد 1389, 14:42 عصر
ORG 100h
MOV AX, 0B800h
MOV DS, AX
MOV CL, 'A'
MOV CH, 1101_1111b
MOV BX, 15Eh
MOV [BX], CX
RET

این تکه کد رو اگه بهم توضیح بدید که چه کاری انجام میده ممنون میشم!
این تکه کد یک کاراکتر 'a' چاپ می کند اما نمیدانم منطق این برنامه چیست؟ مثلا عدد 0b800h رو چرا ریخته توی ds ؟ و چرا این عدد؟ چرا عدد دیگه نه؟ و همین طور بقیه خط ها؟

tdkhakpur
جمعه 28 خرداد 1389, 11:49 صبح
این تکه کد یک کاراکتر 'a' چاپ می کند اما نمیدانم منطق این برنامه چیست؟

استفاده مستقیم از حافظه تصویر


مثلا عدد 0b800h رو چرا ریخته توی ds ؟

خب بای این کار خواسته است شروع سگمنت را - محل شروع حافظه تصویر قرار دهد تا بتواند از مکانهای این حافظه بصورت ایندکس استفاده کنید کد زیر مانند کد بالا عمل میکند.


ORG 100h
MOV BX, 0B800h
MOV CL, 'A'
MOV CH, 1101_1111b
ADD BX, 15Eh
MOV [BX], CX
RET


و چرا این عدد؟ چرا عدد دیگه نه؟
برای اینکه ادرس تصویر از این نقطه شروع میشود البته تصویر صفحه شماره 0

و همین طور بقیه خط ها؟
وقتی محل شروع حافظه شما توسط منبع ds که شما توسط mov در ان قرار دادید مشخص شد با قرار دادن حرف a در clو قرار دادن مشخصات کاراکتر از جمله رنگ و پس زمینه و حالت چشمک زن در ch و قرار داده کلم cx که محتوای کاراکتر و خصوصیات هست در محل حافظه 15eh میتوانید باعث نمایش کاراکتر مورد نظر در محل شوید.