🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #2565

Odejmowanie dużych liczb

#2565
From: Kamil
Date: Fri, 06 Sep 2013 01:57
85 lines
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-mail

Show 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