Assembly 如何在EMU8086中动态打印消息

Assembly 如何在EMU8086中动态打印消息,assembly,emu8086,Assembly,Emu8086,这是我的密码 org 100h mov cx,5 loop1: call DISPLAY dec cx cmp cx,0 ja loop1 jmp Exit DISPLAY proc MOV AH,09 MOV DX, offset SCREEN INT 21h RET DISPLAY ENDP Exit: ret SCREEN DB 'Number 1','$' 这个代码

这是我的密码

org 100h

mov cx,5
loop1:  
        call DISPLAY
        dec cx
        cmp cx,0
        ja loop1
        jmp Exit

DISPLAY proc
 MOV AH,09
 MOV DX, offset SCREEN
 INT 21h
 RET
DISPLAY ENDP         

Exit:
ret

SCREEN DB 'Number 1','$'  
这个代码将显示五次'Number1',但我想用以下方式打印屏幕

Number 1  
Number 2  
Number 3  
Number 4  
Number 5  
我该怎么做??

谢谢大家

您可以将行号的字符值与主消息连接起来:

org 100h

mov cx,5
loop1:  
        call DISPLAY
        dec cx
        cmp cx,0
        ja loop1
        jmp Exit

DISPLAY proc
 MOV AH,09
 MOV BX,  offset SCREEN 
 MOV AL,CL
 NEG AL
 ADD AL,'0'+6
 MOV [BX+7],AL  
 MOV DX,BX
 INT 21h
 RET
DISPLAY ENDP         

Exit:
ret

SCREEN DB 'Number  ',0x0A,0x0D,'$'

编辑:

这是一种更通用的形式,类似于
printf
函数并支持
%d
%s
(尽管此代码可能不安全!):


您可以将行号的字符值与主消息连接起来:

org 100h

mov cx,5
loop1:  
        call DISPLAY
        dec cx
        cmp cx,0
        ja loop1
        jmp Exit

DISPLAY proc
 MOV AH,09
 MOV BX,  offset SCREEN 
 MOV AL,CL
 NEG AL
 ADD AL,'0'+6
 MOV [BX+7],AL  
 MOV DX,BX
 INT 21h
 RET
DISPLAY ENDP         

Exit:
ret

SCREEN DB 'Number  ',0x0A,0x0D,'$'

编辑:

这是一种更通用的形式,类似于
printf
函数并支持
%d
%s
(尽管此代码可能不安全!):


在字符串中的
1
上放置一个标签并递增。在字符串中的
1
上放置一个标签并递增。非常感谢@HamidRezaMehrabian,我还有最后一个问题。如果我们想在1号后面添加其他字符串,例如1号人物或2号人物。“我们能做点什么吗?”理论补充道,非常感谢你@HamidRezaMehrabian,我还有最后一个问题。如果我们想在1号后面添加其他字符串,例如1号人物或2号人物。“我们能做到吗?”理论补充到上面