目录 上一页 下一页 下一章

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













waitkey
code

push
push
mov
int
mov
int
mov
int
int
pop
pop
ret
endp
ends
end
ax
dx
ah,0
16h
ax,0e0dh
10h
al,0ah
10h
10h
dx
ax



main
;保存将要使用的寄存器

;利用16H中断的0号功能
;从键盘接收字符
;输出回车符

;输出两个换行符


;恢复寄存器

;返回主程序



  关于指令JC我们在第四章讨论JA/JB指令时略有提及,它实际是指令JB的另一个形式:
助记符:JC(Jump if Carry)
用 途:依据CF标志状态转移
格 式:JC 目的地址
执 行:如果CF位为1则此指令完成转移,反之CF=0则不发生转移。
  在讨论指令"SHL"时曾经提到过移出寄存器的一位将进入CF标志位,在此程序里这个特性得到了应用。
  关于CX寄存器中所谓"显示字符个数"这个参数的含义前面并未说明,通过这个程序我们对这个参数就能有所了解,这个参数表示待显示的字符所需重复显示的个数。运行这个程序之后还有一个问题值得注意:即当一串大写字母"A"出现在屏幕上后,光标究竟在什么地方?
  前面使用0EH功能输出字符串时光标总是在最后一个字符的后面,而09H功能却正相反,光标在第一个字符下面闪烁,也就是说09H功能不会自动移动光标。这就给我们出了这样一个难题:如果需要在屏幕上光标位置处显示一个有属性的字符串,程序DISPSTR.ASM能行吗?
DISPSTR.ASM
data

msg
data
code

main


segment
assume
db
ends
segment
assume
proc
mov
mov

ds:data
'Take care,I want to sleep.',0


cs:code
far
ax,data
ds,ax







;初始化DS寄存器


Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章