data segment
STO db 100 dup(?)
Tip db 'Please enter a sentence include SUN:',13,10,'$'
SUN db 13,10,'SUN'
NUM db 4 dup(?),'$'
data ends
stack segment stack
str dw 256 dup(?)
stack ends
code segment
main proc far
assume ds:data,cs:code,ss:stack
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
lea dx,Tip
mov ah,9
int 21h
lea dx,STO
mov [STO],100
mov ah,0ah
int 21h
mov cx,word ptr[STO+1]
mov ax,0
mov bx,2
L1:
cmp [STO+bx],'S'
je L2
inc bx
loop L1
jmp next
L2:
inc bx
cmp [STO+bx],'U'
je L3
dec cx
jmp L5
L3:
inc bx
cmp [STO+bx],'N'
je L4
sub cx,2
jmp L5
L4:
inc ax
L5:inc bx
dec cx
jnz L1
next:
sub ax,2
mov ch,4
mov cl,4
lea bx,NUM
L6:
rol ax,cl
mov dx,ax
and dx,0fH
add dl,30h
cmp dl,39h
jle L7
add dl,07h
L7:
mov [bx],dl
inc bx
dec ch
jnz L6
L8:
lea dx,SUN
mov ah,9
int 21h
ret
main endp
code ends
end start