利用汇编dos来计算字符串中某个字符出现次数。
时间: 2023-11-12 22:40:23 浏览: 83
ASCII.rar_ASCII的形式_ascii_字符串_汇编语言
5星 · 资源好评率100%
好的,我来解答你的问题。
首先,我们需要获取用户输入的字符串和要查找的字符。可以使用DOS中的INT 21H功能调用来实现。例如,使用功能码0AH来读取字符串,使用功能码01H来读取单个字符。
然后,我们需要使用循环遍历整个字符串,对于每个字符,如果它与要查找的字符相同,则增加计数器的值。
最后,我们可以将计数器的值输出到屏幕上,告诉用户该字符在字符串中出现的次数。
下面是一份示例代码,仅供参考:
```
.MODEL SMALL
.STACK 100H
.DATA
msg DB 'Enter a string: $'
input DB 80
buffer DB 80, 0
charMsg DB 'Enter a character to count: $'
charInput DB 1
charBuffer DB 1, 0
countMsg DB 'The character occurs %d times.$'
count DW ?
.CODE
MAIN PROC
; Display prompt for string input
MOV AH, 09H
LEA DX, msg
INT 21H
; Read user input string
MOV AH, 0AH
LEA DX, input
INT 21H
; Display prompt for character input
MOV AH, 09H
LEA DX, charMsg
INT 21H
; Read user input character
MOV AH, 01H
INT 21H
MOV BL, AL
; Loop through string and count occurrences of character
MOV CX, WORD PTR [input+1]
MOV SI, OFFSET buffer
MOV AX, 0
MOV DL, BL
countChar:
LODSB
CMP AL, 0DH ; Check for end of input string
JE done
CMP AL, DL ; Compare character with input character
JNE notMatch
INC AX ; Increment count if characters match
notMatch:
LOOP countChar
done:
; Display count of character occurrences
MOV count, AX
MOV AH, 09H
LEA DX, countMsg
INT 21H
MOV AX, count
MOV CX, 1
MOV BX, 10
countLoop:
XOR DX, DX
DIV BX
PUSH DX
INC CX
CMP AX, 0
JNE countLoop
countPrint:
POP DX
ADD DL, '0'
MOV AH, 02H
INT 21H
LOOP countPrint
; Terminate program
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
```
这份代码使用了很多汇编语言的基本概念,例如循环、比较和递增等。如果你对这些概念不太熟悉,建议先学习一些基础的汇编教程。
阅读全文