回 帖 发 新 帖 刷新版面

主题:初学者的小问题

在屏幕中显示welcome to masm!
我用2003系统运行command进去masm *.asm后link *.asm出来了*.exe可运行*.exe什么都没有出来。这是为什么呢?
data segment
db 'welcome to masm!'
data ends
code segment
start:  mov ax,data
    mov ds,ax
    mov bx,0
    mov cx,10
    mov ax,0B872h
    mov es,ax
    mov si,0
    s:  mov al,ds:[bx]
    mov es:[si],al
    inc bx
    inc si
    loop s
    mov ax,4C00H
    int 21H
code ends
end start

回复列表 (共3个回复)

沙发


data segment
db 'welcome to masm!'
data ends
code segment
start:  mov ax,data
    mov ds,ax
    mov bx,0
    mov cx,10
    mov ax,0B872h
    mov es,ax
    mov si,0
    s:  mov al,ds:[bx]
    mov es:[si],al
    inc bx
    add si,2(这里改一下)
    loop s
    mov ax,4C00H
    int 21H
code ends
end start
用debug *.exe 再用g命令 到mov ax,4C00h那个地址就有啦

板凳

需要再执行CMD命令,然后在命令提示符下执行,否则可能输出太快,你看不见

3 楼

你并没有输出啊~~!  我给你修改如下:
 
data segment
text1 db ' welcome to masm! $'
Len    EQU $-text1;
data ends
code segment
     assume CS:code,DS:data;
start:  mov ax,data
    mov ds,ax
    mov bx,0
    mov dx,offset text1  ; 字符串首地址
    mov ah,09h           ;  输出字符串 
    int 21h
    mov SI,Len+1
  s:mov ah,02h
    mov DL,text1[SI-1]
    int 21h               ; 单个字符逆序输出;
    DEC SI
    cmp SI,0h
    JNE s
    mov ax,4C00H
    int 21H
code ends
end start

输出: 
welcome to masm!  $ msam ot emoclew

我来回复

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