1 / 35 实训一光标漫游⒈问题在 25 行 80 列的显示屏内,通过按键“→、←、↑、↓”来改变光标的位置,如按“→”键则光标往右侧走一列,按“↑”键则光标往上走一行的位置,最终通过“ Esc”结束程序
⒉边界问题要处理好特殊情况:①光标在第一行,再按“↑”键时;②光标在第一列,再按“←”键时;③光标在第25 行,再按“↓”键时;④光标在第80 列,再按“→”键时
⒊边界问题处理采用折返的方式:①光标在第1 行,再按“↑”键时进到第25 行;②光标在第 1 列,再按“←”键时进到第80 行;③光标在第25 行,再按“↓”键时进到第 1 行;④光标在第 80 列,再按“→”键时时进到第1 列
⒋实验基础① 读键:用 int 16h的 0 号功能调用掌握扫描码和字符码的区别Mov ah,0 Int 16h ; 返回 AH=扫描码, AL=字符码② 定位光标:用 int 10h 的 2 号③ 清屏: 用 int 10h 的 6 号(或 7 号)功能调用MOV AH,6 MOV BH,04h 2 / 35 MOV AL,0 MOV CX,0 MOV DX,184fh INT 10h ④相关键的扫描码和字符码EnterKey EQU 1c0dh EscKey EQU 010bh UpCursor EQU 4800h LeftCursor EQU 4b00h RightCursor EQU 4d00h DownCursor EQU 5000h 5
算法do { 定位光标读键if (al== 特殊键 ) { if (ah== 左光标键 ) 修正列值}else if (ah==右光标键 ) {修正列值}else if (ah==上光标键 ) {修正行值}else if (ah==下光标键 ) {修正行值}} } while (al
=Esc)6
实验步骤运行“光标漫游示例