FASM x86 msg db新行

时间:2014-01-10 21:42:17

标签: assembly x86 fasm

我在想什么。我继续学习一些装配,我开始更多地了解它。无论如何,让我们继续吧。这就是我所做的:

org 100h
; Message 1
mov ah,09
mov dx,msg
int 21h
; Message 2
; LOL
mov ah,09
mov dx,msg2
int 21h
mov ah,08
int 21h
; ENd
int 20h
msg db "hello world!$", 0Dh, 0Ah, 0
msg2 db "made by Josh!$", 0Dh, 0Ah, 0        

然而,在msg和msg2之间,没有换行。这意味着,'你好世界!'并且'由Josh制作!'在同一条线上。如何添加新行?

另外,如果有人想对代码本身发表评论,请执行此操作。我是大会的首发,我真的想学习它。非常感谢!

2 个答案:

答案 0 :(得分:1)

对于您正在使用的中断 - “AH = 09h - 写入标准输出字符串” - 字符代码$是字符串结束标记,而不是您看起来的二进制0思考。

$放在最后解决它:

msg db "hello world!", 0Dh, 0Ah, "$"

此处不需要0字节,因此为了清晰起见,最好不要这样做。

这是你的全部代码吗?您似乎错过了程序结束中断:

mov ah, 4Ch
mov al, 0
int 21h

(AH = 4Ch - “退出” - 终止返回代码)

答案 1 :(得分:0)

您可以像打印字符串一样打印新行,并重复使用。

org 100h
mov dx,msg
mov ah,9h
int 21h

mov dx,newline ;put newline in between
mov ah,9h
int 21h

mov dx,msg2
mov ah,9h
int 21h

;int 20h
mov ah,4ch
int 21h 

msg db 'Hello World$'
msg2 db 'Hello FASM$'
newline db 0dh,0ah,'$'