문제

날짜 (일, 월, 연도) 및 시간 (시간, 분, 초)을 표시하는 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 상자에서 실행 중이므로 다음 중 하나를 사용할 수 있습니다.

  1. DOS 인쇄 루틴을 사용하는 경우 (예 : AH = 9의 int 21h) 캐리지 리턴 문자 (ASCII 13)를 인쇄 할 수 있습니다. 없이 이후의 Newline 캐릭터 (ASCII 10)는 커서를 현재 선의 시작 부분으로 되돌립니다. 마찬가지로, 이것이 실제로 콘솔 기반 Windows 앱이고 WriteConsole을 사용하는 경우 동일한 효과를 얻을 수 있습니다.
  2. DOS를 진정으로 사용하는 경우 BIOS를 사용하여 int 10H, AH = 2로 현재 커서 위치를 업데이트 할 수 있습니다.
  3. Sparr에서 언급했듯이 "ANSI"탈출 시퀀스 (ANSI.SYS가로드 된 경우)를 보내 커서와 같은 다른 것들을 제어 할 수 있습니다. 이 탈출 시퀀스는 텍스트와 마찬가지로 인쇄됩니다 (예 : ALA INT 21H, AH = 9).

DOS로 많은 조립 프로그래밍을 할 예정이라면 책갈피를 유지합니다. 하나몇몇의 방해하다 참조.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top