Nofew icon

Fahr to Cels WHOOOOO OWO!!!! (list)

Nofew | PRO | 11/30/15 11:03:19 PM UTC | 0 ⭐ | 449 👁️ | Never ⏰ | []
ASM (NASM) |

0 B

|

None

|

0 👍

/

0 👎

     1                                  BITS 32
     2                                  
     3                                  section .data
     4 00000000 20202020                Spaces: db 32,32,32,32
     5                                  section .bss
     6                                  
     7 00000000 <res 00000004>          fahr: resd 1
     8 00000004 <res 00000004>          cels: resd 1
     9 00000008 <res 00000004>          current: resd 1
    10 0000000C <res 00000004>          upper: resd 1
    11 00000010 <res 00000004>          step: resd 1
    12 00000014 <res 00000004>          print: resd 1
    13 00000018 <res 00000004>          ncels: resd 1
    14 0000001C <res 00000004>          nfahr: resd 1
    15                                  section .text
    16                                  global _start
    17                                  _start:
    18                                  Initalize:
    19 00000000 B89CFFFFFF              mov eax,-100
    20 00000005 A3[00000000]            mov [fahr],eax
    21 0000000A A3[08000000]            mov [current],eax
    22 0000000F B814000000              mov eax,20
    23 00000014 A3[10000000]            mov [step],eax
    24 00000019 B8C8000000              mov eax,200
    25 0000001E A3[0C000000]            mov [upper],eax
    26                                  PrimaryLoop:
    27 00000023 B800000000              mov eax,0
    28 00000028 A3[18000000]            mov [ncels],eax
    29 0000002D A3[1C000000]            mov [nfahr],eax
    30 00000032 A1[08000000]            mov eax,[current]
    31 00000037 A3[00000000]            mov [fahr],eax
    32 0000003C A1[00000000]            mov eax,[fahr]
    33 00000041 8B1D[0C000000]          mov ebx,[upper]
    34 00000047 39D8                    cmp eax,ebx
    35 00000049 0F8FF6010000            jg Terminate
    36                                  DoMath:
    37 0000004F A1[00000000]            mov eax,[fahr]
    38 00000054 BB20000000              mov ebx,32
    39 00000059 29D8                    sub eax,ebx
    40 0000005B BB05000000              mov ebx,5
    41 00000060 0FAFC3                  imul eax,ebx
    42 00000063 B909000000              mov ecx,9
    43 00000068 BA00000000              mov edx,0
    44 0000006D 99                      cdq
    45 0000006E F7F9                    idiv ecx
    46 00000070 A3[04000000]            mov [cels],eax
    47                                  InsertStackMarker:
    48 00000075 B810270000              mov eax,10000
    49 0000007A 50                      push eax
    50                                  CheckIfCelsIsNegative:
    51 0000007B A1[04000000]            mov eax,[cels]
    52 00000080 BB00000000              mov ebx,0
    53 00000085 39D8                    cmp eax,ebx
    54 00000087 7C02                    jl CelsIsNegative
    55 00000089 EB1C                    jmp PushCelsDigitsToStack
    56                                  CelsIsNegative:
    57 0000008B B801000000              mov eax,1
    58 00000090 A3[18000000]            mov [ncels],eax
    59 00000095 A1[04000000]            mov eax,[cels]
    60 0000009A BBFFFFFFFF              mov ebx,-1
    61 0000009F 0FAFC3                  imul eax,ebx
    62 000000A2 A3[04000000]            mov [cels],eax
    63                                  PushCelsDigitsToStack:
    64 000000A7 A1[04000000]            mov eax,[cels]
    65 000000AC BB00000000              mov ebx,0
    66 000000B1 39D8                    cmp eax,ebx
    67 000000B3 7415                    je GotAZero
    68 000000B5 B90A000000              mov ecx,10
    69 000000BA BA00000000              mov edx,0
    70 000000BF 99                      cdq
    71 000000C0 F7F9                    idiv ecx
    72 000000C2 52                      push edx
    73 000000C3 A3[04000000]            mov [cels],eax
    74 000000C8 EBDD                    jmp PushCelsDigitsToStack
    75                                  GotAZero:
    76 000000CA 5B                      pop ebx
    77 000000CB 39D8                    cmp eax,ebx
    78 000000CD 7414                    je JustAZero
    79 000000CF 53                      push ebx
    80 000000D0 B810270000              mov eax,10000
    81 000000D5 39D8                    cmp eax,ebx
    82 000000D7 7402                    je ActualZero
    83 000000D9 EB0E                    jmp DecideSign
    84                                  ActualZero:
    85 000000DB B800000000              mov eax,0
    86 000000E0 50                      push eax
    87 000000E1 EBC4                    jmp PushCelsDigitsToStack
    88                                  JustAZero:
    89 000000E3 B800000000              mov eax,0
    90 000000E8 50                      push eax
    91                                  DecideSign:
    92 000000E9 A1[18000000]            mov eax,[ncels]
    93 000000EE BB01000000              mov ebx,1
    94 000000F3 39D8                    cmp eax,ebx
    95 000000F5 7402                    je InsertSign
    96 000000F7 EB0D                    jmp InsertAnotherStackMarker
    97                                  InsertSign:
    98 000000F9 B82D000000              mov eax,45
    99 000000FE BB30000000              mov ebx,30h
   100 00000103 29D8                    sub eax,ebx
   101 00000105 50                      push eax
   102                                  InsertAnotherStackMarker:
   103 00000106 B810270000              mov eax,10000
   104 0000010B 50                      push eax
   105                                  CheckIfFahrIsNegative:
   106 0000010C A1[00000000]            mov eax,[fahr]
   107 00000111 BB00000000              mov ebx,0
   108 00000116 39D8                    cmp eax,ebx
   109 00000118 7C02                    jl FahrIsNegative
   110 0000011A EB1C                    jmp PushFahrDigitsToStack
   111                                  FahrIsNegative:
   112 0000011C B801000000              mov eax,1
   113 00000121 A3[1C000000]            mov [nfahr],eax
   114 00000126 A1[00000000]            mov eax,[fahr]
   115 0000012B BBFFFFFFFF              mov ebx,-1
   116 00000130 0FAFC3                  imul eax,ebx
   117 00000133 A3[00000000]            mov [fahr],eax
   118                                  PushFahrDigitsToStack:
   119 00000138 A1[00000000]            mov eax,[fahr]
   120 0000013D BB00000000              mov ebx,0
   121 00000142 39D8                    cmp eax,ebx
   122 00000144 7415                    je GotADifferentZero
   123 00000146 B90A000000              mov ecx,10
   124 0000014B BA00000000              mov edx,0
   125 00000150 99                      cdq
   126 00000151 F7F9                    idiv ecx
   127 00000153 52                      push edx
   128 00000154 A3[00000000]            mov [fahr],eax
   129 00000159 EBDD                    jmp PushFahrDigitsToStack
   130                                  ;;;;Something feels really wrong about GotADifferentZero...
   131                                  GotADifferentZero:
   132 0000015B 5B                      pop ebx
   133 0000015C 39D8                    cmp eax,ebx
   134 0000015E 7414                    je JustADifferentZero
   135 00000160 53                      push ebx
   136 00000161 B810270000              mov eax,10000
   137 00000166 39D8                    cmp eax,ebx
   138 00000168 7402                    je AnotherActualZero
   139 0000016A EB0E                    jmp DecideAnotherSign
   140                                  AnotherActualZero:
   141 0000016C B800000000              mov eax,0
   142 00000171 50                      push eax
   143 00000172 EBC4                    jmp PushFahrDigitsToStack
   144                                  JustADifferentZero:
   145 00000174 B800000000              mov eax,0
   146 00000179 50                      push eax
   147                                  DecideAnotherSign:
   148 0000017A A1[1C000000]            mov eax,[nfahr]
   149 0000017F BB01000000              mov ebx,1
   150 00000184 39D8                    cmp eax,ebx
   151 00000186 7402                    je InsertAnotherSign
   152 00000188 EB0D                    jmp PrintFahrFromStack
   153                                  InsertAnotherSign:
   154 0000018A B82D000000              mov eax,45
   155 0000018F BB30000000              mov ebx,30h
   156 00000194 29D8                    sub eax,ebx
   157 00000196 50                      push eax
   158                                  PrintFahrFromStack:
   159 00000197 B810270000              mov eax,10000
   160 0000019C 5B                      pop ebx
   161 0000019D 39D8                    cmp eax,ebx
   162 0000019F 7424                    je PrintWhitespace
   163 000001A1 B830000000              mov eax,30h
   164 000001A6 01D8                    add eax,ebx
   165 000001A8 A3[14000000]            mov [print],eax
   166 000001AD B804000000              mov eax,4
   167 000001B2 BB01000000              mov ebx,1
   168 000001B7 B9[14000000]            mov ecx,print
   169 000001BC BA01000000              mov edx,1
   170 000001C1 CD80                    int 80h
   171 000001C3 EBD2                    jmp PrintFahrFromStack
   172                                  PrintWhitespace:
   173 000001C5 B804000000              mov eax,4
   174 000001CA BB01000000              mov ebx,1
   175 000001CF B9[00000000]            mov ecx,Spaces
   176 000001D4 BA04000000              mov edx,4
   177 000001D9 CD80                    int 80h
   178                                  PrintCelsFromStack:
   179 000001DB B810270000              mov eax,10000
   180 000001E0 5B                      pop ebx
   181 000001E1 39D8                    cmp eax,ebx
   182 000001E3 7424                    je IncrementFahr
   183 000001E5 B830000000              mov eax,30h
   184 000001EA 01D8                    add eax,ebx
   185 000001EC A3[14000000]            mov [print],eax
   186 000001F1 B804000000              mov eax,4
   187 000001F6 BB01000000              mov ebx,1
   188 000001FB B9[14000000]            mov ecx,print
   189 00000200 BA01000000              mov edx,1
   190 00000205 CD80                    int 80h
   191 00000207 EBD2                    jmp PrintCelsFromStack
   192                                  IncrementFahr:
   193 00000209 A1[08000000]            mov eax,[current]
   194 0000020E 8B1D[10000000]          mov ebx,[step]
   195 00000214 01D8                    add eax,ebx
   196 00000216 A3[00000000]            mov [fahr],eax
   197 0000021B A3[08000000]            mov [current],eax
   198 00000220 B80A000000              mov eax,10
   199 00000225 A3[14000000]            mov [print],eax
   200 0000022A B804000000              mov eax,4
   201 0000022F BB01000000              mov ebx,1
   202 00000234 B9[14000000]            mov ecx,print
   203 00000239 BA01000000              mov edx,1
   204 0000023E CD80                    int 80h
   205 00000240 E9DEFDFFFF              jmp PrimaryLoop
   206                                  Terminate:
   207 00000245 B801000000              mov eax,1
   208 0000024A BB00000000              mov ebx,0
   209 0000024F CD80                    int 80h
 
 
 
 
 
Output:
 
-100    -73
-80    -62
-60    -51
-40    -40
-20    -28
0    -17
20    -6
40    4
60    15
80    26
100    37
120    48
140    60
160    71
180    82
200    93

Comments