Игра "Жизнь", exe в com, Assembler
Формулировка задачи:
Есть программа Игра Жизнь, написанная для exe файла, нужно переделать ее в com, да так чтобы этот файл весил не более 120 байт, как это сделать?
Листинг программы
- .model small
- .stack 100h
- .code
- .186
- LP:
- push FAR_BSS
- pop ds
- xor ax,ax
- int 1Ah
- mov di,320*200+1
- rand_gen:
- imul dx,3425h
- inc dx
- mov ax,dx
- shr ax,15
- mov byte ptr [di],al
- dec di
- jnz rand_gen
- mov ax,0013h
- int 10h
- lloop:
- mov di,320*200+1
- neighbour:
- mov al, byte ptr [di+1]
- add al, byte ptr [di-1]
- add al, byte ptr [di+320]
- add al, byte ptr [di-320]
- add al, byte ptr [di+321]
- add al, byte ptr [di-321]
- add al, byte ptr [di+319]
- add al, byte ptr [di-319]
- shl al,4
- or byte ptr [di],al
- dec di
- jnz neighbour
- mov di,320*200+1
- selection:
- mov al,byte ptr [di]
- shr al,4
- cmp al,3
- je birth
- cmp al,2
- je cont
- and byte ptr [di],0
- jmp cont
- birth:
- mov byte ptr [di],1
- cont:
- and byte ptr [di],0Fh
- dec di
- jnz selection
- mov si,320*200+1
- mov cx,319
- mov dx,199
- Life:
- mov ah,0Ch
- mov al, byte ptr [si]
- int 10h
- dec si
- dec cx
- jns Life
- mov cx,319
- dec dx
- jns Life
- mov ah,1
- int 16h
- jz lloop
- mov ax,0003h
- int 10h
- mov ax,4C00h
- int 21h
- .fardata?
- db 320*200+1 dup(?)
- end LP
Решение задачи: «Игра "Жизнь", exe в com, Assembler»
textual
Листинг программы
- .model tiny
- .code
- .386
- org 100h
- LP:
- ; ax=0, bx=0, si=100h, di=sp=-2 (0FFFEh) при старте (обычно)
- mov al,13h
- int 10h
- mov bh,0a0h
- mov es,bx
- mov al,1
- mov ch,40h
- rand_gen:
- imul di,25h ; 3425h
- stosb
- loop rand_gen
- shl si,1
- mov di,(320-1)+200h
- lloop:
- mov bh,(320*200+1)/256
- copy:
- mov al,es:[bx]
- mov [bx+si],al
- dec bx
- jnz copy
- mov bh,(320*200+1)/256
- neighbour:
- add al,[di+bx]
- add al,[si+bx-321]
- sub al,2
- jz cont
- cmp al,1
- je set
- xor al,al
- set:mov es:[bx],al
- cont:
- mov ax,[si+bx-321]
- add ax,[di+bx]
- add al,ah
- add al,[si+bx]
- add al,[si+bx-2]
- dec bx
- jnz neighbour
- next:
- mov ah,1
- int 16h
- jz lloop
- ret
- last:
- end LP
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д