回 帖 发 新 帖 刷新版面

主题:关于缓冲区输入的问题

调用中断号AH=0AH,输入一个字符串,写了如下一个程序,定义缓冲区三个字段,先输入一个字符串,然后调用ah=9h将字符串输出。
定义最多可以输入19个字符,但输出有问题了,不知道怎么说清楚,可以运行程序,输入字符的个数分别<10,=10 >10,就可以看到问题了,为什么会这样?高手指点。

STACK     SEGMENT STACK
    DW 128 DUP(0)
STACK     ENDS
DATA    SEGMENT
BUF1    DB 20
COUNT1  DB ?
SFILE   DB 20 DUP(0)
STR     DB 0DH,0AH,'$'
DATA    ENDS
CODE    SEGMENT
    ASSUME CS:CODE,DS:DATA
START:  MOV AX,DATA
    MOV DS,AX

        LEA DX,BUF1
          MOV AH,0AH
    INT 21H

        MOV DL,0DH
    MOV AH,2
    INT 21H
    MOV DL,0AH
    MOV AH,2
    INT 21H

    LEA DX,SFILE
          MOV AH,9H
    INT 21H
    MOV AH,4CH
    INT 21H
CODE     ENDS
    END START

回复列表 (共1个回复)

沙发

9号功能显示的字符串是以'$'为结束符的,加入以下代码:

xor bx, bx
mov bl, count1
mov sfile[bx], '$'

LEA DX,SFILE
MOV AH,9H
INT 21H

我来回复

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