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

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
  100. 100
.org 80h
src: db "++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+."
table:
	db 0h db 3Eh dw @i1
	db 0h db 3Ch dw @i2
	db 0h db 2Bh dw @i3
	db 0h db 2Dh dw @i4
	db 0h db 5Dh dw @i5
	db 0h db 2Eh dw @i6
	db 0h db 5Bh dw @i7
start: ; %a iptr %b dptr ;
	.loop:
		mov %cl [%a + @src]
		cmp %cl 0h
		je @.loop.break
		mov %si 0h
		.tloop:
			mov %ch [4h * %si + {@table + 1h}]
			cmp %cl %ch
			jne @.tloop.continue
				push @.tloop.break
				mov %ip [4h * %si + {@table + 2h}]
			.tloop.continue:
			inc %si
			cmp %si 8h
			jl @.tloop
			.tloop.break:
		inc %a
		jmp @.loop
		.loop.break: 
	int 0h
i1: ; > ; 
	inc %b ret
i2: ; < ; 
	dec %b ret
i3: ; + ;
	push %el
	mov %el [%b + @data]
	inc %el
	mov [%b + @data] %el
	pop %el
	ret
i4: ; - ;
	push %el
	mov %el [%b + @data]
	dec %el
	mov [%b + @data] %el
	pop %el
	ret
i5: ; ] ;
	push %c
	mov %cl [%b + @data]
	cmp %cl 0h
	je @.loop.break
	mov %c 0h
	dec %a
	.loop:
		cmpb [%a + @src] 5Dh ; ']' ;
		jne @.loop.1
			inc %c
		.loop.1:
		cmpb [%a + @src] 5Bh ; '[' ;
		jne @.loop.2
			cmp %c 0h
			jz @.loop.break
			dec %c
		.loop.2:
		loop %a @.loop
	.loop.break:
	pop %c
	ret
i6: ; . ;
	push %cl
	outb E9h [%b + @data]
	.wait:
		inb %cl E9h
		cmp %cl 0h
		jne @.wait
	pop %cl
	ret
i7: ; [ ;
	push %c
	mov %c [%b + @data]
	cmp %c 0h
	jne @.loop.break
	mov %c 0h
	.loop:
		cmpb [%a + @src] 5Bh ; '[' ;
		jne @.loop.1
			inc %c
		.loop.1:
		cmpb [%a + @src] 5Dh ; ']' ;
		jne @.loop.2
			cmp %c 0h
			jz @.loop.break
				dec %c
		.loop.2:
		inc %a
		jmp @.loop
	.loop.break: pop %c ret

Hello World!

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

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

  • встречайте - долбоебизм на уровне префиксов!
    .org 80h
    src: db "+++++++[>++++++++++>++++<<-]>++.>[<+>>+<<>-]<+.+++++++..+++.>>++++.<<++++++++.--------.+++.------.--------.[-]<+++[>+++++++++++<-]>."
    
    table:
    	db 0h db 3Eh dw @i1
    	db 0h db 3Ch dw @i2
    	db 0h db 2Bh dw @i3
    	db 0h db 2Dh dw @i4
    	db 0h db 5Dh dw @i5
    	db 0h db 2Eh dw @i6
    	db 0h db 5Bh dw @i7
    start: ; %a iptr %b dptr ;
    	.loop:
    		mov %cl [%a + @src]
    		cmp %cl 0h
    		cz jmp @.loop.break
    		mov %si 0h
    		.tloop:
    			mov %ch [4h * %si + {@table + 1h}]
    			cmp %cl %ch
    				ce 	push @.tloop.break
    				ce 	mov %ip [4h * %si + {@table + 2h}]
    			inc %si
    			cmp %si 8h
    			cl jmp @.tloop
    			.tloop.break:
    		inc %a
    		jmp @.loop
    		.loop.break: 
    	int 0h
    i1: ; > ; 
    	inc %b ret
    i2: ; < ; 
    	dec %b ret
    i3: ; + ;
    	push %el
    	mov %el [%b + @data]
    	inc %el
    	mov [%b + @data] %el
    	pop %el
    	ret
    i4: ; - ;
    	push %el
    	mov %el [%b + @data]
    	dec %el
    	mov [%b + @data] %el
    	pop %el
    	ret
    i5: ; ] ;
    	push %c
    	cmpb [%b + @data] 0h 
    	cz pop %c
    	cz ret
    	mov %c 0h
    	dec %a
    	.loop:
    		cmpb [%a + @src] 5Dh ; ']' ;
    		ce inc %c
    		cmpb [%a + @src] 5Bh ; '[' ;
    		cne jmp @.loop.2
    			cmp %c 0h
    			cz pop %c
    			cz ret
    			dec %c
    		.loop.2:
    		loop %a @.loop
    	.loop.break:
    	pop %c
    	ret
    i6: ; . ;
    	push %cl
    	outb E9h [%b + @data]
    	.wait:
    		inb %cl E9h
    		cmp %cl 0h
    		cne jmp @.wait
    	pop %cl
    	ret
    i7: ; [ ;
    	push %c
    	mov %c [%b + @data]
    	cmp %c 0h
    	cne jmp @.loop.break
    	mov %c 0h
    	.loop:
    		cmpb [%a + @src] 5Bh ; '[' ;
    		ce inc %c
    		cmpb [%a + @src] 5Dh ; ']' ;
    		cne jmp @.loop.2
    			cmp %c 0h
    			cz jmp @.loop.break
    				dec %c
    		.loop.2:
    		inc %a
    		jmp @.loop
    	.loop.break: 
    	pop %c 
    	ret
    trace:
    	push %cl
    	outb E9h [%a + @src]
    	.wait:
    		inb %cl E9h
    		cmp %cl 0h
    		cne jmp @.wait
    	pop %cl
    	ret
    data:
    Ответить

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

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

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


    8