• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            coreBugZJ

            此 blog 已棄。

            Divisor Summation, SPOJ 74

            74. Divisor Summation

            Problem code: DIVSUM

            Given a natural number n (1 <= n <= 500000), please output the summation of all its proper divisors.

            Definition: A proper divisor of a natural number is the divisor that is strictly less than the number.

            e.g. number 20 has 5 proper divisors: 1, 2, 4, 5, 10, and the divisor summation is: 1 + 2 + 4 + 5 + 10 = 22.

            Input

            An integer stating the number of test cases (equal to about 200000), and that many lines follow, each containing one integer between 1 and 500000 inclusive.

            Output

            One integer each line: the divisor summation of the integer given respectively.

            Example

            Sample Input:
            3
            2
            10
            20

            Sample Output:
            1
            8
            22


            使用輸入輸出緩存,第一次使用字符串數組指令STOSD,LOOP循環(huán)命令,相對基址變址操作數。
            教訓:函數調用一定要注意保存寄存器。

              1 ; spoj74.s
              2 
              3 %define  L   500009
              4 %define  BL  4096
              5 
              6 section .bss
              7         bufIn : resb BL
              8         pBufInI : resd 1
              9         pBufInN : resd 1
             10 
             11         bufOut : resb BL
             12         pBufOutN : resd 1
             13 
             14         ans : resd L
             15 
             16 section .text
             17         global _start
             18 
             19 _start : 
             20         mov dword[pBufInI], 0x0
             21         mov dword[pBufInN], 0x0
             22         mov dword[pBufOutN], 0x0
             23         call init
             24         call inInt
             25         mov ecx, eax
             26 CASE : 
             27         push ecx
             28 
             29         call inInt
             30         mov eax, [eax*4+ans]
             31         call outIntLn
             32 
             33         pop ecx
             34         loop CASE
             35 EXIT : 
             36         call flushOut
             37 
             38         mov eax, 0x1
             39         mov ebx, 0x0
             40         int 0x80
             41 
             42 
             43 ; func
             44 init : 
             45         xor eax, eax
             46         mov edi, ans
             47         mov ecx, L
             48         cld
             49         rep stosd
             50 
             51         mov ecx, L
             52         shr ecx, 1
             53 initA : 
             54         mov eax, ecx
             55 initC : 
             56         add eax, ecx
             57         cmp eax, L
             58         jge initB
             59         mov ebx, [eax*4+ans]
             60         add ebx, ecx
             61         mov [eax*4+ans], ebx
             62         jmp initC
             63 initB : 
             64         loop initA
             65         ret
             66 
             67 ; func eax
             68 inChar : 
             69         mov eax, [pBufInI]
             70         cmp eax, [pBufInN]
             71         jne inCharA
             72         mov eax, 0x3
             73         mov ebx, 0x0
             74         mov ecx, bufIn
             75         mov edx, BL
             76         int 0x80
             77         mov [pBufInN], eax
             78         mov dword [pBufInI], 0x0
             79         xor eax, eax
             80 inCharA : 
             81         mov bl, [eax+bufIn]
             82         inc eax
             83         mov [pBufInI], eax
             84         movzx eax, bl
             85         ret
             86 
             87 ; func eax
             88 outChar : 
             89         mov ebx, [pBufOutN]
             90         mov [ebx+bufOut], al
             91         inc ebx
             92         mov [pBufOutN], ebx
             93         cmp ebx, BL
             94         jne outCharA
             95         call flushOut
             96 outCharA : 
             97         ret
             98 
             99 ; func
            100 flushOut : 
            101         mov eax, 0x4
            102         mov ebx, 0x1
            103         mov ecx, bufOut
            104         mov edx, [pBufOutN]
            105         int 0x80
            106         mov dword [pBufOutN], 0x0
            107         ret
            108 
            109 ; func eax
            110 inInt : 
            111 inIntA : 
            112         call inChar
            113         cmp al, '0'
            114         jb inIntA
            115         cmp al, '9'
            116         ja inIntA
            117         xor ebx, ebx
            118         push ebx
            119 inIntB : 
            120         mov ebx, eax
            121         sub ebx, '0'
            122         pop eax
            123         xor edx, edx
            124         mov ecx, 0xA
            125         mul ecx
            126         add eax, ebx
            127         push eax
            128         call inChar
            129         cmp al, '0'
            130         jb inIntC
            131         cmp al, '9'
            132         ja inIntC
            133         jmp inIntB
            134 inIntC : 
            135         pop eax
            136         ret
            137 
            138 ; func eax
            139 outIntLn : 
            140         ; eax == 0
            141         test eax, eax
            142         jnz outIntLnA
            143         mov eax, '0'
            144         call outChar
            145         mov eax, 0xA
            146         call outChar
            147         ret
            148 
            149         ; eax != 0
            150 outIntLnA : 
            151         push ebp
            152         mov ebp, esp
            153         sub esp, 0x40
            154         mov ebx, ebp
            155 outIntLnB : 
            156         test eax, eax
            157         jz outIntLnC
            158         xor edx, edx
            159         mov ecx, 0xA
            160         div ecx
            161         add edx, '0'
            162         dec ebx
            163         mov [ebx], dl
            164         jmp outIntLnB
            165 outIntLnC : 
            166         cmp ebx, ebp
            167         je outIntLnD
            168         movzx eax, byte [ebx]
            169         push ebx ; !!!!!!!!!!!!!!!!
            170         call outChar
            171         pop ebx  ; !!!!!!!!!!!!!!!!
            172         inc ebx
            173         jmp outIntLnC
            174 outIntLnD : 
            175         mov eax, 0xA
            176         call outChar
            177         mov esp, ebp
            178         pop ebp
            179         ret
            180 

            posted on 2011-05-19 20:25 coreBugZJ 閱讀(636) 評論(0)  編輯 收藏 引用 所屬分類: Assemble

            精品久久久久久无码免费| 国产亚洲色婷婷久久99精品| 精品久久久久久无码人妻热| 青青久久精品国产免费看| 2021国产精品午夜久久 | 日本精品久久久久中文字幕| 2021国产成人精品久久| 久久午夜无码鲁丝片秋霞| 伊人色综合久久| 久久久久精品国产亚洲AV无码| 国产精品久久久久国产A级| 日韩va亚洲va欧美va久久| 久久国产精品无码一区二区三区| 精品乱码久久久久久夜夜嗨| 久久久久久国产精品免费无码 | 久久午夜综合久久| 久久精品国产精品亚洲毛片| 亚洲国产香蕉人人爽成AV片久久| AV无码久久久久不卡蜜桃| 日产精品久久久久久久| 色偷偷88欧美精品久久久| 久久香蕉国产线看观看99| 久久婷婷国产综合精品| 免费精品久久天干天干| 无码国内精品久久人妻麻豆按摩| 国产91久久综合| Xx性欧美肥妇精品久久久久久| 亚洲国产另类久久久精品小说| 日本亚洲色大成网站WWW久久| 国产精品99久久精品爆乳| 狠狠狠色丁香婷婷综合久久俺| 久久66热人妻偷产精品9| 亚洲国产精品无码久久久蜜芽| 久久狠狠爱亚洲综合影院| 久久精品国产2020| 久久夜色精品国产噜噜噜亚洲AV| 久久综合亚洲色HEZYO社区| 久久精品国产免费观看三人同眠| 久久天天躁狠狠躁夜夜不卡 | 亚洲伊人久久大香线蕉苏妲己| 狠狠狠色丁香婷婷综合久久俺|