使用8086汇编语言,输入一个不超过30个字符的字符串,将该字符串中的所有数字字符剔除,然后显示输出;
时间: 2023-06-11 18:07:14 浏览: 157
下面是使用8086汇编语言实现的代码,可以实现输入一个不超过30个字符的字符串,将其中的数字字符剔除,并输出剩余的字符。
```
data segment
buffer db 31, 0
digits db '0123456789'
data ends
code segment
assume cs:code, ds:data
start:
mov ax, data
mov ds, ax
; 输入字符串
lea dx, buffer
mov ah, 0Ah
int 21h
; 将数字字符剔除
lea si, buffer+2
lea di, buffer+2
mov cl, buffer+1
mov ch, 0
mov bl, digits
remove_digits:
lodsb
cmp al, 0Dh
je display
mov bh, 0
mov cx, 10
check_digit:
cmp al, [bl+bh]
je is_digit
add bh, 1
loop check_digit
mov [di], al
inc di
jmp remove_digits
is_digit:
jmp remove_digits
; 显示字符串
display:
mov dx, di
sub dx, si
mov ah, 09h
int 21h
; 程序结束
mov ah, 4Ch
int 21h
code ends
end start
```
代码中使用了`int 21h`来实现输入和输出操作。具体来说,`mov ah, 0Ah`表示调用输入函数,`mov ah, 09h`表示调用输出函数。
在剔除数字字符的部分,我们使用了双重循环来检查每个字符是否为数字字符。具体来说,我们首先使用`lodsb`指令读取一个字符,然后与`0Dh`比较,如果是字符串结束符则跳出循环并显示输出。否则,我们使用双重循环检查该字符是否为数字字符。如果是数字字符,则跳过该字符,否则将该字符存储到目标字符串中。最后,我们使用`int 21h`中断来输出目标字符串。
阅读全文