将键盘输入的数字和大写字母的ASCII码转换为十六进制数,存放在TAB开始的位置,‘$’结束。 DATA SEGMENT ORG 2000H TAB DB 100 DUP(?) DATA EDNS 程序编写与程序调试、运行结果要求完整,数据正确。
时间: 2024-03-27 14:35:52 浏览: 59
ASCII码.docx
好的,这是一个将键盘输入的数字和大写字母的ASCII码转换为十六进制数的程序,并将结果存放在TAB开始的位置,以‘$’结束。
首先,我们需要定义一个数据段,用于存储输入和输出的数据。在这个例子中,我们将使用TAB段来存储输出的结果。代码如下:
```
DATA SEGMENT
TAB DB 100 DUP(?)
DATA ENDS
```
然后,我们需要编写一个主程序,用于读取键盘输入并将其转换为十六进制数。在这个例子中,我们将使用INT 21H来读取键盘输入,并使用ASCII码转换公式将其转换为十六进制数。代码如下:
```
MAIN PROC
MOV AX, @DATA
MOV DS, AX
; 初始化计数器和指针
MOV CX, 100
LEA SI, TAB
; 循环读取键盘输入
READ_INPUT:
MOV AH, 01H
INT 21H
; 如果输入为回车,则退出循环
CMP AL, 0DH
JE END_INPUT
; 如果输入为数字或大写字母,则转换为十六进制数并存储到TAB中
CMP AL, '0'
JB SKIP
CMP AL, '9'
JBE CONVERT
CMP AL, 'A'
JB SKIP
CMP AL, 'F'
JBE CONVERT
; 跳过无效输入
SKIP:
JMP READ_INPUT
; 转换为十六进制数
CONVERT:
SUB AL, 30H
CMP AL, 9
JBE STORE_HEX
SUB AL, 7
STORE_HEX:
MOV AH, AL
AND AH, 0FH
MOV AL, AH
MOV [SI], AL
INC SI
DEC CX
; 如果计数器为0,则退出循环
CMP CX, 0
JE END_INPUT
JMP READ_INPUT
; 结束输入
END_INPUT:
MOV [SI], '$'
; 程序结束
MOV AH, 4CH
INT 21H
MAIN ENDP
```
在主程序中,我们首先将数据段的地址加载到AX寄存器中,并将其赋值给DS寄存器。然后,我们初始化计数器和指针,使用INT 21H循环读取键盘输入。如果输入为回车,则退出循环;如果输入为数字或大写字母,则将其转换为十六进制数并存储到TAB中。最后,我们在TAB的结尾处添加一个‘$’作为结束符,并使用INT 21H结束程序。
以上就是将键盘输入的数字和大写字母的ASCII码转换为十六进制数并存储在TAB开始的位置的程序。请注意,程序编写和调试需要根据具体的开发环境进行。
阅读全文