回 帖 发 新 帖 刷新版面

主题:课本上一道简单的题,却出了问题

题目说将内存变量BUF中存放的20个字符(This is a masm program),以$结束。我的程序如下

STACK    SEGMENT STACK 'STACK'
    DW 100H DUP(?)
TOP    LABEL WORD
STACK    ENDS
DATA    SEGMENT
BUF    DB 'This is a masm program$'
DATA    ENDS
CODE    SEGMENT
    ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:
    MOV AX,DATA
    MOV DS,AX
    MOV ES,AX
    MOV AX,STACK
    MOV SS,AX
    LEA SP,TOP
    MOV DS,SEG BUF
    LEA DX,BUF
    MOV AH,0AH
    INT 21H
    MOV AH,4CH
    INT 21H
CODE    ENDS
    END START

编译提示 immediate mode illegal,怎么回事?
另外,请帮我检查下程序有没有编对。谢谢了

回复列表 (共4个回复)

沙发

其他的我没有看但是似乎应该是mov ax,@data

板凳

MOV DS,SEG BUF
不能直接送入ds段内,写成
mov ax,seg buf
mov ds,ax

3 楼

MOV DS,SEG BUF
这句压根就不需要

4 楼

谢谢各位高人,问题解决了

我来回复

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