回 帖 发 新 帖 刷新版面

主题:大家来帮帮看看这段hello world代码。

print    macro    
    push ax
    mov ax,0900h
    int 21h
    pop ax
endm
data    segment
mess1    db    20 dup('-')
mess2    db    'Hello world~~!$'
data    ends

stack    segment    'stack'
    dw    100 dup(?)
stack    ends

code    segment
main    proc    far
    
    assume    cs:code,ds:data,es:data,ss:stack
start:
    mov ax,data
    mov ds,ax
    mov es,ax
    mov dx,offset mess1
    print
    lea dx,mess2
    print
    ret
main endp
code    ends
    end    start    
;怎么输出得不到我想要的效果呢?
;输出什么都没有。我气死

回复列表 (共6个回复)

沙发

提个很简单的建议,将你的字符串用双引号括起来试试!

板凳

还是不行

3 楼

初始化SS:SP,最后的RET改为MOV AX,4C00H INT 21H
如果在不行,修改你的DOS中断~换过一个来实现,反正我一般是用BOIS中断来输出的.

4 楼

还是不行

5 楼

1. 将start标号改在 main函数内部,不能通过编译,将代码修改如下后,能够正确运下:


print    macro    
    push ax
    mov ax,0900h
    int 21h
    pop ax
endm
data    segment
mess1    db    20 dup('-')
mess2    db    'Hello world~~!$'
data    ends

stack    segment    'stack'
    dw    100 dup(?)
stack    ends

code    segment
   
    assume    cs:code,ds:data,es:data,ss:stack

start:
    mov ax,data
    mov ds,ax
    mov es,ax
    mov dx,offset mess1
    print
    lea dx,mess2
    print
    mov ax,4c00h
    int 21h

code    ends
    end    start    

2.我使用的汇编程序为 ml为6.15,链接程序为tc2.0自带的tlink,命令行和执行结果如下:

  E:\lbc\mycode\testcode\PRF405~1>ml /c test.asm
Microsoft (R) Macro Assembler Version 6.15.8803
Copyright (C) Microsoft Corp 1981-2000.  All rights reserved.

 Assembling: test.asm

E:\lbc\mycode\testcode\PRF405~1>tlink test
Turbo Link  Version 2.0  Copyright (c) 1987, 1988 Borland International
Warning: no stack

E:\lbc\mycode\testcode\PRF405~1>test
--------------------Hello world~~!Hello world~~!

6 楼

成功了,OK  谢谢拉。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册