【问题标题】:I have some problems with masm我对masm有一些问题
【发布时间】:2021-03-11 06:20:12
【问题描述】:

我想跑的时候masm有些问题:

CSEG segment
org 100h

Begin:
    mov ah, 9 
    mov dx, offset Message
    int 21h
    ;mov ah, 9 
    ;mov dx, offset mess2
    ;int 21h

    int 20h
mess2 db 'It is me$'
Message db 'Hello, World2243!$'
CSEG ends
end Begin

打印出来:

Smth like: ||=It's me!

但是我把这个字符串注释掉了!! 我在DosBox上编译这段代码,可能是这个原因

【问题讨论】:

  • 根据截图,您使用的是TASM,而不是MASM。
  • 您使用org 100h 的事实表明您应该生成COM 文件而不是EXE,即您应该使用/t 链接器选项。
  • 你没有注释掉字符串,这就是为什么它存在于内存中,当你的程序运行错误时它可以被打印出来。您只注释掉了引用它的说明。

标签: windows assembly cmd tasm dosbox


【解决方案1】:

如前所述,您使用tasm,而不是masm。这是两个不同的东西,请参阅 tasmmasm
为了打印两行,我使用了代码:

MODEL   TINY
STACK 100h  
DATASEG
    Hellostr DB 'Hello First Step Site $'
    str2     DB 'Step 16 $'
CODESEG     
start:  
    mov ax,@data
    mov ds,ax
    mov dx,offset Hellostr               
    mov ah,09h
    int 21h
    mov dx,offset  str2
    mov ah,09h
    int 21h
    mov ah,04Ch
    mov al,1h
    int 21h
end start

编译 + 构建 + 运行:

mount c C:\path\to\asm\file\PROGRA~1.asm
c:
tasm PROGRA~1.asm
tlink /3 PROGRA~1.obj 
PROGRA~1.exe

结果:link
我还要注意,如上面的屏幕截图所示,我有一个dosbox 版本0.74-3
最后:我建议您仔细查看您提供的屏幕截图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-27
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多