汇编语言:统计某个单词在英文句子中的出现次数

汇编语言:统计某个单词在英文句子中的出现次数

题目要求

设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一段程序,查单词SUN在该文中出现的次数,并输出显示出现的次数。

运行截图

编程平台

Masm for Windows 集成实验环境 2012.5

代码实现

DATAS SEGMENT
    ENG DB 'SSUNABCSQOSUNSUNIUM$'
    count DW $-ENG
    hint DB 'There is a paragraph in English: $'
    result DB 'The number of times the word SUN appears in the text: $'
    break DB 13,10,'$'
DATAS ENDS

STACKS SEGMENT STACK
    DB 200H DUP(?)
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
MAIN PROC
    MOV AX,DATAS
    MOV DS,AX
    
    LEA DX,hint;输出原始数据前提示
    MOV AH,9H
    INT 21H
    LEA DX,ENG;输出原始数据
    MOV AH,9H
    INT 21H
    
    LEA DX,break;换行
    MOV AH,9H
    INT 21H
    
    LEA DX,result;输出结果前提示
    MOV AH,9H
    INT 21H
    
    CALL COUNTSUM;计数SUN
    
    CALL OUTPUTDATA;输出统计结果
    
    MOV AH,4CH
    INT 21H
MAIN ENDP
;子程序
;功能:统计单词SUN在该文中出现的次数。
;入口参数:变量ENG存放一段英文字符。
COUNTSUM PROC
	MOV AX,0;记录SUN出现的个数
	LEA BX,ENG
	MOV CX,count;遍历次数

lop:
    MOV DL,[BX]
    CMP DL,'S';是否为S
    JE nextU
    INC BX
    LOOP lop
    JMP finish
nextU:
    DEC CX
    CMP CX,0;是否遍历结束
    JE finish
    INC BX    
	MOV DL,[BX]
	CMP DL,'U';是否为U
	JE nextN
	LOOP lop;重新开始寻找S
	JMP finish
nextN:
	DEC CX
    CMP CX,0;是否遍历结束
    JE finish
    INC BX    
	MOV DL,[BX]
	CMP DL,'N';是否为N
	JE addSUN
	LOOP lop;重新开始寻找S
	JMP finish
addSUN:
    INC AX;SUN数量加1
    INC BX
    LOOP lop
	
finish:
	RET
COUNTSUM ENDP
;子程序
;功能:以十进制形式输出0和正整数。
;入口参数:AX存放要输出的数据。
OUTPUTDATA PROC
    MOV SI,10;除数
    MOV DI,0;统计要输出的位数
    
lop1:
    MOV DX,0
    DIV SI
    PUSH DX;余数入栈
    INC DI
    CMP AX,0
    JNE lop1
    
lop2:
	POP DX
	ADD DL,30H;转换成ASCII码
	MOV AH,2H
	INT 21H
	DEC DI
	CMP DI,0
	JNE lop2

	RET
OUTPUTDATA ENDP
CODES ENDS
    END MAIN

如果文章内容出错或者您有更好的解决方法,欢迎到评论区指正和讨论!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值