汇编语言程序设计——屏幕显示和键盘输入

汇编语言程序设计——屏幕显示和键盘输入

汇编语言程序设计——屏幕显示和键盘输入

在汇编语言中,凡是涉及到键盘输入、屏幕显示等输入输出操作,都可以用软件中断指令 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

相关推荐