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

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
  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 guest, (Updated )

Комментарии (1, +1)

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

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
  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 guest, (Updated )

Комментарии (2, +2)