Article View: pl.comp.lang.asm
Article #2565Odejmowanie dużych liczb
From: Kamil
Date: Fri, 06 Sep 2013 01:57
Date: Fri, 06 Sep 2013 01:57
85 lines
3278 bytes
3278 bytes
Witam
Na stronie Bogdana jest min. procedura odejmowania:
mov eax, [arg1]
sub eax, [arg2] ; odejmujemy 2 pierwsze części
mov [wynik], eax ; i zapisujemy wynik
; flaga CF mówi, czy była pożyczka
mov eax, [arg1+4]
sbb eax, [arg2+4] ; odejmujemy razem z pożyczk? (CF),
; jeśli w poprzednim odejmowaniu
; musieli?my co? pożyczać
mov [wynik+4], eax ; wynik: [arg1+4]-[arg2+4]-pożyczka
; z pierwszego odejmowania
; CF teraz zawiera pożyczkę z SBB
; podobnie reszta działania:
mov eax, [arg1+8]
sbb eax, [arg2+8]
mov [wynik+8], eax
mov eax, [arg1+12]
sbb eax, [arg2+12]
mov [wynik+12], eax
jc arg1_mniejszy_od_arg2
Moja implementacja wygląda tak:
odejmij PROC
push esi
push edi
push ebx
push ebp
mov eax, [arg1]
sub eax, [arg2] ; odejmujemy 2 pierwsze części
mov [wynik], eax ; i zapisujemy wynik
; flaga CF mówi, czy była pożyczka
mov eax, [arg1+4]
sbb eax, [arg2+4] ; odejmujemy razem z pożyczk? (CF),
; jeśli w poprzednim odejmowaniu
; musieli?my co? pożyczać
mov [wynik+4], eax ; wynik: [arg1+4]-[arg2+4]-pożyczka
; z pierwszego odejmowania
; CF teraz zawiera pożyczkę z SBB
; podobnie reszta działania:
mov eax, [arg1+8]
sbb eax, [arg2+8]
mov [wynik+8], eax
mov eax, [arg1+12]
sbb eax, [arg2+12]
mov [wynik+12], eax
jc arg1_mniejszy_od_arg2
arg1_mniejszy_od_arg2:
pop ebp
pop ebx
pop edi
pop esi
ret
odejmij endp
mam następujące pytania:
- Co sie stanie w razie wystąpienia sytuacji spełniącej warunek skoku jc?
Czy linia mov [wynik+12], eax się wykona? Jaki będzie wynik?
- co się stanie kiedy już w peerwszych argumentach będzie arg1 < arg2
- cfzy jc nie powinno być po każdym odejmowaniu?
Pozdrawiam
Technical Details
Message-ID:
<52293698$0$1261$65785112@news.neostrada.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin3!goblin.stu.neva.ru!newsfeed2.funet.fi!newsfeeds.funet.fi!newsfeed1.swip.net!feeder.erje.net!us.feeder.erje.net!usenet.blueworldhosting.com!feeder01.blueworldhosting.com!npeer03.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!nx01.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin3!goblin.stu.neva.ru!newsfeed2.funet.fi!newsfeeds.funet.fi!newsfeed1.swip.net!feeder.erje.net!us.feeder.erje.net!usenet.blueworldhosting.com!feeder01.blueworldhosting.com!npeer03.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!nx01.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail From: "Kamil" <nospam@tlen.pl> Newsgroups: pl.comp.lang.asm Subject: Odejmowanie dużych liczb Date: Fri, 6 Sep 2013 03:57:30 +0200 MIME-Version: 1.0 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 Lines: 87 Message-ID: <52293698$0$1261$65785112@news.neostrada.pl> Organization: Telekomunikacja Polska NNTP-Posting-Host: 83.30.150.235 X-Trace: 1378432664 unt-rea-a-02.news.neostrada.pl 1261 83.30.150.235:1415 X-Complaints-To: abuse@news.neostrada.pl X-Received-Bytes: 2915 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit