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
Объяснение кода листинга программы
xor dx,dx
- инициализация регистра dx нулевым значениемmov ax,operand_A
- загрузка значения operand_A в регистр axadd ax,operand_B
- сложение значения operand_A и operand_B в регистре axadc dx,0
- обновление значения регистра dx с учетом переноса из регистра axmov W_Var1_l,ax
- сохранение низкого слова результата в переменную W_Var1_lmov W_var1_h,dx
- сохранение высокого слова результата в переменную W_var1_hxor cx,cx
- инициализация регистра cx нулевым значениемmov bx,10
- загрузка значения 10 в регистр bx@@1:div bx
- деление значения регистра ax на значение регистра bxpush dx
- сохранение значения регистра dx в стекеinc cx
- увеличение значения регистра cx на единицуor ax,ax
- проверка на ноль значения регистра axjnz @@1
- если значение регистра ax не равно нулю, то переход к шагу 9@@2:pop ax
- восстановление значения регистра ax из стекаor ax,'0'
- получение строкового представления числа в регистре axint 29h
- вывод числа на экранloop @@2
- повтор цикла от шага 14 до шага 16, пока число не будет равно нулю
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д