编写一个源程序,在键盘上按一个键,将其返回的ASCII码值显示出来,如果按下退格键(对应ASCII码是08H)则程序退出。请调用书中的HTOASC子程序
时间: 2024-04-30 17:19:33 浏览: 15
以下是使用汇编语言编写的程序:
```
assume cs:code,ds:data
data segment
key db ?
data ends
code segment
start:
mov ax, data
mov ds, ax ; 初始化数据段寄存器
mov ah, 00h ; 设置键盘中断
int 16h
cmp ah, 08h ; 如果按下退格键,则退出程序
je exit
mov key, ah ; 将输入的键码保存到key变量中
push ax
call HTOASC ; 调用HTOASC子程序将十六进制码转换为ASCII码
pop ax
mov dl, al ; 将ASCII码保存到dl寄存器中
mov ah, 02h ; 显示字符
int 21h
jmp start ; 循环读取键盘输入
exit:
mov ah, 4ch ; 退出程序
int 21h
code ends
end start
```
这个程序会循环读取键盘输入,如果按下退格键(ASCII码为08H),则程序会退出。否则,程序会将输入的键码转换成ASCII码,并将其显示在屏幕上。在转换过程中,调用了书中提供的HTOASC子程序。
相关问题
编写一个源程序,在键盘上按一个键,将其返回的ASCII码值显示出来,如果按下退格键(对应ASCII码是08H)则程序退出。请调用书中的HTOASC子程序。
以下是使用汇编语言编写的程序:
```
.model small
.stack 100h
.data
message db 'Press any key to get its ASCII code, press Backspace to exit.', '$'
.code
main proc
mov ax, @data
mov ds, ax
mov ah, 09h ; 显示提示信息
mov dx, offset message
int 21h
start:
mov ah, 00h ; 等待键盘输入
int 16h
cmp al, 08h ; 判断是否按下退格键
je exit
push ax ; 保存输入的键的ASCII码值
call HTOASC ; 转换成ASCII码并显示
pop ax ; 恢复输入的键的ASCII码值
jmp start ; 继续等待键盘输入
exit:
mov ah, 4ch ; 退出程序
int 21h
main endp
end main
```
程序流程如下:
1. 显示提示信息。
2. 进入循环,等待键盘输入。
3. 判断输入的键是否是退格键,如果是则退出程序。
4. 将输入的键的ASCII码值保存,并调用HTOASC子程序将其转换成ASCII码并显示。
5. 继续等待键盘输入。
需要注意的是,在使用HTOASC子程序时,需要将键的ASCII码值压入栈中,而在返回时也需要将其从栈中弹出。
5.7 编写一个源程序,在键盘上按一个键,将其返回的ASCII码值显示出来,如果按下退格键(对应ASCII码是08H)则程序退出。请调用书中的HTOASC子程序。
下面是一个用汇编语言编写的程序,可以实现在键盘上按下一个键并显示其ASCII码值,如果按下退格键则程序退出。
```
.MODEL SMALL
.STACK 100H
.DATA
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
START:
;等待用户按下一个键
MOV AH, 00H
INT 16H
;如果按下的是退格键(ASCII码值为08H),则退出程序
CMP AL, 08H
JE EXIT
;转换ASCII码值为十六进制字符串并显示
PUSH AX
CALL HTOASC
MOV AH, 09H
INT 21H
POP AX
JMP START
EXIT:
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
```
以上程序中调用了书中提供的HTOASC子程序,可以将一个字节的值转换成两个十六进制字符表示的字符串。在显示时,使用了INT 21H中断调用的09H功能,可以显示字符串。程序在用户按下退格键时通过INT 21H中断调用的4CH功能退出运行。