Metropoli BBS
VIEWER: sqrt2.asm MODE: BINARY (HEX)
==============================================================================================================================================
OFFSET    00 01 02 03 04 05 06 07  08 09 0A 0B 0C 0D 0E 0F  10 11 12 13 14 15 16 17  18 19 1A 1B 1C 1D 1E 1F
----------------------------------------------------------------------------------------------------------------------------------------------
00000000  54 49 54 4C 45 20 20 53  71 75 61 72 65 20 52 6F  6F 74 20 42 79 20 4F 64  64 20 4E 75 6D 62 65 72  TITLE  Square Root By Odd Number
00000020  73 20 28 41 4E 53 34 31  2E 41 53 4D 29 0D 0A 20  20 20 20 20 20 20 20 20  20 50 41 47 45 20 20 20  s (ANS41.ASM)          PAGE   
00000040  20 20 20 2C 31 33 32 0D  0A 4F 55 52 5F 43 4F 44  45 20 20 53 45 47 4D 45  4E 54 20 20 20 50 41 52     ,132OUR_CODE  SEGMENT   PAR
00000060  41 20 27 43 4F 44 45 27  0D 0A 09 20 20 50 55 42  4C 49 43 20 20 20 20 53  52 33 32 0D 0A 53 52 33  A 'CODE'  PUBLIC    SR32SR3
00000080  32 20 20 20 20 20 20 50  52 4F 43 20 20 20 20 20  20 46 41 52 0D 0A 20 20  20 20 20 20 20 20 20 20  2      PROC      FAR          
000000A0  41 53 53 55 4D 45 20 20  20 20 43 53 3A 4F 55 52  5F 43 4F 44 45 0D 0A 20  20 20 20 20 20 20 20 20  ASSUME    CS:OUR_CODE         
000000C0  20 50 55 53 48 20 20 20  20 20 20 41 58 09 09 20  20 20 20 20 3B 53 61 76  65 20 6F 72 69 67 69 6E   PUSH      AX     ;Save origin
000000E0  61 6C 20 6E 75 6D 62 65  72 0D 0A 09 20 20 50 55  53 48 09 20 20 20 20 44  58 0D 0A 09 20 20 50 55  al number  PUSH    DX  PU
00000100  53 48 20 20 20 20 20 20  43 58 09 09 20 20 20 20  20 3B 20 61 6E 64 20 43  58 20 6F 6E 20 73 74 61  SH      CX     ; and CX on sta
00000120  63 6B 0D 0A 09 20 20 4D  4F 56 09 20 20 20 20 42  58 2C 31 09 20 20 20 20  20 3B 54 6F 20 73 74 61  ck  MOV    BX,1     ;To sta
00000140  72 74 2C 20 28 42 58 29  20 3D 20 31 0D 0A 09 20  20 53 55 42 09 20 20 20  20 43 58 2C 43 58 09 20  rt, (BX) = 1  SUB    CX,CX 
00000160  20 20 20 20 3B 20 61 6E  64 20 28 43 58 29 20 3D  20 30 0D 0A 41 47 41 49  4E 3A 09 20 20 53 55 42      ; and (CX) = 0AGAIN:  SUB
00000180  09 20 20 20 20 41 58 2C  42 58 09 20 20 20 20 20  3B 53 75 62 74 72 61 63  74 20 6E 65 78 74 20 6F      AX,BX     ;Subtract next o
000001A0  64 64 20 6E 6F 2E 20 66  72 6F 6D 20 41 58 0D 0A  09 20 20 53 42 42 09 20  20 20 20 44 58 2C 30 09  dd no. from AX  SBB    DX,0
000001C0  20 20 20 20 20 3B 20 61  6E 64 20 44 58 0D 0A 09  20 20 4A 43 09 20 20 20  20 44 4F 4E 45 09 20 20       ; and DX  JC    DONE  
000001E0  20 20 20 3B 44 69 64 20  73 75 62 2E 20 63 72 65  61 74 65 20 61 20 62 6F  72 72 6F 77 3F 0D 0A 09     ;Did sub. create a borrow?
00000200  20 20 49 4E 43 09 20 20  20 20 43 58 09 09 20 20  20 20 20 3B 20 4E 6F 2E  20 49 6E 63 72 65 6D 65    INC    CX     ; No. Increme
00000220  6E 74 20 74 68 65 20 73  71 75 61 72 65 20 72 6F  6F 74 2C 0D 0A 09 20 20  41 44 44 20 20 20 20 20  nt the square root,  ADD     
00000240  20 20 42 58 2C 32 09 20  20 20 20 20 3B 20 20 63  61 6C 63 75 6C 61 74 65  20 74 68 65 20 6E 65 78    BX,2     ;  calculate the nex
00000260  74 20 6F 64 64 20 6E 6F  2E 0D 0A 09 20 20 4A 4D  50 20 20 20 20 20 20 20  41 47 41 49 4E 09 20 20  t odd no.  JMP       AGAIN  
00000280  20 20 20 3B 20 20 74 68  65 6E 20 67 6F 20 6D 61  6B 65 20 6E 65 78 74 20  73 75 62 74 72 61 63 74     ;  then go make next subtract
000002A0  69 6F 6E 0D 0A 44 4F 4E  45 3A 09 20 20 4D 4F 56  09 20 20 20 20 42 58 2C  43 58 09 20 20 20 20 20  ionDONE:  MOV    BX,CX     
000002C0  3B 20 59 65 73 2E 20 20  54 72 61 6E 73 66 65 72  20 72 65 73 75 6C 74 20  74 6F 20 42 58 0D 0A 09  ; Yes.  Transfer result to BX
000002E0  20 20 50 4F 50 09 20 20  20 20 43 58 09 09 20 20  20 20 20 3B 20 20 61 6E  64 20 72 65 73 74 6F 72    POP    CX     ;  and restor
00000300  65 20 74 68 65 20 72 65  67 69 73 74 65 72 73 0D  0A 09 20 20 50 4F 50 09  20 20 20 20 44 58 0D 0A  e the registers  POP    DX
00000320  09 20 20 50 4F 50 20 20  20 20 20 20 20 41 58 0D  0A 09 20 20 52 45 54 0D  0A 53 52 33 32 20 20 20    POP       AX  RETSR32   
00000340  20 20 20 45 4E 44 50 0D  0A 4F 55 52 5F 43 4F 44  45 20 20 45 4E 44 53 0D  0A 20 20 20 20 20 20 45     ENDPOUR_CODE  ENDS      E
00000360  4E 44 20 20 20 20 20 20  20 53 52 33 32 0D 0A 1A  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ND       SR32................
[ RETURN TO DIRECTORY ]