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
کسی می تواند کمکم کند ؟
پیشاپیش متشکرم.
برنامه 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
کسی می تواند کمکم کند ؟
پیشاپیش متشکرم.