برگزیده های پرشین تولز

یک سوال ابتدایی اسمبلی

mani amoozadeh

کاربر تازه وارد
تاریخ عضویت
9 دسامبر 2007
نوشته‌ها
2
لایک‌ها
0
با عرض سلام. یک سوال ساده اسمبلی داشتم اگر کسی می تواند کمک نماید.

برنامه debug.exe را باز کردم و برنامه ساده زیر را نوشته و اجرا کردم. بر طبق این برنامه عدد 100 در ثبات ax و متمم 2 عدد -100 یعنی FF00 در داخل ثبات bx قرار گرفته و حاصل جمع در ax قرار می گیرد. طبیعتا حاصل جمع صفر بوده و یک رقم نقلی داریم ( پرچم نقلی 1 می شود).

Mov ax,100
Mov bx,-100
Add ax,bx

حال برنامه دوم را به صورت زیر در debug نوشته و اجرا کردم. برنامه زیر همان کار برنامه بالا را انجام می دهد با این تفاوت که دو عدد 100 را از 100 کم کردم. واضح است که نتیجه باز صفر میشود. ولی با کمال تعجب دیدم که پرچم نقلی 1 نشده است و صفر است !!! مگر تمامی پردازنده ها عمل تفریق را با استفاده از متمم 2 انجام نمی دهند. این بدان معنا است که عبارت 100-100 به صورت FF00+0100 انجام می شود. در این حالت رقم نقلی داریم ( عین بالا) ولی چرا پرچم نقلی 1 نشده است ؟؟؟؟

Mov ax,100
Mov bx,100
Sub ax,bx

کسی می تواند کمکم کند ؟
پیشاپیش متشکرم.
 

mani amoozadeh

کاربر تازه وارد
تاریخ عضویت
9 دسامبر 2007
نوشته‌ها
2
لایک‌ها
0
خودم جواب رو پیدا کردم :happy:
موقعی که برای تفریق از متمم 2 استفاده می کنیم اگر رقم نقلی ایجاد شود از آن چشم پوشی می کنیم !
به همین علت درست است که رقم نقلی داریم ولی پرچم نقلی دستخوش تغییر نمی شود.
 
بالا