寄存器,组件x8086的打印值

时间:2013-12-07 21:18:44

标签: assembly x86 x86-16

您好我正在编写程序,我需要将寄存器AX的值打印到屏幕上。我想的方法很少,但它们没有用。任何想法如何制作它?例如ax = 0abcdh。

1 个答案:

答案 0 :(得分:0)

您必须将寄存器的值分成不同的部分。

示例:十六进制输出:

  MOV CX, 4
next_digit:
  PUSH CX
  MOV CL, 4
  ROL AX, CL
  PUSH AX
  AND AL, 0Fh
  ADD AL, '0'
  CMP AL, '9'
  JLE not_a_letter
  ADD AL, 'A'-'9'-1
not_a_letter:
  ; Now write the character AL to the screen
  POP AX
  POP CX
  LOOP next_digit

此代码将破坏CX寄存器的内容,因此如果您不想修改CX寄存器,则必须将其保存在堆栈中。

“现在将字符AL写入屏幕”行是依赖于操作系统的。

如果你想要十进制输出,那就有点棘手了。你必须使用DIV指令除以10.你将得到从右到左的数字!!!