编写一个程序,它先通过DOS调用接受一个字符串(长度255以内),然后通过DOS调用显示其数字的个数、英文字母的个数、以及字符串的长度 例如: 输入:ab&@cd1234DD&@ 输出:4 6 14
时间: 2024-10-25 14:08:54 浏览: 21
tj.rar_visual c_数字字符个数
这是一个基本的DOS环境下用汇编语言编写的程序,使用INT 21H系统调用来接收键盘输入、显示消息以及处理字符串内容。下面是一个简化版的示例:
```assembly
; 定义变量和常量
.MODEL small
.STACK 100h
.DATA
buffer DB 256 dup(?) ; 字符缓冲区
prompt DB '请输入字符串:$'
digit_msg DB '数字个数: $'
letter_msg DB '字母个数: $'
length_msg DB '字符串长度: $'
.CODE
main proc
mov ax, @data
mov ds, ax
; 显示提示信息
lea dx, prompt
mov ah, 9
int 21h
; 读取用户输入的字符串
mov ah, 0Ah
lea dx, buffer
int 21h
mov si, 0
count_loop:
lodsb ; 从缓冲区读取一个字符
cmp al, 0 ; 判断是否到达字符串结尾
je end_of_string
cmp al, '0' ; 判断是否是数字
jl check_letter
cmp al, '9'
jle increment_digit
check_letter:
cmp al, 'A' or al, 'a' ; 判断是否是字母
jl not_alphanumeric
inc byte [digit_count] ; 数字计数加一
jmp continue_loop
not_alphanumeric:
inc byte [letter_count] ; 英文字母计数加一
continue_loop:
add si, 1
jmp count_loop
end_of_string:
; 计算字符串长度
mov byte [length], si
; 显示结果
lea dx, digit_msg
mov ah, 9
int 21h
mov dl, digit_count
add dl, '0'
mov ah, 2
int 21h
lea dx, letter_msg
mov ah, 9
int 21h
mov dl, letter_count
add dl, '0'
mov ah, 2
int 21h
lea dx, length_msg
mov ah, 9
int 21h
mov dl, length
add dl, '0'
mov ah, 2
int 21h
mov ah, 4Ch
int 21h
main endp
end main
```
当运行此程序并输入 "ab&@cd1234DD&@" 类似的字符串时,它会分别输出 "4"(数字)、"6"(英文字母)和 "14"(字符串长度)。
阅读全文