Спасибо, я вроде уже сам разобрался. Помещаю свой код полностью, вдруг кому понадобится. Правда вариант ещё черновой, но в целом работает и выводит, что надо.
| Код | .model small .stack 100h .data max db 100 len db ? strok db 100 dup('$') result db "Сумма цифр=$" .code
input proc mov dx,offset max mov ah,0Ah int 21h ret input endp
summa proc mov si,offset strok mov dx,si dec dx mov cl,len add si,cx mov cx,si xor bx,bx metka: xor ax,ax std lodsb push dx sub al,30h cmp al,9 jbe AddNumb metka2: pop dx cmp si,dx je exit jmp metka AddNumb: add bx,ax jmp metka2 ret summa endp
output proc pushf push ax push bx push cx push dx push si xor cx, cx xor bx, bx push ax mov bl, 10 cycl1: xor dx,dx div bx add dl, 30h push dx inc cl cmp ax,0 JZ next jmp cycl1 next: mov ah, 9h lea dx, result int 21h xor ax,ax xor dx,dx mov ah, 2h cycl2: pop dx int 21h loop cycl2 pop ax pop si pop dx pop cx pop bx pop ax POPF ret output endp
main: mov ax,@data mov ds,ax mov es,ax call input mov dl, 10 mov ah, 2h int 21h mov dl, 13 mov ah, 2h int 21h call summa exit: xor ax,ax mov ax,bx call output mov ah, 1h int 21h mov ax,4ch int 21h end main
|
|