回 帖 发 新 帖 刷新版面

主题:关于回车换行的问题

DATAS SEGMENT
    X DB 'YOU ARE GOOD!$'
    Y DB 'HELLO,BABY!$'
DATAS ENDS

    CODES SEGMENT
PROC1 PROC FAR
    ASSUME CS:CODES,DS:DATAS
    PUSH DS
    MOV AX,0
    PUSH AX
    MOV AX,DATAS
    MOV DS,AX
    MOV DX,OFFSET X
    MOV AH,09H
    INT 21H
    
   ; MOV DL,0DH
   ; MOV AH,02H
   ; INT 21H
    
    MOV DL,0AH
    MOV AH,02H
    INT 21H
    
    MOV DX,OFFSET Y
    MOV AH,09H
    INT 21H
    RET
    PROC1 ENDP
CODES ENDS
    END PROC1
本程序的作用是输出两个字符串,为什么单单输出一个换行不行,而要加上一个回车呢?换行副的意思不是--将当前位置移到下一行开头吗???

回复列表 (共1个回复)

沙发

回车和换行是在汇编中两个不同的概念.
比如当前的光标位置是x行,Y列,记为(x,y)
那么回车(0DH)后,光标位置是(x,0)
如果是换行(0AH),光标位置是(x+1,y).(如果是最后一行,屏幕上卷)
自己在思考一下为什么要0DH,0AH同时处理.
我们在调用INT 16H中断的时候,"ENTER"键的ASCII是0DH.
0AH无法从键盘获得,是人为加上去的.

我来回复

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