چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
نقل قول: چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
بادستور mov al,ax میشه این کار رو کرد.
نقل قول: چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
چون ثبات al و ax هم اندازه نیستن برای منتقل کردن محتوایشون باید از دستور movzx یا movsx استفاده بشه
movzx ax, al
movsx ax, al
نقل قول: چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
نقل قول:
نوشته شده توسط
fazlnet
بادستور mov al,ax میشه این کار رو کرد.
خوب عزیزم این کار خطا است.
نقل قول: چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
نقل قول:
نوشته شده توسط
hoax3r
چون ثبات al و ax هم اندازه نیستن برای منتقل کردن محتوایشون باید از دستور movzx یا movsx استفاده بشه
movzx ax, al
movsx ax, al
من اینو شنیدم اما من از برنامه ای به نام emulator 8086 استفاده می کنم این دستورات رو نمی شناسه.
نقل قول: چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
خوب اگر از این برنامه می خواین استفاده کنین میتونین این مثال رو ببینیند
اگه مقدار تو al هست و حالا می خواین از ax استفاده کنین، کافیه ثبات ax رو با مقدار 0FFh عمل and رو انجام
بدین
and ax, 0FFh
اگر می خواین ثبات al رو در ثبات دیگه مثلا bx بریزین، اینجور میشه
mov bl, al
and bx, 0FFh
مقدار ثبات al رو در ثبات همسایز خودش bl میریزیم بعد مثل مثال قبل عمل میکنیم
نقل قول: چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
نقل قول:
نوشته شده توسط
hoax3r
خوب اگر از این برنامه می خواین استفاده کنین میتونین این مثال رو ببینیند
اگه مقدار تو al هست و حالا می خواین از ax استفاده کنین، کافیه ثبات ax رو با مقدار 0FFh عمل and رو انجام
بدین
and ax, 0FFh
اگر می خواین ثبات al رو در ثبات دیگه مثلا bx بریزین، اینجور میشه
mov bl, al
and bx, 0FFh
مقدار ثبات al رو در ثبات همسایز خودش bl میریزیم بعد مثل مثال قبل عمل میکنیم
مرسی از راهنماییتون اما جواب غلطه
(177) operands do not match: 16 bit register and 8 bit effective address (EA)
این زمانیه که می خوام al یا متغیری که جنسش از db هست رو توی ax بریزم
این دستوری رو هم که شما گفتید اجرا کردم اما غلطه جوابش.
من می خوام دستور تقسیم رو انجام بدم زمانی که عدد 8 رو به صورت مستقیم می ریزم توی ax بهم مقسوم علیه 0 می ده چون تقسیم بر 10 اما زمانی که 0ffh رو با ax اند می کنم c رو نشون می ده.
نقل قول: چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
فکر کنم تا حدودی مشکل رو حل کردم ، چون توی ah صفر ریختم توی al هم که همون مقدار بود و بعد با 1 and کردم . هر بیتی که صفر باشه صفر می شه دیگه. مرسی از کمک همه، اما بازم یه مشکلی داره اما تا حدودی رفع شده.
نقل قول: چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
نقل قول:
نوشته شده توسط
hoax3r
خوب اگر از این برنامه می خواین استفاده کنین میتونین این مثال رو ببینیند
اگه مقدار تو al هست و حالا می خواین از ax استفاده کنین، کافیه ثبات ax رو با مقدار 0FFh عمل and رو انجام
بدین
and ax, 0FFh
اگر می خواین ثبات al رو در ثبات دیگه مثلا bx بریزین، اینجور میشه
mov bl, al
and bx, 0FFh
مقدار ثبات al رو در ثبات همسایز خودش bl میریزیم بعد مثل مثال قبل عمل میکنیم
متشکر حالا متوجه منظورتون شدم ، شرط اولیش اینه که ah رو قبل and صفر بدیم و با دستور mov ax, and ax,0000000011111111b
و یا همون 0ffh اند کنیم.
متشکر، مشکل کاملاً رفع شد.
نقل قول: چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
البته به نظرم زمانی لازم بود ah رو صفر کنیم که بخوایم با 1 اند رو انجام بدیم. با دستور بالا احتیاج به مقدار دهی ah هم نیست چون طرف ah با صفر and میشه که نتیجه ش هم صفره.
نقل قول: چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
البته به نظر درست هگز 00ffh باشه.
نقل قول: چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
هر دوی 0FFh و 00FFh یه مقدارن هر چه قدر صفر قبل FFh باشه بازم یه مقدار هست ولی چون کامپایلر با
FFh مشکل داره شاید بخاطر این که با عدد شروع نشده من مجبور بودم یه صفر قبلش بزارم
برای اینکه فقط ثبات al رو تو ax قرار بگیره باید ثبات ah رو صفر کنیم و این عمل رو همین دستور انجام میده
and ax, 0FFh
احتیاجی نیست دیگه قبلش هم ah رو صفر کنیم
شاد باشید
نقل قول: چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
چرا از عملگر ptr استفاده نمیکنید؟؟؟
نقل قول: چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
سلام .
اولا: اگر al داراي يه محتوايي باشه خود به خود اون محتوا در ax قرار مي گيرد . فقط بايستي ah برابر 0 باشه تا جواب غلط نشه.
در ثاني: اگر عدد در حافظه باشه اونو به al انتقال بديد
mov al,[store] و ah=0
نقل قول: چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
نقل قول: چطوری می تونم محتوای یک حافظه 8 بیتی یا al رو توی 16 بیتی ax بریزم؟
mov al,byte ptr [xxxx]
cbw