dodawanie assembler

dodawanie assembler

Wątek przeniesiony 2018-11-07 15:31 z Inne języki programowania przez Marooned.

P4
  • Rejestracja:prawie 10 lat
  • Ostatnio:prawie 7 lat
  • Postów:23
0

Kiedy w assemblerze trzeba używać addc a kiedy add?
Tylko w przypadku jeżeli chcemy uwzględnić bit przeniesienia,bo będzie nam w dalszym ciągu do czegoś potrzeby czy tutaj chodzi o coś innego? Najlepiej by było, żeby ktoś to pokazał na przykłądzie.

P4
I kiedy trzeba robić czyszczenie znacznika c ,tzn clr c
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 minuty
2

flaga carry jest potrzebna gdy chcesz operować na liczbach większych niż mają rejestry, np. chcesz dodać 64-bitowe liczby a rejestry mają 32 bity.

SO
  • Rejestracja:ponad 10 lat
  • Ostatnio:około rok
1

Jak masz addc to znaczy że do wyniku dodawania dodawany jest jeszcze bit znajdujący się w fladze carry.

Tak jak napisał Azarien, jak chcesz dodać liczbę 64 bitową mając do dyspozycji rejestry 32 bitowe, to najpierw za pomocą add dodajesz młodsze połówki, a później przy pomocy addc starsze. Wtedy przy dodawaniu starszych połówek liczby uwzględniasz jeszcze ewentualne przeniesienie, które mogło nastąpić przy dodawaniu młodszych.

https://courses.engr.illinois.edu/ece390/books/artofasm/CH09/CH09-3.html#HEADING3-3

edytowany 2x, ostatnio: some_ONE
P4
A mógłbyś jeszcze podać konkretny przykład ?
P4
Jeżeli chcemy np dodać liczby ośmiobitowe a rejestry mamy czterobitowe . na przykład chcemy dodać 10101010 do 11010101 a R0 i R1 R2 są czterobitowe. ogólnie to ja nie wiem jak przenieść połowę liczby do rejestru. Tzn jak dodać najpierw młodsze połówki coś takiego może : mov a,#1010 mov R0,#0101 add a,R0 mov R1,a mov a,#1010 mov R2,#1101 addc a,R2
SO
W tym linku co podałem masz przecież przykłady z wyjaśnieniem.
P4
  • Rejestracja:prawie 10 lat
  • Ostatnio:prawie 7 lat
  • Postów:23
0

TO proszę sprawdzić rozumowanie chcę dodać liczby 1101 i 1011 do siebie czterobitowe, rejestry mam dwubitowe tylko

Kopiuj
 
mov a, #01b // dwa najmłodsze bity pierwszej liczby do akumulatora
mov R0,#11b // dwa najmłodsze bity drugiej liczby do akumulatora
add a,R0 // dodaj
mov R1,a // suma do R1
mov a ,#11b // dwa najstarsze 1 liczby do ak.
mov R1,#10b // dwa najstarsze 1 liczby do ak.
addc a,R1 //dodaj uwzględniając przeniesienie

i co ja mam z tym dalej zrobić żeby mieć wynik dodawania?

P4
Dobra już czaję ja potem ten bit jeszcze ustawić , dzięki wielkie

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.