2016-01-01 2 views
0

Я хочу суммировать цифры числа. Вот почему я написал следующие программы:сумма цифр в программе сборки

.MODEL SMALL 
.STACK 100H 
.DATA 
MSG DB 0AH,0DH,'THE SUM OF ' 
C1 DB ?,'AND' 
C2 DB ?,'IS' 
SUM DB ?,'$' 
.CODE 
MAIN PROC 
MOV AX, @DATA 
MOV DS,AX 

MOV AH,2 
MOV DL,'?' 
INT 21H 

MOV AH,1 
INT 21H 
MOV C1,AL 
INT 21H 
MOV C2,AL 

ADD AL,C1 
SUB AL,30H 
MOV SUM,AL 

LEA DX,MSG 
MOV AH,9 
INT 21H 

MOV AH,4CH 
INT 21H 

MAIN ENDP 
END MAIN 

Я могу указать число, например 27. Но на экране отображается следующая строка.

"THe sum of " 

Я хочу, чтобы показать следующую строку:

"The sum of 2 and 7 is 9" 

Как я могу это сделать? Любые советы очень помогают.

+0

После печати части «2 и 7 is» преобразуйте их из строк ASCII в двоичные целые числа (например, вызовите или выполните собственный strtol). Добавьте эти значения, верните результат в строку. –

ответ

1

Ваша программа должна работать должным образом, если вы придерживаетесь этих небольших номеров.
Я бы, однако рекомендовать следующие изменения:

  • Ставьте пробелы до и после слов и и является для лучшего макета.
  • Не использовать ? знак вопроса. Возможно, ваш ассемблер решил сохранить такие байты в разделе неинициализированных данных, нарушив порядок.

.

C1 DB 'x AND ' 
C2 DB 'x IS ' 
SUM DB 'x$' 
Смежные вопросы