利用汇编语言16位8086/8088指令系统编写程序实现1、从键盘输入一个长度在10字符以内的字符串,并保存在缓冲区2、检测并删除字符串中的数字字符,将字符串中所有小写字母改为大写字母3、将处理后的字符串在新的一行显示,若字符串为空串则显示 ‘?’。 测试数据为(1)HelloWorld(2)Mike 1989(3)9999
时间: 2024-02-03 15:12:43 浏览: 22
下面是汇编语言实现的程序代码:
```assembly
; 字符串处理程序
.MODEL SMALL
.STACK 100H
.DATA
; 定义输入缓冲区
BUFFER DB 10, ?, 10 DUP ('$')
.CODE
MAIN PROC
; 初始化数据段寄存器
MOV AX, @DATA
MOV DS, AX
; 读取用户输入的字符串
LEA DX, BUFFER
MOV AH, 0AH
INT 21H
; 检查字符串是否为空串
CMP BYTE PTR [BUFFER+2], 0
JE EMPTY_STRING
; 处理字符串中的数字字符
LEA SI, [BUFFER+2]
MOV CX, BYTE PTR [BUFFER+1]
MOV BL, '0'
MOV BH, '9'
LOOP1:
CMP BYTE PTR [SI], BL
JB SKIP_CHAR
CMP BYTE PTR [SI], BH
JA SKIP_CHAR
MOV BYTE PTR [SI], ' '
SKIP_CHAR:
INC SI
LOOP LOOP1
; 将字符串中的小写字母改为大写字母
LEA SI, [BUFFER+2]
MOV CX, BYTE PTR [BUFFER+1]
LOOP2:
CMP BYTE PTR [SI], 'a'
JB SKIP_CHAR2
CMP BYTE PTR [SI], 'z'
JA SKIP_CHAR2
SUB BYTE PTR [SI], 32
SKIP_CHAR2:
INC SI
LOOP LOOP2
; 显示处理后的字符串
LEA DX, [BUFFER+2]
MOV AH, 09H
INT 21H
; 显示换行符
MOV DL, 0DH
MOV AH, 02H
INT 21H
MOV DL, 0AH
INT 21H
; 退出程序
MOV AH, 4CH
INT 21H
; 空串处理
EMPTY_STRING:
; 显示问号
MOV DL, '?'
MOV AH, 02H
INT 21H
; 显示换行符
MOV DL, 0DH
MOV AH, 02H
INT 21H
MOV DL, 0AH
INT 21H
; 退出程序
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
```
程序运行后,会提示用户输入一个长度在10字符以内的字符串。如果用户输入的字符串为空串,则会显示问号。如果用户输入的字符串非空,则会将其中的数字字符删除,并且将小写字母改为大写字母,最后在新的一行显示处理后的字符串。
测试数据结果如下:
输入:HelloWorld
输出:HELLOWORLD
输入:Mike 1989
输出:MIKE
输入:9999
输出:?