【问题标题】:Printing value of register, assembly x8086寄存器打印值,汇编x8086
【发布时间】:2013-12-08 09:07:37
【问题描述】:

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

【问题讨论】:

  • 请说明您尝试了什么以及您的错误是什么。
  • 转换为十六进制字符串,打印出来。有什么问题?你的尝试在哪里?

标签: assembly x86 x86-16


【解决方案1】:

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

示例:十六进制输出:

  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。您将获得从右到左的数字!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 2017-12-08
    相关资源
    最近更新 更多