Определить равна ли сумма двух первых цифр четырехзначного числа сумме его последних цифр - 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 представлена программа, которая выполняет следующие действия:

  1. Объявление переменных:
    • num1 - содержит четырёхзначное число;
    • mess0, mess1 - строки, которые выводятся на экран в зависимости от результата сравнения.
  2. Инициализация стека и сегментных регистров:
    • mov ax, @data - сегментный регистр AX инициализируется сегментом данных;
    • mov ds, ax - сегментный регистр DS инициализируется сегментом данных;
    • mov bx, 10 - сегментный регистр BX инициализируется числом 10.
  3. Сравнение цифр числа:
    • mes1: - здесь происходит деление числа на 10 и сохранение результата в регистре CX;
    • mes2: - здесь происходит деление числа на 10 и к результату прибавляется число, сохранённое в регистре AX;
    • cmp cx, dx - сравнение результатов деления;
    • jz ok - если результат деления равен нулю, то выполняется переход к метке ok;
    • lea dx, mess1 - в случае, если результат деления не равен нулю, в регистр DX записывается адрес строки «different$».
  4. Вывод результатов на экран:
    • mov ah, 09h - вывод строки на экран;
    • int 21h - обращение к BIOS;
    • mov ah, 4Ch - вывод сообщения об успешном выполнении программы;
    • mov al, 00h - сообщение об успешном выполнении программы;
    • int 21h - обращение к BIOS.

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


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

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

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