如何在屏幕上打印字符

how to print char on the screen

我试着让'#'在屏幕左边,另一边是'$',但它不会停在 25*40

.MODEL TINY

.CODE

.STARTUP

  CLD
  MOV AX, 0B800H ;for open screen
  MOV ES, AX    
  MOV DI, 0
  MOV CX, 25*40  ;try to divide screen 
  MOV AX, 5C23H
  REP STOSW

  MOV AX, 0B800H
  MOV DS, AX
  MOV SI,0  
  MOV CX, 25*40
  MOV AX, 6F24H
  REP STOSW

.EXIT
END
.MODEL TINY

.CODE
.STARTUP

  CLD
  MOV AX, 0B800H ;for open screen
  MOV ES, AX
  XOR DI, DI     ; DI = 0
  MOV DX, 25     ; lines counter
line_loop:
  MOV CX, 40
  MOV AX, 5C23H
  REP STOSW
  MOV CX, 40
  MOV AX, 6F24H
  REP STOSW
  DEC DX
  JNZ line_loop

.EXIT
END

为了好玩并为您锻炼 xor 的力量,更短的代码变体(尝试在调试器或 head 中跳过它并了解它是如何工作的):

  ...
  XOR DI, DI     ; DI = 0
  MOV DX, 50     ; 50 half-lines to fill
  MOV AX, 5C23H  ; start with '#'
half_line_loop:
  MOV CX, 40
  REP STOSW
  XOR AX, 3307h  ; 5C23 xor 3307 = 6F24, 6F24 xor 3307 = 5C23
  DEC DX
  JNZ half_line_loop
  ...