바이오스 기능 02H (에서는 SetCursor)과 DOS 기능 02H (WriteCharacter) 모두 매개 변수로 DL
레지스터를 사용한다는 사실에서이 코드 줄기를 가진 모든 문제. 불행하게도이 경우에는 의미가 다릅니다. 몇 가지 해결책이 있습니다. 무료 레지스터 BL
을 사용하여 별도의 문자 코드를 유지하는 것이 Ped7g에 의해 제안되었습니다.
I 전혀 DOS 출력 함수를 사용하고, BIOS 기능 0EH (TeletypeCharacter)으로 디스플레이에 기록되지 않고 존재하는 간단한 방법. 이 함수는 DL
을 매개 변수로 사용하지 않습니다. 오히려 AL
레지스터를 사용합니다.
.model small
.stack
.code
start:
mov al, "A" <<<First character
mov bh, 0 <<<Display page 0
mov cx, 25 <<<Iteration count
mov dl, 0 <<<Start at column 0
mov dh, 0 <<<Start at row 0
again:
mov ah, 02h <<<BIOS function SetCursor
int 10h
mov ah, 0Eh <<<BIOS function TeleType
int 10h
inc dl <<<Next column
inc dh <<<Next row
inc al <<<Next character
loop again
mov ah, 4Ch
int 21h
end start
표준 텍스트 화면에서 작업 할 때 80 열 25 행이 있습니다. 커서를 화면 밖으로 가져 가면 안됩니다! 프로그램이 수행해야하는 가장 반복 그러므로 25
클릭 코드의 출력을 볼 수있는 프로그램 출력의 스크린 샷이다. – Rhye
'int 10h/ah = 02h'는'dl'을 커서 수평 위치로 사용합니다. – Michael
변경해야 할 사항은 무엇입니까? – Rhye