طريقة بسيطة لطباعة قيمة السجل في مجموعة x86
-
01-10-2019 - |
سؤال
أحتاج إلى كتابة برنامج في تجميع 8086 يتلقى بيانات من المستخدم ، ويقوم ببعض الحسابات الرياضية ويطبع الإجابة على الشاشة ، لقد كتبت جميع أجزاء البرنامج وكلها تعمل بشكل جيد ولكني لا أعرف كيفية طباعة رقم على الشاشة.
في نهاية كل حسابي ، تكون الإجابة هي الفأس ويتم التعامل معها على أنها عدد صحيح غير موقّع 16 بت. كيف يمكنني طباعة القيمة العشرية (غير الموقعة) لسجل الفأس؟
المحلول
يمكنك استخدام وظيفة C-Library ITOA ، وتنفيذها ليس بهذه الصعوبة ، أساسًا ، يمكنك القيام به:
while (x){
buff[n]==x % 10;
x/=10;
n++;
}
ثم اقلب المخزن المؤقت (أو طباعة الحرف إلى الوراء)
void print_number (int x) ؛
print_number:
buff db 15 dup(0)
mov ax,[esp+4]
mov bx,0
itoa_w1:
mov cx, ax
mod cx,10
add cx,30h;'0'
div ax,10
mov buff[bx],cl
cmp ax,0
jnz itoa_w1
itoa_w2:
push buff[bx]
call putchar
pop ax
cmp bx,0
jnz itoa_w2
ret
لا تنتمي إلى StackOverflow