.386 DATA1 SEGMENT USE16 BUF DB 0AH,0DH, 'I WISH YOU SUCCESS!$' DATA1 ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA1 START: MOV AX,DATA1 MOV DS,AX MOV DL,31H MOV AH,2 INT 21H MOV AH,4CH INT 21H CODE ENDS END START
从DS段开始偏移DX,遇到‘$’字符结束
.386 DATA1 SEGMENT USE16 BUF DB 0AH,0DH, 'I WISH YOU SUCCESS!$' ;0AH,0DH回车换行 DATA1 ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA1 START: MOV AX,DATA1 MOV DS,AX LEA DX, BUF MOV AH, 9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START
.386 DATA1 SEGMENT USE16 T1 DB 'abcdef' T2 DB 31H,32H,33H,'$',34H,35H DATA1 ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA1 START: MOV AX,DATA1 MOV DS,AX LEA DX,T1 MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START
输出:abcdef123
.386 DATA1 SEGMENT USE16 T1 DB 'abcdef' T2 DB 31H,32H,33H,34H,35H,'$' DATA1 ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA1 START: MOV AX,DATA1 MOV DS,AX LEA DX,T1 MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START
输出:abcdef12345
输出:abcdef
10号调用
.386 DATA1 SEGMENT USE16 T1 DB 11 DB ? DB 11 DUP(0) T2 DB 31H,32H,33H,34H,35H,'$' DATA1 ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA1 START: MOV AX,DATA1 MOV DS,AX LEA DX,T1 MOV AH,10 INT 21H LEA DX,T1 MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START
输入:1234567890
输出:1234567890
.386 DATA1 SEGMENT USE16 T1 DB 10,5 dup(0); 10表示缓冲区最多能输入是字符个数,还要减一 str DB 1,2,3 T2 DB 31H,32H,33H,34H,35H,'$' DATA1 ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA1 START: MOV AX,DATA1 MOV DS,AX LEA DX,T1 MOV AH,10 INT 21H LEA DX,T1 MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START
打开TD 调试
输入:abcdefgi
OA后面的09表示9个,原来的1,2,3被覆盖掉,相当于数组越界,到 0D 结束