문제
날짜 (일, 월, 연도) 및 시간 (시간, 분, 초)을 표시하는 ASM 스크립트가 있습니다.
이것은 dos-box의 현재 datetime을 인쇄합니다. 문제는 정적입니다. 내가하고 싶은 것은 그것을 역동적으로 만드는 것입니다. 즉, 현재 값이 화면에 서있는 정확한 장소에 새 값을 작성해야합니다. ASM 에서이 작업을 어떻게합니까?
나는 전혀 단서가없고 Google은 이것에 대한 내 친구가 아니었다.
해결책
문자열을 인쇄하기 전에 ASM 코드를 사용하여 커서를 배치하십시오. 예를 들어:
MOV DX,1629H ; (LINE 16H, COL 29H)
MOV AH,2 ; Move cursor to DH,DL
INT 10H
; now print your string
다른 팁
DOS-Box가 Windows 2000 이전에 Command.com 또는 CMD.exe 인 경우 (Newer CMD.Exe는 ANSI 지원을 제공하지 않음) ANSI 이스케이프 시퀀스를 지원합니다. 다양한 것을 사용할 수 있습니다 커서 명령 새로운 시간을 표시하기 전에 시계의 시작 부분에 커서를 배치합니다.
이것은 실제로 언어 별 문제가 아니라 플랫폼 특정 문제입니다. DOS 상자에서 실행 중이므로 다음 중 하나를 사용할 수 있습니다.
- DOS 인쇄 루틴을 사용하는 경우 (예 : AH = 9의 int 21h) 캐리지 리턴 문자 (ASCII 13)를 인쇄 할 수 있습니다. 없이 이후의 Newline 캐릭터 (ASCII 10)는 커서를 현재 선의 시작 부분으로 되돌립니다. 마찬가지로, 이것이 실제로 콘솔 기반 Windows 앱이고 WriteConsole을 사용하는 경우 동일한 효과를 얻을 수 있습니다.
- DOS를 진정으로 사용하는 경우 BIOS를 사용하여 int 10H, AH = 2로 현재 커서 위치를 업데이트 할 수 있습니다.
- Sparr에서 언급했듯이 "ANSI"탈출 시퀀스 (ANSI.SYS가로드 된 경우)를 보내 커서와 같은 다른 것들을 제어 할 수 있습니다. 이 탈출 시퀀스는 텍스트와 마찬가지로 인쇄됩니다 (예 : ALA INT 21H, AH = 9).
제휴하지 않습니다 StackOverflow