1 .8086 2 .model small 3 .stack 100 4 .data 5 msg db ‘daaaauudc321sdsada‘,0 6 .code 7 ;功能:统计字符串中小写字母的个数 8 ;入口DS:DX 9 ;出口BX 10 COUNT PROC 11 push si 12 push ax ;保存现场 13 mov bx,0 ;bx计数 14 mov si,dx ;si指针 15 mov al,[si] 16 .while al != 0 17 .if al >= ‘a‘ && al <= ‘z‘ 18 inc bx 19 .endif 20 inc si 21 mov al,[si] 22 .endw 23 pop ax 24 pop si ;恢复现场 25 ret 26 COUNT ENDP 27 ;功能:输出AX 28 ;入口:AX 29 DISAX PROC 30 push bx 31 push cx 32 push dx ;保存现场 33 or ax,ax 34 jz _0_ ;判断是否为0 35 mov bx,10 ;bx作为除数 36 again: xor dx,dx ;清零,必须步骤 37 div bx 38 mov cx,ax ;cx为商 39 or cx,dx ;dx为余数 40 jz _e_ ;如果商和余数都为0,则结束 41 push dx ;保存余数 42 call again ;递归调用 43 pop dx ;恢复余数 44 add dl,‘0‘ 45 jmp _1_ 46 _0_: mov dl,‘0‘ 47 _1_: mov ah,2 48 int 21h 49 _e_: pop dx 50 pop cx 51 pop bx ;恢复现场 52 ret 53 DISAX ENDP 54 .startup 55 lea dx,msg 56 call COUNT 57 mov ax,bx 58 call DISAX 59 .exit 60 end
时间: 2024-10-10 22:42:08