جمع دو عدد صد رقمی

alir37_a

عضو جدید
سلام!!!یه برنامه اسمبلی میخوام که دوتا عدد 100 رقمی رو باهم جمع کنه!!!!:cry::cry::cry::cry::cry:
 

pcpalace.ps

عضو جدید
سلام
اگر ارقام را BCD فرض كنيم مجموع به صورت جمع هر رقم در يك حلقه ي صدتايي انجام مي شود.

DATA Segment DATA
DATA1 DB 100digit
DATA2 DB 100digit
DATA3 DB
DATA Ends

MAIN:
LEA BX,DATA1
LEA DX,DATA2
LEA DI,DATA3
Mov CX,99
MOV Al,[BX]1
ADD Al,[DX]1
DAA
MOV [DI],Al
L1:
INC BX
INC DX
INC DI
MOV Al,[BX]1
ADC Al,[DX]1
DAA
MOV [DI],Al
LOOP L1
JNC EXIT
INC DI
MOV [DI],1
EXIT:
HLT

اميدوارم متوجه شده باشي.واسه بعضي خطها جلوي براكت 1اضافي گذاشتم تا سمبل را جابجا ننويسد و دستور مشخص باشد.
 

alir37_a

عضو جدید
سلام
اگر ارقام را BCD فرض كنيم مجموع به صورت جمع هر رقم در يك حلقه ي صدتايي انجام مي شود.

DATA Segment DATA
DATA1 DB 100digit
DATA2 DB 100digit
DATA3 DB
DATA Ends

MAIN:
LEA BX,DATA1
LEA DX,DATA2
LEA DI,DATA3
Mov CX,99
MOV Al,[BX]1
ADD Al,[DX]1
DAA
MOV [DI],Al
L1:
INC BX
INC DX
INC DI
MOV Al,[BX]1
ADC Al,[DX]1
DAA
MOV [DI],Al
LOOP L1
JNC EXIT
INC DI
MOV [DI],1
EXIT:
HLT

اميدوارم متوجه شده باشي.واسه بعضي خطها جلوي براكت 1اضافي گذاشتم تا سمبل را جابجا ننويسد و دستور مشخص باشد.

ممنون!!!!! اما فک کنم منظور استاد کار با رشته ها بود!!!! این همونه؟؟؟؟؟:D:)
 

pcpalace.ps

عضو جدید
نه رشته ها اين نيست واسه رشته قبل از اينكه جمع انجام بشه بايد كد اسكي رو به BCD تبديل كني واسه اينكار كافيه طبق همين برنامه قبل از دستور ADD هر دو مقدار DATA1 ,DATA2 رو از 30 كم كني و در نهايت بعد از هر عمل ADD حاصل جمع رو با 30 جمع كني تا دوباره به اسكي تبديل شه.
فهميدي!!!!!؟
 

alir37_a

عضو جدید
نه رشته ها اين نيست واسه رشته قبل از اينكه جمع انجام بشه بايد كد اسكي رو به BCD تبديل كني واسه اينكار كافيه طبق همين برنامه قبل از دستور ADD هر دو مقدار DATA1 ,DATA2 رو از 30 كم كني و در نهايت بعد از هر عمل ADD حاصل جمع رو با 30 جمع كني تا دوباره به اسكي تبديل شه.
فهميدي!!!!!؟

نهههههههههه:confused::confused::confused:
 

atena_2019

عضو جدید
سلام!!!یه برنامه اسمبلی میخوام که دوتا عدد 100 رقمی رو باهم جمع کنه!!!!:cry::cry::cry::cry::cry:
سلام
دو تا رشته رو از ورودی می گیری و چون هر عدد در رشته همان کد اسکی آن است (مثلا 1 به صورت 49 می باشد )باید برای هر رقم اسکی 0 را از آن کم کنی یعنی هر رقم رو منهای 48 کنی
حالا عدد در آرایه موجود است.
یه حلقه 100 تایی می زنی از آخر آرایه ات تا هر دو رقم را با هم جمع کنه و بر 10 تقسیم کنه باقی مانده رو در خانه متناظر در جواب می ذاری و حاصل تقسیم رو به عنوان نقلی نگه میداری
در هر مرحله وقتی دو رقم رو با هم جمع می کنی نقلی مرحله قبل رو هم با اون جمع می کنی(مثل جمع کردن خودمون)
 

Similar threads

بالا