汇编语言程序设计——屏幕显示和键盘输入
在汇编语言中,凡是涉及到键盘输入、屏幕显示等输入输出操作,都可以用软件中断指令 INT n 的功能调用来实现。所谓功能调用是计算机系统设计的简单 I / O 子程序,能方便地访问系统的硬件资源。
在微机系统中,功能调用分两个层次,最底层的是 BIOS 功能调用,其次是 DOS 功能调用,它们都是通过软件中断指令 INT n 来进行调用的。除了用 INT 指令实现输入和显示之外,还可以通过直接写显示缓冲区的方式显示字符。
(1)DOS 功能调用
DOS 的功能调用采用 INT 21H 指令,调用时要求在 AH 中提供功能号,在指定的寄存器和存储单元中提供调用必需的参数和缓冲区地址,执行后系统在 AL 中放入返回参数。
常用的 DOS 功能调用有 5 个:
1 号 DOS 功能调用:键盘输入 1 个字符2 号 DOS 功能调用:显示器输出 1 个字符9 号 DOS 功能调用:显示字符串10 号 DOS 功能调用:键盘输入缓冲区4CH 号 DOS 功能调用:返回 DOS 控制注意:I/O 处理操作的都是 ASCⅡ 码,对于键盘输入的数字,做计算时需将 ASCⅡ 码转变为二进制数,输出显示数据时需将二进制数转为 ASCⅡ 码。数字 0~9 的 ASCII 码为 30H~39H,可以看出两者之间相差 30H。
(2)DOS 功能调用例子
例子:显示两行字符串(回车换行功能)。第 1 行为“Input x:”,第 2 行为“Output y=x+1:”。从键盘输入 x,输出 y = x + 1 的值。
汇编代码如下:test3-2.asm
data segment
mess1 db 'Input x:','$'
mess2 db 0ah,0dh,'Output y:$' ;0ah和0dh是换行和回车
y db ?
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov dx,offset mess1
mov ah,9 ;显示提示信息"Input x:"
int 21h
mov ah,1 ;1号功能,键盘输入,键入的值在al
int 21h
add al,1 ;al+1->al
mov y,al ;保存到y单元
mov dx,offset mess2
mov ah,9 ;在下一行显示提示信息"Output y:"
int 21h
mov ah,2 ;2号功能,显示一个字符
mov dl,y ;显示的字符要放入dl,显示x+1的值
int 21h
mov ah,4ch
int 21h
code ends
end start