Другие языки программирования и технологии

Помогите написать задание по Ассемблеру:

Вариант 1
Пользователь вводит строку, содержащую цифры и другие символы. Нужно найти сумму цифр в этой строке и вывести на экран в виде символа ASCII.
Дополнительно: вывести сумму на экран в виде числа.
> вывести на экран в виде символа ASCII
А если сумма цифр окажется меньше 32 или больше 255?

.model small
.stack 100h

.data
Prompt db 'Введите строку: ', 13, 10, 36
Result1 db 13, 10, 'ASCII символ: $'
Message1 db 'управляющий код$'
Message2 db 'код больше 255$'
SummMess db 13, 10, 'Сумма: $'
QuitMess db 13, 10, 10, 'Для завершения работы нажмите любую клавишу... $'
String db 80, ?,80 dup (?)

.code
N173270056:
    mov ax, @data
    mov ds, ax
    mov dx, offset Prompt
    mov ah, 9
    int 21h
    mov dx, offset String
    inc ah
    int 21h
    dec ah
    mov dx, offset Result1
    int 21h

    xor bx, bx
    mov cl, String + 1
    mov ch, bl
    jcxz Empty
    mov ah, bl
    mov si, offset String + 2
Loop1:
    lodsb
    sub al, 30h
    jb Next
    cmp al, 9
    ja Next
    add bx, ax
Next:
    loop Loop1

Empty:
    mov dx, offset Message1
    mov ah, 9
    cmp bx, 32
    jb Print_Res
    mov dx, offset Message2
    test bh, bh
    jnz Print_Res
    mov dl, bl
    mov ah, 2
Print_Res:
    int 21h
   
    mov ah, 9
    mov dx, offset SummMess
    int 21h
    mov ax, bx
    xor cx, cx
    mov bx, 10
Prepare:
    xor dx, dx
    div bx
    or dl, 30h
    push dx
    inc cx
    test ax, ax
    jnz Prepare
    mov ah, 2
Print_Num:
    pop dx
    int 21h
    loop Print_Num

    mov ah, 9
    mov dx, offset QuitMess
    int 21h
    mov ax, 0C08h
    int 21h
    mov ah, 4Ch
    int 21h
   
    end N173270056

Александр Ханжин
Александр Ханжин
51 590
Лучший ответ
Эрмек Аракеев Большое вам спасибо! Выручили) Было бы замечательно с вами поговорить как нибудь, например:... хотя бы сообщениями. Еще раз выражаю огромную благодарность за помощь!