0

我想知道一些事情。我继续学习一些汇编,并开始了解更多。无论如何,让我们继续。这是我所做的:

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 之间,没有换行。这意味着,“你好世界!” 和“乔希制造!” 在同一条线上。如何添加新行?

另外,如果有人想对代码本身发表评论,请这样做。我是组装的初学者,我真的很想学习它。非常感谢!

4

2 回答 2

1

对于您正在使用的中断 - “AH = 09h - 将字符串写入标准输出” - 字符代码$是字符串结束标记,而不是0您似乎认为的二进制文件。

把它放在$最后解决它:

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

这里不需要0字节,所以为了清楚起见最好把它去掉。

这是你所有的代码吗?您似乎缺少程序结束中断:

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

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

于 2014-01-10T22:13:52.117 回答
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,'$'
于 2014-01-27T16:19:12.803 回答