做着还算顺手,于是把前面的程序改了一下。顺便练一下子程序的调用和程序间传值。 DATA SEGMENT OUT1 DB 'ABCDE' COUNT = $ - OUT1 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV EX,AX MOV DS,AX CALL CLEANSCREEN MOV AX,0821H CALL POSTION MOV AX,0711H CALL SHOWSTRING MOV AX,4C0H INT 21H ;------------------------------------------ ;CLEANSCREEN子程序无参数 ;------------------------------------------ CLEANSCREEN PROC MOV AX,0600H MOV BH,07H MOV CX,0 MOV DX,184FH INT 1OH RET CLEANSCREEN ENDP ;------------------------------------------ ;POSTION子程序用一个参数,参数入口AX ;------------------------------------------ POSTION PROC MOV CX,AX ;转移参数值 MOV AX,0200H MOV BH,0 MOV DX,CX INT 10H RET POSTION ENDP ;------------------------------------------ ;SHOWSTRING子程序有一个参数,参数入口AX ;------------------------------------------ SHOWSTRING PROC PUSH AX ;保护现场 MOV AX,1300H MOV BX,0002H MOV CH,0 MOV CL,COUNT POP DX ;对栈弹,将传入参数赋值给DX LEA BP,OUT1 INT 1OH RET SHOWSTRING ENDP CODE ENDS END START