我在想什么。我继续学习一些装配,我开始更多地了解它。无论如何,让我们继续吧。这就是我所做的:
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制作!'在同一条线上。如何添加新行?
另外,如果有人想对代码本身发表评论,请执行此操作。我是大会的首发,我真的想学习它。非常感谢!
答案 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,'$'