一、指出下列程序中的错误:
STAKSG SEGMENT
DB 100DUP(?)
STA_SG ENDS
DTSEG SEGMENT
DATA1 DB ?
DTSEG END
CDSEG SEGMENT
START: MOV DS,DATSEG
MOV AL,34H
ADD AL,4F
MOV DATA,AL
START ENDP
CDSEG ENDS
END
改正后:
STAKSG SEGMENT
DB 100DUP(?)
STAKSG ENDS
CDSEG SEGMENT
ASSUME CS:CODESEG,DS:DTSEG,SS:STAKSG
START: MOV AX,DTSEG
MOV DS,AX
MOV AL,34H
ADD AL,4FH
MOV DATA1,AL
MOV AH,4CH
INT 21H //主意这两句的话是调用21中断的4CH号功能,退出程序
CDSEG ENDS
END
总结:汇编中不存在END. 在定义的段结束要以ENDS结束。主意段名称不要写错。 程序结束不能用ENDS,应该用MOV AH,4CH INT 21H。这两句话。要用ASSUME指令把段和段寄存器联系起来。段不能直接放到段寄存器中,应该先放到通用寄存器中,再把通用寄存器里的数据放到段寄存器中去。