Сборный / Говнокод #6404 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
.386
.model flat,stdcall
 option  casemap:none
      include   c:\masm32\includes\windows.inc
      include   c:\masm32\includes\user32.inc
      include   c:\masm32\includes\kernel32.inc
      includelib c:\masm32\lib\user32.lib
      includelib c:\masm32\lib\kernel32.lib
 bufsize EQU 12
.data
  a dd 300
  b dd 500
  d dd 300
  fmt db "Max = %2d",0
  buf db bufsize dup(0)
  ctrlf db 0dh,0ah
  stdout dd ?
  cWritten dd ?
  result dd ?
.code
 start:
  invoke GetStdHandle,STD_OUTPUT_HANDLE
  mov stdout,eax
   mov eax,a            
   mov result,eax  ; изначально максимальный это a
   cmp eax,b       ; сравниваем со вторым числом
   jbe big1        ; если a<=b , значит b больше a
   ja min1         ; иначе a ещё максимальное
  big1:
    mov eax,b           
	mov result,eax  ;теперь b максимальное
    cmp eax,d 
	jbe big2   ; максимальное c 
	jmp print
	big2: 
	  mov eax,d 
	  mov result,eax ;максимальный c
	  jmp print
  min1:
    mov eax,d
	cmp eax,a
	jbe big3
	mov result,eax
	jmp print
	big3:
	  mov eax,a
	  mov result,eax
	  jmp print
   print:
    mov edx,result
    invoke wsprintf, ADDR buf, ADDR fmt, edx
    invoke WriteConsoleA, stdout, ADDR buf, bufsize, ADDR cWritten, NULL
    invoke WriteConsoleA, stdout, ADDR ctrlf, 2, ADDR cWritten, NULL
 end start

С ума сойти. И это сравнение трёх чисел, которое делается в два простейших условия...

Запостил: Ymilij Ymilij, (Updated )

Комментарии (12) RSS

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8