在8086程序集中正确地将数组转换为字符串

时间:2014-11-04 17:37:34

标签: assembly x86-16

我有一个数组

INPUT 10 DUP(?)

经过一些操作后,我需要通过mov啊,9来打印这个数组。我需要做什么?

  • 把$放在最后?
  • 任何字符串后的0DH和0AH是多少? 例如:PROMPT'这是一个字符串' ,0DH,0AH,' $'

1 个答案:

答案 0 :(得分:1)

您有数组,或至少有一个未定义内容的数组。

您需要填写一些能够打印出来的东西。

首先,您可以尝试input db 'Testing','$',而不是input 10 dup(?)。这会将“Testing”一词后跟一个“$”放入标有“input”的内存位置。

然后,您将需要使用以下内容打印您放入数组中的内容:

mov dx, offset input    # want BIOS call to point at the "input" location
                        # (with your "Testing" string in it)
mov ah, 9               # want BIOS call 9 (prints a string terminated by a $)
int 21h                 # run BIOS call

一旦你有了这个工作,你可以担心如何从其他来源填写“输入”,比如来自用户的输入(BIOS调用1h或0ah可能对你有帮助)。在字符串末尾添加$字符可能涉及mov [register] 24h或类似内容(24h是“$”的ascii代码)。

正如@harold在评论中所说,0ah和0dh是你放在一个字符串末尾的字符,以便在下一行打印下一个字符。