回 帖 发 新 帖 刷新版面

主题:我是初学者,帮忙看看一个小问题

stack    segment    stack
    dw    100 dup (?)
stack    ends
data    segment    
    x1    db    'please input a letter','$'    ;必须'$'结尾
    x2    db    'zhongyunde','$'        ;
data    ends
code    segment
    assume    cs:code,ds:data,ss:stack
start:    
    mov    ax,data
    mov    ds,ax
    mov    ah,1h
    int    21h
    cmp    al,0
    jz    start
    
    call    far ptr xx2  
code    ends

xx2    proc    far
    push    ds
    xor    ax,ax
    push    ax
    mov    ax,data
    mov    ds,ax
    mov    dx,offset    x2
    mov    ah,    9h
    int    21h    
    ret
xx2    endp
    end    start

下面是出错提示
data emitted with no segment??
不知为什么有问题?

回复列表 (共17个回复)

11 楼

我只想练习使用子程序而已
谢谢讨论

12 楼

stack    segment    stack
    dw    100 dup (?)
stack    ends
data    segment    
    x1    db    0dh,0ah,'please input a letter',0dh,0ah,'$'    ;必须'$'结尾
    x2    db    0dh,0ah,'zhongyunde',0dh,0ah,'$'        ;
data    ends
code    segment
    assume    cs:code,ds:data,ss:stack
start:    
    mov    ax,data
    mov    ds,ax
    mov    ah,1h
    int    21h
    cmp    al,'0'
    jz    lop
    mov dx,offset x1
    
    jmp exit
lop:mov    ax,data
    mov    ds,ax
    mov    dx,offset    x2
exit:mov    ah,    09h
    int    21h
    jmp start
code    ends
    end    start

13 楼


 jz    start
    
    call    far ptr xx2  
code    ends

对主段缺少返回  
应该是:
  jz    start
    
    call    far ptr xx2  
 mov    ah,1h
    int    21h
    ret
code    ends

14 楼


stack    segment    stack
    dw    100 dup (?)
stack    ends
data    segment    
    x1    db    'please input a letter','$'   

 ;必须'$'结尾
    x2    db    'zhongyunde','$'  ;
data    ends
code    segment
    assume    cs:code,ds:data,ss:stack
start:    
    push    ds
    xor    ax,ax
    push    ax
    mov    ax,data
    mov    ds,ax
    mov    ah,1h
    int    21h
    cmp    al,0
    jz    start
    
    call    far ptr xx2  
    mov    ah,1h
    int    21h
    ret

xx2    proc    ;far

    ;mov    ax,data
    ;mov    ds,ax
    mov    dx,offset    x2
    mov    ah,    9h
    int    21h    
    ret
xx2    endp
code   ends
    end    start

谢谢大家的帮助 
现在修改后,在MASM 5.0上通过拉 !!

15 楼

stack    segment    stack
    dw    100 dup (?)
stack    ends
data    segment    
    x1    db    'please input a letter','$'    ;必须'$'结尾
    x2    db    'zhongyunde','$'       
data    ends
code    segment
    assume    cs:code,ds:data,ss:stack
start:    
    mov    ax,data
    mov    ds,ax
    mov    ah,1h
    int    21h
    cmp    al,0
    jz    start
    
    call    far ptr xx2  
code    ends

xx2    proc    far
    push    ds
    xor    ax,ax
    push    ax
    mov    ax,data
    mov    ds,ax
    mov    dx,seg    x2
    mov    ds,dx
    mov dx,offset
    mov    ah,    9h
    int    21h    
    ret
xx2    endp
    end    start

16 楼


stack    segment    stack
    dw    100 dup (?)
stack    ends
data    segment    
    x1    db    'please input a letter','$'      
 x2    db    'zhongyunde','$'       data    ends
code    segment
    assume    cs:code,ds:data,ss:stack
start:    
    mov    ax,data
    mov    ds,ax
    mov    ah,1h
    int    21h
    cmp    al,0
    jz    start
    
    call    far ptr xx2  
code    ends

xx2    proc    far
    push    ds
    xor    ax,ax
    push    ax
    mov    ax,data
    mov    ds,ax
    mov    dx,seg   x2
    mov     ds,dx
    mov dx,offset
    mov    ah,    9h
    int    21h    
    ret
xx2    endp
    end    start

[em4][em4][em5]

17 楼

现在好久没有用 
汇编拉 
真的不记得以前问的现在搞不懂拉

我来回复

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