📄 xtask_1.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 + -