Игра "Жизнь", exe в com, Assembler

Узнай цену своей работы

Формулировка задачи:

Есть программа Игра Жизнь, написанная для exe файла, нужно переделать ее в com, да так чтобы этот файл весил не более 120 байт, как это сделать?
Листинг программы
  1. .model small
  2. .stack 100h
  3. .code
  4. .186
  5. LP:
  6. push FAR_BSS
  7. pop ds
  8. xor ax,ax
  9. int 1Ah
  10. mov di,320*200+1
  11. rand_gen:
  12. imul dx,3425h
  13. inc dx
  14. mov ax,dx
  15. shr ax,15
  16. mov byte ptr [di],al
  17. dec di
  18. jnz rand_gen
  19. mov ax,0013h
  20. int 10h
  21. lloop:
  22. mov di,320*200+1
  23. neighbour:
  24. mov al, byte ptr [di+1]
  25. add al, byte ptr [di-1]
  26. add al, byte ptr [di+320]
  27. add al, byte ptr [di-320]
  28. add al, byte ptr [di+321]
  29. add al, byte ptr [di-321]
  30. add al, byte ptr [di+319]
  31. add al, byte ptr [di-319]
  32. shl al,4
  33. or byte ptr [di],al
  34. dec di
  35. jnz neighbour
  36. mov di,320*200+1
  37. selection:
  38. mov al,byte ptr [di]
  39. shr al,4
  40. cmp al,3
  41. je birth
  42. cmp al,2
  43. je cont
  44. and byte ptr [di],0
  45. jmp cont
  46. birth:
  47. mov byte ptr [di],1
  48. cont:
  49. and byte ptr [di],0Fh
  50. dec di
  51. jnz selection
  52.  
  53. mov si,320*200+1
  54. mov cx,319
  55. mov dx,199
  56. Life:
  57. mov ah,0Ch
  58. mov al, byte ptr [si]
  59. int 10h
  60. dec si
  61. dec cx
  62. jns Life
  63. mov cx,319
  64. dec dx
  65. jns Life
  66. mov ah,1
  67. int 16h
  68. jz lloop
  69. mov ax,0003h
  70. int 10h
  71.  
  72. mov ax,4C00h
  73. int 21h
  74. .fardata?
  75. db 320*200+1 dup(?)
  76. end LP

Решение задачи: «Игра "Жизнь", exe в com, Assembler»

textual
Листинг программы
  1.     .model tiny
  2.     .code
  3.     .386
  4.     org 100h
  5.    
  6. LP:
  7.     ; ax=0, bx=0, si=100h, di=sp=-2 (0FFFEh) при старте (обычно)
  8.     mov al,13h
  9.     int 10h
  10.  
  11.     mov bh,0a0h
  12.     mov es,bx
  13.  
  14.     mov al,1
  15.     mov ch,40h
  16. rand_gen:
  17.     imul di,25h ; 3425h
  18.     stosb
  19.     loop rand_gen
  20.  
  21.     shl si,1
  22.     mov di,(320-1)+200h
  23.  
  24. lloop:
  25.     mov bh,(320*200+1)/256
  26. copy:
  27.     mov al,es:[bx]
  28.     mov [bx+si],al
  29.     dec bx
  30.     jnz copy
  31.    
  32.     mov bh,(320*200+1)/256
  33. neighbour:
  34.     add al,[di+bx]
  35.     add al,[si+bx-321]
  36.  
  37.     sub al,2
  38.     jz  cont
  39.     cmp al,1
  40.     je  set
  41.     xor al,al
  42. set:mov es:[bx],al
  43. cont:
  44.     mov ax,[si+bx-321]
  45.     add ax,[di+bx]
  46.     add al,ah
  47.     add al,[si+bx]
  48.     add al,[si+bx-2]
  49.     dec bx
  50.     jnz neighbour
  51.  
  52. next:
  53.     mov ah,1
  54.     int 16h
  55.     jz  lloop
  56.  
  57.     ret
  58.  
  59. last:
  60.     end LP

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут