⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xtask_1.asm

📁 一些汇编语言的实验设计源代码
💻 ASM
字号:
;XTask_1.asm   习题3_3 选作题第1题
;1.	在数据段的str开始的单元中存放以NULL(ASCII码0)结束的一个英文句子,
;试编程统计单词个数存于words单元中。(单词间以空格和逗号分隔);

data	segment	para
	;str1	db	' one, two,     three, four   good,,,morning ',0
	str1	db	'long long ago, there lived a king, the king asked the artist to draw'
			db	' a horse for him ',0
	words	dw	0
data	ends
ss_seg	segment	stack
	db	256	dup(?)
ss_seg	ends
code	segment
	assume	cs:code,ds:data,ss:ss_seg
	main	proc	far
			push	ds
			xor		ax, ax
			push	ax
			mov		ax, data
			mov		ds, ax
			mov		cx, 0		;用cx存放单词数
			lea		si, str1
			mov		bl, ' '		;bl总保存当前字符的前一个字符
			cld
	main_3:	lodsb
			and		al, al		;判断al是否为结束符0
			jz		main_1
			cmp		al, ' '		;比较是否是空格
			jnz		main_2
	main_4:	cmp		bl, ' '		;比较前一个字符是否为空格,不是则此此空格不能算一个单词
			jz		main_5
			cmp		bl, ','		;比较前一个字符是否为逗号,如果是则此空格也不能算一个单词
			jz		main_5
			inc		cx			;只有当前字符为' '或','而且前一个字符为有效字符时,才对单词数加1
			jmp		main_5
	main_2:	cmp		al, ','		;比较是否是','号		
			jz		main_4
	main_5:	mov		bl, al		;进入这里表明此时al中内容不是0,' ', ','三种符号,保存al到bl
			jmp		main_3		
	main_1:	cmp		bl, ' '		;判断结束符前面是否为单词,还是为一个' '或','
			jz		main_6		
			cmp		bl, ','
			jz		main_6
			inc		cx			;若结束符前是一个有效字符,那么单词数应该加1
	main_6:	mov		words, cx
			ret
	main	endp
code	ends
	end		main

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -