[em10]以下是我编的用来实现 DOS中TYPE和DIR功能程序,但在机器上无法通过!~高手改错!
TYPE实现:

CRLF MACRO
MOV AH,02H
MOV DL,0DH
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
ENDM

DATA SEGMENT
  
FNAME DB '*.*',0 
DATA ENDS

STACK SEGMENT 
STACK DW 32DUP(?)
TOP DW ?
STACK ENDS       

    CODE SEGMENT
    ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:  MOV AX,DATA
    MOV DS,AX
    MOV ES,AX
    MOV SP,TOP
    MOV DX,SEGD TABUF
    MOV AH,1AH
    INT 21H
    MOV DX,OFFSET FNAME
    MOV CX,0
    MOV AH,4EH
    INT 21H
    JC EXIT

XXX:    CRLF
        MOV CX,0
        MOV SL,OFFSET DTABUF+1EH

UUU:    LODSB
        OR AL,AL
        JZ VVV
        INC CX
        JMP UUU
VVV:    MOV DX,OFFSET DTABUF+1EH
    MOV BX,1
    MOV AH,40H
    INT 21H

ZZZ:    MOV AH,4FH
    INT 21H
    JNC XXX

EXIT:   MOV AX,4C00H
    INT 21H
       CODE ENDS
          END START

DIR实现:

CRLF MACRO
MOV AH,02H
MOV DL,0DH
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
   ENDM
   DATA SEGMENT
   DTABUF DB 128DUP(?)
   FNAME DB '*.*',0
   DATA ENDS
   STACK SEGMENT
   STA DW 32DUP(?)
   TOP DW ?
   STACK ENDS
   CODE SEGMENT
   ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:MOV AX,DATA
      MOV DS,AX
      MOV ES,AX
      MOV SP,TOP
      MOV DX,SEG DTABUF
      MOV DS,DX
      MOV DX,OFFSET DTABUF
      MOV AH,1AH
      INT 21H
      MOV DX,OFFSET FNAME
      MOV CX,0
      MOV AH,4EH
      INT 21H
      JC EXIT
XXX: CRLF
     MOV CX,0
     MOV SL,OFFSET DTABUF+1EH
UUU: LODSB
     OR AL,AL
     JZ VVV
     INC CX
     JMP UUU
VVV: MOV DX,OFFSET DTABUF+1EH
     MOV BX,1
     MOV AH,40H
     INT 21H
ZZZ: MOV AH,4FH
     INT 21H
     JNC XXX
EXIT: MOV AX,4CH
     INT 21H
     CODE ENDS
   END START
谁帮我改正!!!!!!!~谢谢啦!!!!!!!!