【问题标题】:FASM x86 msg db new lineFASM x86 msg db 新行
【发布时间】:2014-01-10 21:42:17
【问题描述】:

我想知道一些事情。我继续学习一些汇编,并开始了解更多。不管怎样,让我们​​继续吧。这是我做的:

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

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

【问题讨论】:

    标签: assembly x86 fasm


    【解决方案1】:

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

    $放在最后解决它:

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

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

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

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

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

    【讨论】:

    • 是的!感谢那。我还在学习汇编,所以我可能做错了。
    【解决方案2】:

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

    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,'$'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      相关资源
      最近更新 更多