-2

BIOS ビデオ割り込みを使用して、最終的に画面上でカーソルを移動できますが、画面の端に達するとカーソルが消えます。反対側に表示する必要があります。つまり、ライド側にまっすぐ進むと、画面の左側に出てきます。誰かがこれを行う方法を教えてもらえますか?

  .MODEL SMALL
  .STACK 1000h
  .DATA

  ROW DB 12 ; initial cursor position
  COL DB 40

 .CODE
 .STARTUP
START :
  MOV AH, 0     ; set video mode
  MOV AL, 3     ; 80x25 color
  INT 10H           ; video BIOS call   
  MOV AH, 2     ; set cursor position
  MOV BH, 0     ; display page number
  MOV DH, 24        ; set bottom row number
  MOV DL, 7     ; column number
  INT 10H           ; video BIOS call
  MOV AH,2        ;set cursor position
 MOV BH,0        ;display page number
 MOV DH,ROW      ;row number
 MOV DL,COL      ;column number
 INT 10H         ;video BIOS call
 MOV BL, 15
 INT 10H         ;video BIOS call

READ :
MOV AH, 0       ;read keyboard
INT 16h           ;BIOS call
CMP AL,0
JZ CSC
CMP AL,'q'
JMP EXIT

CSC :
CMP   AH,72        
JZ   UP
CMP   AH,80       
JZ   DOWN
CMP   AH,75       
JZ   LEFT
CMP   AH,77        
JZ   RIGHT

 UP:
SUB ROW, 1
MOV   AH,2          ;set cursor position
MOV   BH,0          ;display page number
MOV   DH,ROW        ;row number
MOV   DL,COL        ;column number
INT   10H           ;video BIOS call
JMP READ      

 DOWN:
ADD   ROW, 1
MOV   AH,2          ;set cursor position
MOV   BH,0          ;display page number
MOV   DH,ROW        ;row number
MOV   DL,COL        ;column number
INT   10H           ;video BIOS call
JMP   READ   

 RIGHT:
ADD   COL, 1
MOV   AH,2          ;set cursor position
MOV   BH,0          ;display page number
MOV   DH,ROW        ;row number
MOV   DL,COL        ;column number
INT   10H           ;video BIOS call
JMP   READ   

LEFT:
SUB   COL, 1
MOV   AH,2          ;set cursor position
MOV   BH,0          ;display page number
MOV   DH,ROW        ;row number
MOV   DL,COL        ;column number
INT   10H           ;video BIOS call
JMP   READ      
EXIT : .EXIT 
END
4

1 に答える 1