Програмування на мові Асемблер, Детальна інформація
Програмування на мові Асемблер
Щоб додати 8- бітове значення в ah з 8-бітового значення в ah можна записати:
add ah, bh ; ah ( ah+bh
Команда сумує два значення і записує результат в
задане місце, замінюючи початкове значення.
Команда adc працює акалогічно, але додає до результату прапор переносу cf:
adc ah, bh ; ah ( ah+bh+cf
Якщо cf=1 то результат одержуємо такий же, як при додаванні 1 до суми ah i bh. Прапор cf встановлюється в 1, якщо в попередньому додаванні виникло переповнення . Тому adc частіше виконується після add, яке додає багатобайтові значення, повідомляючи про переноси , які виникають при додаванні окремих байтів.
Для сумування в регістрі ах окремих байтів 16-бітового значення записуємо по адресу sum, можна використовувати слідуючі команди які подвоюють слово sum:
mov ax, [wordsum] ;переслати в ax знач.[sum]
add al, [byte snm] ;додати молодший байт
adc ah [byte sum+1] ; додати старший байт з мож-
ливим переносом
mov [wordsum] , ax ;переслати одержане значення
назад в пам’ять
Пам’ятаєм, що в слові байти зберігаються в зворотньому порядку 1.к. загружає значення слова в ах;
2.к.задає один з другим молодші значущі байти, записуючи в al, і вип.переп. виснаження переносу встановлює cf в1; 3.к. додає цей можливий перенос до суми старших знач.байтів.4.к.записує кінцевий результат назад в пам’ять
Оскільки 8086 може безпосередьо працювати з словами ,то ці ж дії можна виконати двома командами:
mov ax, [word sum] ;переслати в ах значення
[sum]
add [word sum] ,ax ; додати [sum] до самого
себе
add не може додавати два значення , записані в пам’яті , тому потрібно визначити хоч один регістр
в який і заслати [sum].
В цих випадках оператори byte i word інформують асемблер про тип даних, які адресує[sum]. В деяких
випадках їх можна не використовувати, проте вони не зашкодять.
add i adc можуть додавати до регістра і значення в пам’яті безпосередні (літеральні) значення:
add bx,5 ;bx (bx+5
Щоб швидше додати 1 до деякого значення замість add використаємо inc, яка вимагає лише одного операнда.
inc ax ; ax(ax+1
inc bx ; bx(bx+1
add ah, bh ; ah ( ah+bh
Команда сумує два значення і записує результат в
задане місце, замінюючи початкове значення.
Команда adc працює акалогічно, але додає до результату прапор переносу cf:
adc ah, bh ; ah ( ah+bh+cf
Якщо cf=1 то результат одержуємо такий же, як при додаванні 1 до суми ah i bh. Прапор cf встановлюється в 1, якщо в попередньому додаванні виникло переповнення . Тому adc частіше виконується після add, яке додає багатобайтові значення, повідомляючи про переноси , які виникають при додаванні окремих байтів.
Для сумування в регістрі ах окремих байтів 16-бітового значення записуємо по адресу sum, можна використовувати слідуючі команди які подвоюють слово sum:
mov ax, [wordsum] ;переслати в ax знач.[sum]
add al, [byte snm] ;додати молодший байт
adc ah [byte sum+1] ; додати старший байт з мож-
ливим переносом
mov [wordsum] , ax ;переслати одержане значення
назад в пам’ять
Пам’ятаєм, що в слові байти зберігаються в зворотньому порядку 1.к. загружає значення слова в ах;
2.к.задає один з другим молодші значущі байти, записуючи в al, і вип.переп. виснаження переносу встановлює cf в1; 3.к. додає цей можливий перенос до суми старших знач.байтів.4.к.записує кінцевий результат назад в пам’ять
Оскільки 8086 може безпосередьо працювати з словами ,то ці ж дії можна виконати двома командами:
mov ax, [word sum] ;переслати в ах значення
[sum]
add [word sum] ,ax ; додати [sum] до самого
себе
add не може додавати два значення , записані в пам’яті , тому потрібно визначити хоч один регістр
в який і заслати [sum].
В цих випадках оператори byte i word інформують асемблер про тип даних, які адресує[sum]. В деяких
випадках їх можна не використовувати, проте вони не зашкодять.
add i adc можуть додавати до регістра і значення в пам’яті безпосередні (літеральні) значення:
add bx,5 ;bx (bx+5
Щоб швидше додати 1 до деякого значення замість add використаємо inc, яка вимагає лише одного операнда.
inc ax ; ax(ax+1
inc bx ; bx(bx+1
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021