画面スクロールプログラム
ORG 0x100 ; 画面の上から5行をバッファに保存 MOV AX, 0xb800 MOV DS, AX ; DS=0xb800 MOV SI, 0 ; 1行目の先頭アドレス MOV AX, CS MOV ES, AX ; ES=CS MOV DI, BUF CLD MOV CX, 400 ; 80×5 REP MOVSW ; 0xb800:0x0000から5行分をBUFへ保存 ; 画面を5行分スクロール MOV AX, 0xb800 MOV DS, AX ; DS=0xb800 MOV ES, AX ; ES=0xb800 MOV SI, 800 ; 6行目の先頭アドレス(80×5×2) MOV DI, 0 ; 1行目の先頭アドレス CLD MOV CX, 1600 ; 80×20 REP MOVSW ; 6〜25行目を1〜20行目へコピー ; バッファへ保存した1〜5行目を21〜25行目へ書き戻す MOV AX, CS MOV DS, AX ; DS=CS MOV SI, BUF MOV AX, 0xb800 MOV ES, AX ; ES=0xb800 MOV DI, 3200 ; 21行目の先頭アドレス(80×20×2) CLD MOV CX, 400 ; 80×5 REP MOVSW ; BUFから5行分を0xb800:0x0c80へコピー ; キー入力待ち MOV AH, 0x01 INT 21h ; プログラム終了 MOV AX, 0x4c00 INT 0x21 BUF times 2000 DW 0