采用INT 21H的01号功能,从键盘输入字符,若是”ESC”(1BH)则退出程序,若是大写字母(41H-5BH),则转换成小写字母(61H-7BH),并把转换后的小写字母存储到数据段的OK变量(长度为100)
时间: 2024-01-21 15:01:52 浏览: 124
dos功能调用参考
4星 · 用户满意度95%
好的,您的问题是如何采用INT 21H的01号功能从键盘输入字符,并且根据输入的内容进行相应的处理,是吗?
首先,INT 21H是DOS系统提供的一组中断服务程序。01号功能是从标准输入设备(比如键盘)读入一个字符,并且把字符的ASCII码值返回给程序。下面是一段汇编代码,可以演示如何使用INT 21H的01号功能从键盘读取一个字符:
```
mov ah, 01h ; 设置中断号为01h
int 21h ; 调用中断服务程序
```
当上面的代码执行完毕后,输入的字符的ASCII码值就会被存储在寄存器AL中。
根据您的要求,我们需要在输入的字符为大写字母(41H-5BH)时,把它转换成小写字母(61H-7BH),并且把转换后的小写字母存储到数据段的OK变量中。下面是一段汇编代码,可以实现这个功能:
```
mov ah, 01h ; 设置中断号为01h
int 21h ; 从键盘读入一个字符
cmp al, 1Bh ; 判断是否为"ESC"
je exit ; 如果是"ESC",则退出程序
cmp al, 41h ; 判断是否为大写字母
jb input ; 如果不是大写字母,直接重新读入一个字符
cmp al, 5Bh
ja input
sub al, 20h ; 把大写字母转换成小写字母
mov [ok], al ; 把转换后的小写字母存储到OK变量中
jmp input ; 继续读入下一个字符
exit:
```
上面的代码使用了比较、跳转等指令来实现条件判断和循环。其中,cmp指令用于比较两个值,je、jb、ja等指令用于根据比较结果进行跳转,sub指令用于对寄存器或内存中的值进行减法运算,mov指令用于把一个值从一个位置移动到另一个位置。
阅读全文