目录 上一页 下一页 下一章

第6章 文字输出与键盘输入 -139-

code

main











get_key:









is_j:






is_k:







is_m:






segment
assume
proc
mov
mov

mov
mov
int

mov
int
mov
mov

mov
int
or
cmp
jnz
dec
jns
mov
jmp

cmp
jnz
dec
jns
mov
jmp

cmp
jnz
inc
cmp
jb
mov
jmp

cmp
jnz
inc
cmp
jb
mov

cs:code
far
ax,data
ds,ax

dx,offset keymsg
ah,9
21h

ah,3
10h
current,dh
byte ptr current+1,dl

ah,0
16h
al,20h
al,'i'
is_j
byte ptr current
mov_cur
byte ptr current,24
mov_cur

al,'j'
is_k
byte ptr current+1
mov_cur
byte ptr current+1,79
mov_cur

al,'k'
is_m
byte ptr current+1
byte ptr current+1,79
mov_cur
byte ptr current+1,0
mov_cur

al,'m'
exit
byte ptr current
byte ptr current,24
mov_cur
byte ptr current,0



;初始化DS寄存器


;输出字符串KEYMSG



;利用10H中断的03功能
;取得当前光标位置
;保存光标当前位置


;等待键盘输入

;将输入的字符转换成小写字母
;输入的是'i'键吗?
;不是'i'键,转IS_J继续
;光标所在行号减1
;如果光标行号仍不小于0,则移动光标
;若光标行号小于0,将其移动到屏幕底部
;转MOV_CUR移动光标

;输入的是'j'键吗?
;不是'j'键,转IS_K继续
;光标所在列号减1
;若光标列号不小于0,则移动光标
;若光标列号小于0,将其移动至屏幕右端
;转MOV_CUR移动光标

;输入的是'k'键吗?
;不是'k'键,转IS_M继续
;光标所在列号加1
;光标列号大于79吗?
;小于79则移动光标
;大于79则将光标移动到屏幕最左端
;转MOV_CUR移动光标

;输入的是'm'键吗?
;不是'm'键,转EXIT结束
;光标所在行号加1
;光标行号大于24吗?
;小于24则移动光标
;大于24则将光标移动到屏幕顶部

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章