Определить равна ли сумма двух первых цифр четырехзначного числа сумме его последних цифр - Assembler
Формулировка задачи:
Помогите пожалуйста написать программу в TASM
Определить равна ли сумма двух первых цифр четырехзначного числа сумме его последних цифр.
Решение задачи: «Определить равна ли сумма двух первых цифр четырехзначного числа сумме его последних цифр»
textual
Листинг программы
.model small .386 .data num1 dw 1736 mess0 db 'the same$' mess1 db 'different$' .stack db 256 dup(?) .code start: mov ax,@data mov ds,ax mov bx,10 mes1: xor dx,dx mov ax,num1 div bx mov cx,dx xor dx,dx div bx add cx,dx mes2: xor dx,dx div bx add dx,ax cmp cx,dx jz ok lea dx,mess1 jmp print ok: lea dx,mess0 print: mov ah,09h int 21h mov ah,4Ch mov al,00h int 21h end start
Объяснение кода листинга программы
В коде на языке Assembler представлена программа, которая выполняет следующие действия:
- Объявление переменных:
- num1 - содержит четырёхзначное число;
- mess0, mess1 - строки, которые выводятся на экран в зависимости от результата сравнения.
- Инициализация стека и сегментных регистров:
- mov ax, @data - сегментный регистр AX инициализируется сегментом данных;
- mov ds, ax - сегментный регистр DS инициализируется сегментом данных;
- mov bx, 10 - сегментный регистр BX инициализируется числом 10.
- Сравнение цифр числа:
- mes1: - здесь происходит деление числа на 10 и сохранение результата в регистре CX;
- mes2: - здесь происходит деление числа на 10 и к результату прибавляется число, сохранённое в регистре AX;
- cmp cx, dx - сравнение результатов деления;
- jz ok - если результат деления равен нулю, то выполняется переход к метке ok;
- lea dx, mess1 - в случае, если результат деления не равен нулю, в регистр DX записывается адрес строки «different$».
- Вывод результатов на экран:
- mov ah, 09h - вывод строки на экран;
- int 21h - обращение к BIOS;
- mov ah, 4Ch - вывод сообщения об успешном выполнении программы;
- mov al, 00h - сообщение об успешном выполнении программы;
- int 21h - обращение к BIOS.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д