- 1
- 2
mov ebx, eax
mov eax, ebx
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+72.8
mov ebx, eax
mov eax, ebx
Такое борландовский кодогенератор иногда выдаёт
+43.8
<...>
jmp 0x0437
jmp 0x0437
<...>
На всякий случай, наверное если первый не сработает :)
−5
;------------------------------------------------------------------------------------
; Задача. Подсчитать максимальную длину слова входного
; текста. Слово - это последовательность символов, отличных от
; пробела. Длина текста и слова не более 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 символов. Слово - это последовательность символов, отличных от пробела.
А ниже пример который нужно переделать под задачу...
+4
db "Ассемблер язык настолько суровый, что для него нет понятия говнокода!"
+12
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
−232
push esp
push $00000101
mov eax,[$0044ee50]
mov eax,[eax] ;eax = 0
call eax
Вызывал функцию WSAStartup в дельфе, но забыл из какого она юнита. Хелп показал 2 пункта WSAStartup, не подумал тупо скопировал IdWinsock (вместо Winsock). Запускаю - access violation. В дебагере ctrl+c. Дельфя скомпилила так, что в любом случае вылетает аксес :)
−267
@@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, детект виртуальной машины с ляпой
−248
nop
nop
nop
call somelabel
somelabel:
pop si
sub si, 3
ассемблер - источник массы говнокода, классика...