Cложение трех пар чисел - Assembler

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

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

Надо сложить три пары чисел, скомпилировало без ошибок, но в отладчике считает как-то не так:
Operand1 equ 05E0H
Operand2 equ 1137H
Operand3 equ 0B5E0H
Operand4 equ 7137H
Operand5 equ 0B5E0H
Operand6 equ 0C137H
 
model small
p586 
stack 100H 
codeseg
startupcode
mov ax,[Operand1]
mov bx,[Operand2]
add ax,bx
mov [W_Var1], ax
mov cx,[Operand3]
mov dx,[Operand4]
add cx,dx
mov [W_Var2], cx
mov si,[Operand5]
mov di,[Operand6]
add si,di
mov [W_Var3], si
exitcode 0
 
dataseg
W_Var1 DW ?
W_Var2 DW ?
W_Var3 DW ?
END
Вот скрин из отладчика по поводу первого сложения:

Решение задачи: «Cложение трех пар чисел»

textual
Листинг программы
xor dx,dx
mov ax,operand_A
add ax,operand_B
adc dx,0
mov W_Var1_l,ax
mov W_var1_h,dx
;вывод числа
xor cx,cx
mov bx,10
@@1:div bx
push dx
inc cx
or ax,ax
jnz @@1
@@2:pop ax
or ax,'0'
int 29h
loop @@2

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

  1. xor dx,dx - инициализация регистра dx нулевым значением
  2. mov ax,operand_A - загрузка значения operand_A в регистр ax
  3. add ax,operand_B - сложение значения operand_A и operand_B в регистре ax
  4. adc dx,0 - обновление значения регистра dx с учетом переноса из регистра ax
  5. mov W_Var1_l,ax - сохранение низкого слова результата в переменную W_Var1_l
  6. mov W_var1_h,dx - сохранение высокого слова результата в переменную W_var1_h
  7. xor cx,cx - инициализация регистра cx нулевым значением
  8. mov bx,10 - загрузка значения 10 в регистр bx
  9. @@1:div bx - деление значения регистра ax на значение регистра bx
  10. push dx - сохранение значения регистра dx в стеке
  11. inc cx - увеличение значения регистра cx на единицу
  12. or ax,ax - проверка на ноль значения регистра ax
  13. jnz @@1 - если значение регистра ax не равно нулю, то переход к шагу 9
  14. @@2:pop ax - восстановление значения регистра ax из стека
  15. or ax,'0' - получение строкового представления числа в регистре ax
  16. int 29h - вывод числа на экран
  17. loop @@2 - повтор цикла от шага 14 до шага 16, пока число не будет равно нулю

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


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

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

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