Как сделать чтобы сумма чисел была больше 10? - Assembler

Узнай цену своей работы

Формулировка задачи:

data segment
data ends
code segment
start:  
assume cs:code, ds:data
        mov     ax,    data
        mov     ds,     ax
 
    mov     ah,     01h
        int     21h
        mov     bl,al

    mov     ah,     01h
        int     21h
        mov     bh,al
        mov     al,     bl
        add     al,     bl
        sub     al,     bh
        add     al,     1
 
        ; - вывод символа результата вычисления
    mov ah,02
    int 21h
    mov dl, dh
    mov dl, '0'
    int 21h
        ;ожидание нажатия любой клавиши
        mov     ah,     08h
        int     21h
        or      al,     al
mov     ah,     08h     ;то считать расширенный символ
int     21h             ;очистив тем самым буфер клавиатуры
;конец программы
mov     ax,     4C00h
int     21h
code ends 
end start
При вводе чисел '7' и '1' выводит символ '>'. Условие задачи: Вычислить y = 2a - b + 1

Решение задачи: «Как сделать чтобы сумма чисел была больше 10?»

textual
Листинг программы
data segment
        a       db      ?
        b       db      ?
        y       db      ?
        Message db      'y=', '$'
data ends
assume cs:code, ds:data
code segment
start: 
        mov     ax,     data
        mov     ds,     ax
 
    mov ah, 01
    int 21h         
    mov a, al
    sub a, '0'
    
    mov ah, 01
    int 21h         
    mov b, al
    sub b, '0'
 
        mov     al,    a
        add     al,    a
        sub     al,    b
        add     al,    1
        mov     y,    al
        ;вывод сообщения
        mov     ah,     09h
        lea     dx,     Message
        int     21h
        ;вывод результата
        ; - преобразование числа в символ
 
    mov     al,     y
        add     al,     '0'
        ; - вывод символа результата вычисления
        mov     ah,     02h
        mov     dl,     al
        int     21h
      
           
 
        ;конец программы
        mov     ax,     4C00h
        int     21h
code ends
 
end start

Объяснение кода листинга программы

  1. Переменные a, b и y используются для хранения чисел и промежуточных результатов.
  2. Код начинается с загрузки сегмента данных в регистр AX с помощью команды mov ax, data.
  3. Затем регистр DS устанавливается в сегмент данных с помощью команды mov ds, ax.
  4. Код выполняет ввод двух чисел с помощью команды mov ah, 01, int 21h. Результат сохраняется в регистрах AX и BX.
  5. Затем числа приводятся к строкам с помощью команд mov a, al и mov b, al, sub b, '0'.
  6. Результат вычисления суммы чисел сохраняется в регистре AX с помощью команд mov ah, a и add al, a.
  7. Затем число BX вычитается из числа AX с помощью команды sub al, b.
  8. К результату вычисления прибавляется единица с помощью команды add al, 1.
  9. Результат сохраняется в переменной y с помощью команды mov y, al.
  10. Выводится сообщение с помощью команды mov ah, 09h, lea dx, Message, int 21h.
  11. Результат вычисления преобразуется в строку с помощью команд mov al, y и add al, '0'.
  12. Строка выводится на экран с помощью команды mov ah, 02h, mov dl, al, int 21h.
  13. Программа завершается с помощью команды mov ax, 4C00h, int 21h.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

10   голосов , оценка 3.6 из 5
Похожие ответы