; Public Domain cpu 8086 section CODE ..start: mov ax, FIRST mov es, ax mov dx, REPEAT loop: mov ax, 2626h mov cx, BLOCKSIZE / 2 xor di, di repe scasw jne bad dec dx jz good mov ax, es add ax, BLOCKSIZE / 16 mov es, ax jmp loop bad: int3 mov ax, es mov bx, cs sub ax, bx call disp_ax_hex mov dl, ':' mov ah, 02h int 21h mov ax, di call disp_ax_hex mov dl, 13 mov ah, 02h int 21h mov dl, 10 mov ah, 02h int 21h mov ax, 4CFFh int 21h good: mov ax, 4C00h int 21h disp_ax_hex: xchg al, ah call .al xchg al, ah .al: push cx mov cl, 4 rol al, cl call .nybble rol al, cl pop cx .nybble: push ax push dx and al, 15 add al, '0' cmp al, '9' jbe .got add al, 7 .got: xchg dx, ax mov ah, 02h int 21h pop dx pop ax retn REPEAT equ 64 BLOCKSIZE equ 1024 section FIRST align=16 %assign id 0 %rep REPEAT section SECTION%+id align=16 times BLOCKSIZE db 26h %assign id id+1 %endrep section STACK stack resb 512