汇编实验:统计数字个数
题目
输入一个字符串,统计数字出现的次数。
算法流程图
代码
data segment
buffer db 5 dup(?)
input db 'please input a number <= 5 digits', 0ah, 0dh, '$'
outOfBound db 0ah, 0dh, 'error: more than 5 digits',0ah, 0dh, '$'
notANum db 0ah, 0dh, 'error: not a number',0ah, 0dh,'$'
data ends
code segment
assume ds:data, cs:code
start:
mov bl, 0
l4:
mov ah, 01h
int 21h
cmp al, 20h ; 空格结束输入
je count
cmp al, byte ptr '0'
jb l4
cmp al, byte ptr '9'
ja l4
inc bl
jmp l4
count:
mov ah, 0
mov al, bl ; 将要输出的数字
or ax, ax
jz zero ; 是零则直接输出
mov bx, -1 ; 栈底
push bx
mov bx, 10 ; 除数
l5:
xor dx, dx ; 余数清零
div bx
mov cx , ax ;商
or cx , dx
jz print ; 商与余数全零则结束
push dx
jmp l5
zero:
mov dl , 30h
mov ah , 02h
int 21h
jmp exit
print:
pop dx
cmp dx , -1
je exit
add dx , 30h
mov ah , 02h
int 21h
jmp print
exit:
mov ah, 08h ;结束时停留
int 21h
mov ah , 4ch ;返回DOS
int 21h
code ends
end start
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!