编写一个源程序,在键盘上按一个键,将从AL返回的ASCIl码值显示出来,如果按下 ESC键则程序退出。请调用书中的HTOASC子程序。
时间: 2024-05-03 10:19:42 浏览: 91
以下是汇编语言的源代码实现:
```
.model small
.stack 100h
.data
msg1 db "Press any key to get ASCII code, ESC to exit$"
msg2 db "ASCII code: $"
ascii db ?
.code
main proc
mov ax, @data
mov ds, ax
lea dx, msg1
mov ah, 09h
int 21h
start:
mov ah, 00h
int 16h
jz exit
mov ascii, al
lea dx, msg2
mov ah, 09h
int 21h
call HTOASC
jmp start
exit:
mov ah, 4ch
int 21h
main endp
end main
```
解释一下代码:
首先,我们定义了一个字符串 `msg1`,它是程序运行时显示在屏幕上的提示信息。然后定义了两个变量 `msg2` 和 `ascii`,分别用于显示 ASCII 码和存储用户输入的 ASCII 码值。
在 `main` 过程中,我们将数据段的地址赋值给 `ds` 寄存器,然后调用 DOS 的中断 21h,显示提示信息 `msg1`。
接着,我们使用 `int 16h` 中断读取用户从键盘输入的字符,并将其存储在 `al` 寄存器中。如果用户按下 ESC 键,`int 16h` 中断会返回 0,此时跳转到 `exit` 标签处,程序退出。否则,我们将 `al` 寄存器中的 ASCII 码存储在 `ascii` 变量中。
然后,我们再次调用 DOS 的中断 21h,显示提示信息 `msg2`。接下来,我们调用书中给出的 `HTOASC` 子程序,将 ASCII 码转换为字符串并显示在屏幕上。
最后,我们跳转回 `start` 标签处,等待用户继续输入。
阅读全文