Игра "Жизнь", 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д