Если a>b, то вывести дату рождения, если a=b, то вывести ФИО, если a

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

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

Добрый день, подскажите пожалуйста, что не так, ломаю голову не один час, а ошибку найти не могу. Принять 2 числа, если a>b, то вывести на экран дату рождения, если a=b вывести на экран ФИО, если a<b, то вывести на экран поличество пальц на руке
.model small
.stack 100h
.data
a db ?
b db ?
stroka1 db 'vvedite a: ','$'
stroka2 db 10,13,'vvedite b: ','$'
strokad db 10,13,'11.11.1111','$'
strokaf db 10,13,'and bart vla','$'
strokap db 10,13,'10','$'
.code
start:
mov ax,@data
mov ds,ax
 
mov ah,09h
lea dx,stroka1
int 21h
mov ah,01h
int 21h
sub al,30h
mov a,al
 
mov ah,09
lea dx,stroka2
int 21h
mov ah,01h
int 21h
sub al,30h
mov b,al
 
cmp al,bl
jg m1
mov ah,09h
lea dx,strokap
int 21h
mov dl,a
add dl,30h
mov ah,02h
int 21h
jmp exit
m1:
mov ah,09h
lea dx,strokad
int 21h
mov dl,a
add dl,30h
mov ah,02h
int 21h
cmp al,bl
 
je m2
m2:
mov ah,09h
lea dx,strokaf
int 21h
mov dl,a
add dl,30h
mov ah,02h
int 21h
 
exit:
mov ax,4c00h
int 21h
end start

Решение задачи: «Если a>b, то вывести дату рождения, если a=b, то вывести ФИО, если a

textual
Листинг программы
mov ah,09h
 lea dx,stroka1
 int 21h
 mov ah,01h
 int 21h
 sub al,30h
 mov a,al ;записать число в переменную a
 
 mov ah,09
 lea dx,stroka2
 int 21h
 mov ah,01h
 int 21h
 sub al,30h
 mov b,al ;записать число в переменную b
 
 cmp al,bl ;сравнить регистры al и bl    Зачем? Сравнивать надо переменную a c al
 jg m1

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

Вывод: Код сравнивает значения двух чисел, а затем выполняет различные операции в зависимости от результата сравнения. Список действий:

  1. mov ah,09h — устанавливает код функции 09h для вывода строки на экран
  2. lea dx,stroka1 — указывает на переменную stroka1 в качестве строки для вывода
  3. int 21h — выполняет функцию 09h, выводя строку на экран
  4. mov ah,01h — устанавливает код функции 01h для ввода строки с клавиатуры
  5. int 21h — выполняет функцию 01h, считывая строку с клавиатуры
  6. sub al,30h — вычитает 30h из значения в регистре al, преобразуя строку в числовое значение
  7. mov a,al — записывает числовое значение в переменную a
  8. mov ah,09h — устанавливает код функции 09h для вывода строки на экран
  9. lea dx,stroka2 — указывает на переменную stroka2 в качестве строки для вывода
  10. int 21h — выполняет функцию 09h, выводя строку на экран
  11. mov ah,01h — устанавливает код функции 01h для ввода строки с клавиатуры
  12. int 21h — выполняет функцию 01h, считывая строку с клавиатуры
  13. sub al,30h — вычитает 30h из значения в регистре al, преобразуя строку в числовое значение
  14. mov b,al — записывает числовое значение в переменную b
  15. cmp al,bl — сравнивает значения в регистрах al и bl
  16. jg m1 — если значение в регистрах al больше, чем в bl, то переходит к метке m1
  17. Код после метки m1 выполняет дополнительные действия, которые не указаны в предоставленном коде.
  18. Необходимо больше информации о коде после метки m1 для полного понимания работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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