Почему моя сборка выводится в буквенном положении? (1+1= б)
Я использую ТАСМ. Это простая программа, которая считывает вводимые пользователем данные и складывает два числа. Однако мой вывод отображает буквы в соответствии с их положением букв.
Например, 3+5=h (8) Я хочу, чтобы он отображался целым числом.
.model small
.stack 100h
.data
input db 13,10,"Enter a number : ","$"
output db 13,10,"The sum is ","$"
.code
main proc
mov ax,@data
mov ds,ax
;INPUT 1
mov ah,9
mov dx, offset input
int 21h
mov ah,1
int 21h
mov bl,al
;INPUT 2
mov ah,9
mov dx, offset input
int 21h
mov ah,1
int 21h
add bl,al
;OUTPUT DISPLAY
mov ah,9
mov dx,offset output
int 21h
mov ah,2
mov dl,bl
int 21h
;END
mov ax,4c00h
int 21h
main endp
end main
1 ответ
Решение
Ваши входные цифры представляют собой символы ASCII, поэтому, например, "1" на самом деле 31h. Итак, когда вы вычисляете 1+1, вы получаете 31h+31h=62h, что является символом ASCII 'b'.
Чтобы преобразовать введенные вами цифры в их эквивалентные целочисленные значения, вам нужно вычесть "0" (30 часов).
И наоборот, для вывода целых цифр в виде символов ASCII вам нужно будет добавить "0".