Например на ассемблере в синтаксисе fasm под дос:
org 100hmov si,stringcldmov cx,16xor ax,axmov ah,02hxor bx,bxm1:mov dl,[si]push cxmov cx,10mov di,numm2:cmp dl,[di]jnz m3;int 21hsub dl,30hadd bl,dlm3: inc diloop m2pop cxinc siloop m1xor ax,axmov al,blmov bx,10xor cx,cxm4:xor dx,dxdiv bxpush dxinc cxcmp ax,0jnz m4m5:pop dxadd dx,30hmov ah,2hint 21hdec cxjnz m5mov ah,01hint 21hmov ax,4C00hint 21hstring db "1nr112t3brj9me18",0num db "0123456789",0
Для строки "1nr112t3brj9me18" сумма будет равна 26.
---
var s:string;
i,c,sum:integer;
begin
readln(s);
sum:= 0;
for i:=1 to Length(s) do
if (s[i]>='0')and(s[i]<='9') then
begin
c:=ord(s[i])-48;
sum:=sum+c;
end;
writeln(sum);
end.
Например на ассемблере в синтаксисе fasm под дос:
org 100h
mov si,string
cld
mov cx,16
xor ax,ax
mov ah,02h
xor bx,bx
m1:
mov dl,[si]
push cx
mov cx,10
mov di,num
m2:
cmp dl,[di]
jnz m3
;int 21h
sub dl,30h
add bl,dl
m3: inc di
loop m2
pop cx
inc si
loop m1
xor ax,ax
mov al,bl
mov bx,10
xor cx,cx
m4:
xor dx,dx
div bx
push dx
inc cx
cmp ax,0
jnz m4
m5:
pop dx
add dx,30h
mov ah,2h
int 21h
dec cx
jnz m5
mov ah,01h
int 21h
mov ax,4C00h
int 21h
string db "1nr112t3brj9me18",0
num db "0123456789",0
Для строки "1nr112t3brj9me18" сумма будет равна 26.