用汇编语言多次显示消息

时间:2016-10-29 19:21:01

标签: loops assembly x86 nasm dos

我正试图多次显示一条消息。

我使用过nasm并使用了这个程序:

    MOV cx, 1
    mov  ax, 10
re:
    CMP ax, cx
    JS fin
    mov  dx, texte 
    INC cx
    JMP re
fin:
    Int 21h
    texte: db 'Hello, World !!'

2 个答案:

答案 0 :(得分:2)

目前,您只在底部调用int 21h。 尝试将其移入循环中。

此外,自从我上次在汇编中做了一些事情已经很长时间了,但你可能还需要准备一些寄存器来确定int 21h会做什么。在此处查看更多信息:http://spike.scu.edu.au/~barry/interrupts.html#ah09

答案 1 :(得分:1)

更多事情:

  • 对于int21h执行输出,您需要将AH设置为9.您已经使用AX来存储循环限制;您必须使用其他寄存器(BX,SI,DI当前未使用)或硬编码限制。此外,int21h函数9在输出时更改AL的值 - 这是不使用AX的另一个原因。
  • 字符串需要以$字符终止。这就是int21h / 9所期望的,而不是汇编语言的惯例。
  • 并且,像obe所说,你想要之前的int 21h命令,而不是“jmp re”行之后。
  • 在“fin”标签处,您可能想要退出程序。顺序是:“mov ah,4ch / int 21h”。