MASM на многие листинги, в частности 'Жизнь' из Зубкова (lifebios.asm) выдаёт: "unresolved external symbol _start". Ещё творение мелкомягких ругает FAR_BSS (кстати каково значение этой (контанты||переменной?) - пытался под FASM переписать). Надеюсь код в студию не надо.
Так, почему ругань этот MASM наводит я кажется понял, т.к мой мелкомягкий компилер не умеет 'делать' DOS программы . Вопрос: что за FAR_BSS, чтобы я смог его впихнуть в прогу на FASM'e? (Значение этого FAR_BSS).
Да, что-то я зачастил... iZzz32, спасибо за ответ, но не получилось. Видать я туплю. Зубков после листинга даёт пример записи прямо в видеопамять, что позволяет задекларировать прогу как .COM, как задать эту cекцию?(простите мою глупость...) если файл .exe , то вариант с секцией легко прокатывает, но как в .COM файле задать? (тем более можно потестить лишь в нём - пишу под винду). Код (Text): org 100h start: ;push FAR_BSS pop ds xor ax, ax int 1Ah mov di, 320*200+1 fill_buffer: imul dx, 4e35h inc dx mov ax, dx shr ax, 15 mov byte[di], al dec di jnz fill_buffer mov ax, 0013h int 10h new_cycle: mov di, 320*200+1 step_1: mov al, byte[di+1] add al, byte[di-1] add al, byte[di+319] add al, byte[di-319] add al, byte[di+320] add al, byte[di-320] add al, byte[di+321] add al, byte[di-321] shl al, 4 or byte[di], al dec di jnz step_1 mov di, 320*200+1 flip_cycle: mov al, byte[di] shr al, 4 cmp al, 3 je birth cmp al, 2 je f_c_continue mov byte[di], 0 jmp short f_c_continue birth: mov byte[di], 1 f_c_continue: and byte[di], 0fh dec di jnz flip_cycle ; mov si, 320*200+1 Закомменчен первый вариант ; mov cx, 319 ; mov dx, 199 zdisplay: push 0A000h;здесь пишем в видеопамять pop es mov cx, 320*200 mov di, cx mov si, cx inc si rep movsb ; mov al, byte[si] ; mov ah, 0ch ; int 10h ; dec si ; dec cx ; jns zdisplay ; mov cx, 319 ; dec dx ;jns zdisplay mov ah, 1 int 16h jz new_cycle mov ax, 0003h int 10h mov ax, 4c00h int 21h ;segment 'FAR_BSS'/или без кавычек... FAR_BSS:db 320*200+1 dup(?)
Считать сегмент в рантайме. Или переписывать все dec di / jnz и т. п. Код (Text): start: push ds pop ax shl ax,4 add ax,FAR_BSS shr ax,4 mov ds,ax ... align 0x10 FAR_BSS:db 320*200+1 dup(?)
У Зубкова все примеры написаны на TASM. Скачай себе TASM и не взрывай людям мозг. FAR_BSS это просто имя переменной, попробуй подобавлять везде offset - должно помочь. Код (Text): push offset FAR_BSS
iZzz32, большое спасибо, всё заработало. cppasm, у Зубкова примеры под MASM и под TASM подходят. Он сам в начале книги писал. Мне больше FASM нравится, потому и страраюсь писать на нём.