سؤال

أحتاج إلى كتابة برنامج في تجميع 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top