Как напечатать целое число, хранящееся в переменной - PullRequest
0 голосов
/ 05 ноября 2018

Итак, у меня есть программа в сборке 8086, которая позволяет пользователю вводить 2 цифры, сохранять их в переменной и затем распечатывать число:

data segment

    broj db ?


ends

stack segment

    dw 128 dup(0)

ends

code segment

    mov ax, data
    mov ds, ax
    mov es, ax

    mov ah, 1h
    int 21h

    sub al, 48d
    mov bl, 10d
    mul bl

    mov broj, al

    mov ah, 1h
    int 21h
    sub al, 48d
    add broj, al

    mov dl, broj
    sub dl, 48d
    mov ah, 2h
    int 21h

    mov ax, 4c00h
    int 21h

ends

Однако всякий раз, когда я ввожу число, например, 21, оно не дает мне номер, а дает код ASCII для этого значения.

Кто-нибудь может помочь?!

1 Ответ

0 голосов
/ 08 ноября 2018

Однако всякий раз, когда я ввожу число, например, 21, оно не дает мне номер, а дает код ASCII для этого значения.

Если вы вводите (вводите) свою программу числом, состоящим из 2 цифр, то вам придется также печатать 2 цифры! В настоящее время ваш код содержит только одну функцию вывода символов.

  • Сначала разделите число в broj на 10, чтобы получить частное (в AL) и остаток (в AH).
  • Преобразовать частное в символ (Добавить 48) и распечатать его.
  • Преобразовать остаток в символ (Добавить 48) и распечатать его.

Пример:

mov al, broj
mov ah, 0
mov bl, 10
div bl
add ax, "00"
mov dx, ax
mov ah, 02h
int 21h
mov dl, dh
mov ah, 02h
int 21h
...