1. Assembler / Говнокод #386

    −5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    ;------------------------------------------------------------------------------------
    ;       Задача. Подсчитать максимальную длину слова входного 
    ; текста. Слово - это последовательность символов, отличных от
    ; пробела. Длина текста и слова не более 80 символов.
    ;------------------------------------------------------------------------------------
    ;------------------------------------------------------------------------------------
    ;                      Макроопределения
    ;     	Вызов функции DOS,  вызывается функция с номером f.
    ;   	Внимание! Изменяется содержимое регистра ah.
    _f      macro   f
            mov     ah,f
            int     21h
            endm
    
    ;--------------------------------------------------------------------------
    ;                   Вывод текста на экран
    ;   Текст  находится  в памяти  по  адресу  adr  и завершается символом "$".
    _puts   macro   adr_str
            push    ax
            push    dx
            lea      dx, adr_str
            _f       9
            pop     dx
            pop     ax
            endm
    ;------------------------------------------------------------------------
            assume  cs:code, ds:data	; назначение регистров 
                                  		; сегмента команд и сегмента данных
    ;------------------------------------------------------------------------
    ; Сегмент данных
    data 	segment	para public 'data'
    soob1   	db   	13,10,'Error open input file',13,10,'$'
    soob2   	db  	13,10,'Error create output file',13,10,'$'
    soob3   	db   	13,10,'Error read file',13,10,'$'
    soob4   	db   	13,10,'Error write file',13,10,'$'
    soob5  	db   	13,10,'Error close input file',13,10,'$'
    soob6   	db   	13,10,'Error close output file',13,10,'$'
    name_in	db	'input.txt',0
    name_out	db	'output.txt',0
    nom_in	dw	?
    nom_out	dw	?
    in_buf	db	80 dup(?)
    out_buf	db	'Max dlina slova = '
    maxdl		db	62 dup( ' ')
    data 		ends
    ;-------------------------------------------------------------
    ; Сегмент кода
    code 		segment	para public 'code'
    main    	proc
            	mov	ax,data        		; инициализация pегистpа
           	mov	ds,ax          		; сегмента данных
    b1:     	lea	dx,name_in         	; Открытие входного файла
             	mov	al,0             		
              	_f	3Dh              		
              	jnc	b2             		; Файл открылся
            	_puts	soob1              	; Файл не открылся
            	jmp	v            	  	
    b2:     	mov	nom_in,ax         	; N вх.файла
            	lea	dx, name_out        	; Открытие выходного файла
            	mov	al,1             		
            	_f 	3Dh              	
            	jnc	b3             		; Файл открылся
            	lea	dx,name_out        	; Создание выходного файла
           	 mov	cx,0             	
            	_f 	3Ch              	
            	jnc	b3             		; Создание успешное
            	_puts	soob2              	; Файл не создался
            	jmp	v2               	
    b3:     	mov	nom_out,ax        	; N вых.файла
    		xor	ax,ax
    		push 	ax			; выходной параметр - к-во введ-х байтов в стек
            	call	vvod               	; Ввод записи
            	jnc	b4             		; Ввод успешный
            	_puts	soob3              	; Файл не читается
            	jmp	v1              	
    b4:     	;pop	ax			; результат - к-во введ-х байтов в ах
    		;push	ax			; входной параметр - к-во введ-х байтов
    		lea	dx,maxdl		; входной параметр – адрес результата
    		push	dx
    call	obrab              	; Обработка данных
            	call	vivod              	; Вывод записи
            	jnc	v1           		; Вывод успешный
            	_puts	soob4              	; Файл не записывается
    v1:   	mov	bx,nom_out       	; Закрытие выходного файла
            	_f	3Eh              	
            	jnc	v2           		; Закрытие успешное
            	_puts	soob6             	; Файл не закрылся
    v2:   	mov	bx,nom_in           	; Закрытие входного файла
            	_f	3Eh              	
            	jnc	v
            	_puts	soob5              	; Файл не закрылся
    v:
            	_f 	4Ch              	; Выход в DOS
    main    	endp
    
    vvod    	proc                		; Ввод записи
    		push 	bp
    		mov	bp,sp
    		push	ax

    Задача:
    Подсчитать в тексте количество слов, содержащих от 3 до 5 символов. Слово - это последовательность символов, отличных от пробела.

    А ниже пример который нужно переделать под задачу...

    guest, 14 Января 2009

    Комментарии (1)
  2. Assembler / Говнокод #330

    +4

    1. 1
    db "Ассемблер язык настолько суровый, что для него нет понятия говнокода!"

    guest, 05 Января 2009

    Комментарии (2)
  3. Assembler / Говнокод #329

    +12

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    BuildRotateMatrix_:
    	mov edi,offset _RotateM
    
    	fld [esi]._x
    	fsincos
    
    	fld [esi]._y
    	fsincos
    
    	fld [esi]._z
    	fsincos
    
    	fld st(0)
    	fmul st(0),st(3)
    	fstp [edi]._E00
    
    	fld st(2)
    	fmul st(0),st(2)
    	fstp [edi]._E01
    
    	fld st(3)
    	fchs
    	fstp [edi]._E02
    	
    	fld st(5)
    	fmul st(0),st(4)
    	fmul st(0),st(1)
    
    	fld st(5)
    	fmul st(0),st(3)
    
    	fsubp st(1),st(0)
    	fstp [edi]._E10
    
    	fld st(5)
    	fmul st(0),st(3)
    	fmul st(0),st(1)
    	fld st(5)
    	fmul st(0),st(4)
    	faddp st(1),st(0)
    	fstp [edi]._E11
    
    	fld st(5)
    	fmul st(0),st(3)
    	fstp [edi]._E12
    
    	fld st(4)
    	fmul st(0),st(4)
    	fmul st(0),st(1)
    
    	fld st(6)
    	fmul st(0),st(3)
    
    	faddp st(1),st(0)
    	fstp [edi]._E20
    
    	fld st(4)
    	fmul st(0),st(4)
    	fmul st(0),st(2)
    
    	fld st(6)
    	fmul st(0),st(2)
    
    	fsubp st(1),st(0)
    	fstp [edi]._E21
    
    	fld st(4)
    	fmul st(0),st(3)
    	fstp [edi]._E22
    
    	finit
    
    	fld1
    	fstp [edi]._E33
    
    	xor eax,eax
    	mov [edi]._E03,eax
    	mov [edi]._E13,eax
    	mov [edi]._E23,eax
    
    	mov [edi]._E30,eax
    	mov [edi]._E31,eax
    	mov [edi]._E32,eax
    
    	ret

    На самом деле это не говнокод, но на осомблере всё выглядит как кусок говна :3

    guest, 04 Января 2009

    Комментарии (2)
  4. Assembler / Говнокод #306

    −232

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    push esp
    push $00000101
    mov eax,[$0044ee50]
    mov eax,[eax] ;eax = 0
    call eax

    Вызывал функцию WSAStartup в дельфе, но забыл из какого она юнита. Хелп показал 2 пункта WSAStartup, не подумал тупо скопировал IdWinsock (вместо Winsock). Запускаю - access violation. В дебагере ctrl+c. Дельфя скомпилила так, что в любом случае вылетает аксес :)

    guest, 29 Декабря 2008

    Комментарии (11)
  5. Assembler / Говнокод #181

    −267

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    @@r1: 
    	db 0fh, 31h
    	mov edi, edx 
    	mov ebx, eax 
    	db 0fh, 31h
    	cmp edi, edx 
    	jnz @@r1 
    	sub eax, ebx 
    	mov [k], eax
    	mov ecx, 0ah
    @@cycle: 
    	db 0fh, 31h
    	mov edi, edx 
    	mov ebx, eax 
    	db 0fh, 31h
    	cmp edi, edx 
    	jnz @@cycle 
    	sub eax, ebx 
    	cmp eax, [k]
    	jg @@ext1 
    	mov [k], eax
    @@ext1: 
    	dec ecx 
    	jnz @@cycle 
    	mov eax, k
    
    	cmp [k],200
    	jg Detected

    ммм.. FASM, детект виртуальной машины с ляпой

    guest, 15 Декабря 2008

    Комментарии (33)
  6. Assembler / Говнокод #78

    −248

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    nop
    nop
    nop
    call somelabel
    somelabel:
    pop si
    sub si, 3

    ассемблер - источник массы говнокода, классика...

    guest, 08 Декабря 2008

    Комментарии (27)