Language: Assembly Author: Ben Olmstead Notes: x86/MS-DOS bits 16 org 256 mov ah,64 mov bx,1 mov cx,720 mov dx,b+16 int 33 mov cx,90 mov si,b+16 c:push cx mov ah,64 mov bx,1 mov cx,6 mov dx,b int 33 mov cx,7 a:push cx mov al,[si] shr al,4 add al,48 cmp al,58 jb g add al,39 g:mov [b+8],al lodsb and al,15 add al,48 cmp al,58 jb e add al,39 e:mov [b+9],al mov ah,64 mov bx,1 mov cx,5 mov dx,b+6 int 33 pop cx loop a mov al,[si] shr al,4 add al,48 cmp al,58 jb h add al,39 h:mov [b+8],al lodsb and al,15 add al,48 cmp al,58 jb n add al,39 n:mov [b+9],al mov ah,64 mov bx,1 mov cx,4 mov dx,b+6 int 33 pop cx loop c mov ah,64 mov bx,1 mov cx,5 mov dx,b+11 int 33 mov ah,76 int 33 b db 13,10,' db 0x ,',13,10,'end' db 0x62,0x69,0x74,0x73,0x20,0x31,0x36,0x0d db 0x0a,0x6f,0x72,0x67,0x20,0x32,0x35,0x36 db 0x0d,0x0a,0x6d,0x6f,0x76,0x20,0x61,0x68 db 0x2c,0x36,0x34,0x0d,0x0a,0x6d,0x6f,0x76 db 0x20,0x62,0x78,0x2c,0x31,0x0d,0x0a,0x6d db 0x6f,0x76,0x20,0x63,0x78,0x2c,0x37,0x32 db 0x30,0x0d,0x0a,0x6d,0x6f,0x76,0x20,0x64 db 0x78,0x2c,0x62,0x2b,0x31,0x36,0x0d,0x0a db 0x69,0x6e,0x74,0x20,0x33,0x33,0x0d,0x0a db 0x6d,0x6f,0x76,0x20,0x63,0x78,0x2c,0x39 db 0x30,0x0d,0x0a,0x6d,0x6f,0x76,0x20,0x73 db 0x69,0x2c,0x62,0x2b,0x31,0x36,0x0d,0x0a db 0x63,0x3a,0x70,0x75,0x73,0x68,0x20,0x63 db 0x78,0x0d,0x0a,0x6d,0x6f,0x76,0x20,0x61 db 0x68,0x2c,0x36,0x34,0x0d,0x0a,0x6d,0x6f db 0x76,0x20,0x62,0x78,0x2c,0x31,0x0d,0x0a db 0x6d,0x6f,0x76,0x20,0x63,0x78,0x2c,0x36 db 0x0d,0x0a,0x6d,0x6f,0x76,0x20,0x64,0x78 db 0x2c,0x62,0x0d,0x0a,0x69,0x6e,0x74,0x20 db 0x33,0x33,0x0d,0x0a,0x6d,0x6f,0x76,0x20 db 0x63,0x78,0x2c,0x37,0x0d,0x0a,0x61,0x3a db 0x70,0x75,0x73,0x68,0x20,0x63,0x78,0x0d db 0x0a,0x6d,0x6f,0x76,0x20,0x61,0x6c,0x2c db 0x5b,0x73,0x69,0x5d,0x0d,0x0a,0x73,0x68 db 0x72,0x20,0x61,0x6c,0x2c,0x34,0x0d,0x0a db 0x61,0x64,0x64,0x20,0x61,0x6c,0x2c,0x34 db 0x38,0x0d,0x0a,0x63,0x6d,0x70,0x20,0x61 db 0x6c,0x2c,0x35,0x38,0x0d,0x0a,0x6a,0x62 db 0x20,0x67,0x0d,0x0a,0x61,0x64,0x64,0x20 db 0x61,0x6c,0x2c,0x33,0x39,0x0d,0x0a,0x67 db 0x3a,0x6d,0x6f,0x76,0x20,0x5b,0x62,0x2b db 0x38,0x5d,0x2c,0x61,0x6c,0x0d,0x0a,0x6c db 0x6f,0x64,0x73,0x62,0x0d,0x0a,0x61,0x6e db 0x64,0x20,0x61,0x6c,0x2c,0x31,0x35,0x0d db 0x0a,0x61,0x64,0x64,0x20,0x61,0x6c,0x2c db 0x34,0x38,0x0d,0x0a,0x63,0x6d,0x70,0x20 db 0x61,0x6c,0x2c,0x35,0x38,0x0d,0x0a,0x6a db 0x62,0x20,0x65,0x0d,0x0a,0x61,0x64,0x64 db 0x20,0x61,0x6c,0x2c,0x33,0x39,0x0d,0x0a db 0x65,0x3a,0x6d,0x6f,0x76,0x20,0x5b,0x62 db 0x2b,0x39,0x5d,0x2c,0x61,0x6c,0x0d,0x0a db 0x6d,0x6f,0x76,0x20,0x61,0x68,0x2c,0x36 db 0x34,0x0d,0x0a,0x6d,0x6f,0x76,0x20,0x62 db 0x78,0x2c,0x31,0x0d,0x0a,0x6d,0x6f,0x76 db 0x20,0x63,0x78,0x2c,0x35,0x0d,0x0a,0x6d db 0x6f,0x76,0x20,0x64,0x78,0x2c,0x62,0x2b db 0x36,0x0d,0x0a,0x69,0x6e,0x74,0x20,0x33 db 0x33,0x0d,0x0a,0x70,0x6f,0x70,0x20,0x63 db 0x78,0x0d,0x0a,0x6c,0x6f,0x6f,0x70,0x20 db 0x61,0x0d,0x0a,0x6d,0x6f,0x76,0x20,0x61 db 0x6c,0x2c,0x5b,0x73,0x69,0x5d,0x0d,0x0a db 0x73,0x68,0x72,0x20,0x61,0x6c,0x2c,0x34 db 0x0d,0x0a,0x61,0x64,0x64,0x20,0x61,0x6c db 0x2c,0x34,0x38,0x0d,0x0a,0x63,0x6d,0x70 db 0x20,0x61,0x6c,0x2c,0x35,0x38,0x0d,0x0a db 0x6a,0x62,0x20,0x68,0x0d,0x0a,0x61,0x64 db 0x64,0x20,0x61,0x6c,0x2c,0x33,0x39,0x0d db 0x0a,0x68,0x3a,0x6d,0x6f,0x76,0x20,0x5b db 0x62,0x2b,0x38,0x5d,0x2c,0x61,0x6c,0x0d db 0x0a,0x6c,0x6f,0x64,0x73,0x62,0x0d,0x0a db 0x61,0x6e,0x64,0x20,0x61,0x6c,0x2c,0x31 db 0x35,0x0d,0x0a,0x61,0x64,0x64,0x20,0x61 db 0x6c,0x2c,0x34,0x38,0x0d,0x0a,0x63,0x6d db 0x70,0x20,0x61,0x6c,0x2c,0x35,0x38,0x0d db 0x0a,0x6a,0x62,0x20,0x6e,0x0d,0x0a,0x61 db 0x64,0x64,0x20,0x61,0x6c,0x2c,0x33,0x39 db 0x0d,0x0a,0x6e,0x3a,0x6d,0x6f,0x76,0x20 db 0x5b,0x62,0x2b,0x39,0x5d,0x2c,0x61,0x6c db 0x0d,0x0a,0x6d,0x6f,0x76,0x20,0x61,0x68 db 0x2c,0x36,0x34,0x0d,0x0a,0x6d,0x6f,0x76 db 0x20,0x62,0x78,0x2c,0x31,0x0d,0x0a,0x6d db 0x6f,0x76,0x20,0x63,0x78,0x2c,0x34,0x0d db 0x0a,0x6d,0x6f,0x76,0x20,0x64,0x78,0x2c db 0x62,0x2b,0x36,0x0d,0x0a,0x69,0x6e,0x74 db 0x20,0x33,0x33,0x0d,0x0a,0x70,0x6f,0x70 db 0x20,0x63,0x78,0x0d,0x0a,0x6c,0x6f,0x6f db 0x70,0x20,0x63,0x0d,0x0a,0x6d,0x6f,0x76 db 0x20,0x61,0x68,0x2c,0x36,0x34,0x0d,0x0a db 0x6d,0x6f,0x76,0x20,0x62,0x78,0x2c,0x31 db 0x0d,0x0a,0x6d,0x6f,0x76,0x20,0x63,0x78 db 0x2c,0x35,0x0d,0x0a,0x6d,0x6f,0x76,0x20 db 0x64,0x78,0x2c,0x62,0x2b,0x31,0x31,0x0d db 0x0a,0x69,0x6e,0x74,0x20,0x33,0x33,0x0d db 0x0a,0x6d,0x6f,0x76,0x20,0x61,0x68,0x2c db 0x37,0x36,0x0d,0x0a,0x69,0x6e,0x74,0x20 db 0x33,0x33,0x0d,0x0a,0x62,0x20,0x20,0x20 db 0x64,0x62,0x20,0x31,0x33,0x2c,0x31,0x30 db 0x2c,0x27,0x20,0x64,0x62,0x20,0x30,0x78 db 0x20,0x20,0x2c,0x27,0x2c,0x31,0x33,0x2c db 0x31,0x30,0x2c,0x27,0x65,0x6e,0x64,0x27 end Author: Caucci Luca ;Questo programma visualizza il suo codice sorgente. ;Autore: Caucci Luca (e-mail: caucci@cs.unibo.it) .model tiny .code org 0100h inizio: jmp programma a_capo DB 'ww DB w', 00h stringa DB ';Questo programma visualizza il suo codice sorgente.w;Autore: Caucci Luca (e-mail: caucci@cs.unibo.it)ww .model tinyw .codew org 0100hwwinizio:w jmp programmawwa_capo DB w~w, 00hws/' DB 'tringa DB w~w, 00hwformato DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 27hw DW OFFSET(a_capo)w DB 27h, 0dh, 27hw DW OFFSET(stringa)w DW OFFSET(a_capo)w /' DB 'DB 27h, 0dh, 27hw DW OFFSET(a_capo)w DB 27h, 0dh, 27hw DW OFFSET(a_capo)w DB 27h, 0dh, 27hw DW OFFSET(a_capo)w DB 27h, 0dh, 27hw DW OFFSET(a_/' DB 'capo)w DB 27h, 0dh, 27hw DW OFFSET(a_capo)w DB 27h, 0dh, 27hw DW OFFSET(a_capo)w DB 27h, 0dh, 27hw DW OFFSET(a_capo)w DB 27h, 0dh, 27hw /' DB 'DW OFFSET(a_capo)w DB 27h, 0dh, 27hw DW OFFSET(a_capo)w DB 27h, 0dh, 27hw DW OFFSET(a_capo)w DB 27h, 0dh, 27hw DW OFFSET(a_capo)w DB 27h, 0dh/' DB ', 27hw DW OFFSET(a_capo)w DB 27h, 0dh, 27hw DW OFFSET(a_capo)w DB 27h, 0dh, 27hw DW OFFSET(a_capo)w DB 27h, 0dh, 27hw DW OFFSET(a_capo)w /' DB ' DB 27h, 0dh, 27hw DW OFFSET(a_capo)w DB 27h, 0dh, 27h, 27h, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dhw DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dhw DB 0dh, 0d/' DB 'h, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dhw DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dhw DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dhw DB 0dh, 0/' DB 'dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dhw DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 27h, 0f7hw DB 27h, 0dh, 0dh, 27h, 7eh, 27h, 0dh, 0dh, 27h, 0afh, 27h, 0dhw DB 0dh/' DB ', 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dhw DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 27h, 0afhw DB 27h, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dhw DB 0/' DB 'dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dhwwprogramma:w lea ax, [formato]w push axw lea ax, [stringa]w push axw call disp_strw mov ah, 4chw int /' DB '21hwwdisp_str PROCw__indstr EQU bp + 04hw__param EQU bp + 06hww push bpw mov bp, spw push bxw push dxw push siw push diw cldw mov si, [__indstr/' DB ']w mov bx, [__param]w mov ah, 02hw__leggi_carattere:w lodsbw cmp al, 00hw je __fine_stringaw cmp al, wwww je __caratt_specw cmp al, wwww /' DB ' je __stringaw cmp al, wwww je __leggi_caratterew mov dl, alw int 21hw jmp __leggi_caratterew__caratt_spec:w mov dl, [bx]w inc bxw int /' DB ' 21hw cmp dl, 0dhw jne __leggi_caratterew mov dl, 0ahw int 21hw jmp __leggi_caratterew__stringa:w mov di, [bx]w add bx, 0002hw__carattere_succ_stringa:/' DB 'w mov dl, [di]w inc diw cmp dl, 00hw je __leggi_caratterew int 21hw cmp dl, wwww jne __carattere_succ_stringaw mov ax, bxw add ax,/' DB ' 0002hw push axw push [bx]w call disp_strw mov bx, axw mov ah, 02hw jmp __carattere_succ_stringaw__fine_stringa:w mov ax, bxw pop diw po/' DB 'p siw pop dxw pop bxw pop bpw ret 0004hwdisp_str ENDPww END inizioww', 00h formato DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(stringa) DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h, 27h, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 27h, 0f7h DB 27h, 0dh, 0dh, 27h, 7eh, 27h, 0dh, 0dh, 27h, 0afh, 27h, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 27h, 0afh DB 27h, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh programma: lea ax, [formato] push ax lea ax, [stringa] push ax call disp_str mov ah, 4ch int 21h disp_str PROC __indstr EQU bp + 04h __param EQU bp + 06h push bp mov bp, sp push bx push dx push si push di cld mov si, [__indstr] mov bx, [__param] mov ah, 02h __leggi_carattere: lodsb cmp al, 00h je __fine_stringa cmp al, 'w' je __caratt_spec cmp al, '~' je __stringa cmp al, '/' je __leggi_carattere mov dl, al int 21h jmp __leggi_carattere __caratt_spec: mov dl, [bx] inc bx int 21h cmp dl, 0dh jne __leggi_carattere mov dl, 0ah int 21h jmp __leggi_carattere __stringa: mov di, [bx] add bx, 0002h __carattere_succ_stringa: mov dl, [di] inc di cmp dl, 00h je __leggi_carattere int 21h cmp dl, '/' jne __carattere_succ_stringa mov ax, bx add ax, 0002h push ax push [bx] call disp_str mov bx, ax mov ah, 02h jmp __carattere_succ_stringa __fine_stringa: mov ax, bx pop di pop si pop dx pop bx pop bp ret 0004h disp_str ENDP END inizio Author: Luca Caucci ;Questo programma visualizza il suo codice sorgente. ;Autore: Luca Caucci (e-mail: caucci@cs.unibo.it) .model tiny .code org 0100h inizio: jmp programma a_capo DB '÷÷ DB ÷', 00h stringa DB ';Questo programma visualizza il suo codice sorgente.÷;Autore: Luca Caucci (e-mail: caucci@cs.unibo.it)÷÷ .model tiny÷ .code÷ org 0100h÷÷inizio:÷ jmp programma÷÷a_capo DB ÷~÷, 00h÷s¯' DB 'tringa DB ÷~÷, 00h÷formato DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 27h÷ DW OFFSET(a_capo)÷ DB 27h, 0dh, 27h÷ DW OFFSET(stringa)÷ DW OFFSET(a_capo)÷ ¯' DB 'DB 27h, 0dh, 27h÷ DW OFFSET(a_capo)÷ DB 27h, 0dh, 27h÷ DW OFFSET(a_capo)÷ DB 27h, 0dh, 27h÷ DW OFFSET(a_capo)÷ DB 27h, 0dh, 27h÷ DW OFFSET(a_¯' DB 'capo)÷ DB 27h, 0dh, 27h÷ DW OFFSET(a_capo)÷ DB 27h, 0dh, 27h÷ DW OFFSET(a_capo)÷ DB 27h, 0dh, 27h÷ DW OFFSET(a_capo)÷ DB 27h, 0dh, 27h÷ ¯' DB 'DW OFFSET(a_capo)÷ DB 27h, 0dh, 27h÷ DW OFFSET(a_capo)÷ DB 27h, 0dh, 27h÷ DW OFFSET(a_capo)÷ DB 27h, 0dh, 27h÷ DW OFFSET(a_capo)÷ DB 27h, 0dh¯' DB ', 27h÷ DW OFFSET(a_capo)÷ DB 27h, 0dh, 27h÷ DW OFFSET(a_capo)÷ DB 27h, 0dh, 27h÷ DW OFFSET(a_capo)÷ DB 27h, 0dh, 27h÷ DW OFFSET(a_capo)÷ ¯' DB ' DB 27h, 0dh, 27h÷ DW OFFSET(a_capo)÷ DB 27h, 0dh, 27h, 27h, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh÷ DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh÷ DB 0dh, 0d¯' DB 'h, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh÷ DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh÷ DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh÷ DB 0dh, 0¯' DB 'dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh÷ DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 27h, 0f7h÷ DB 27h, 0dh, 0dh, 27h, 7eh, 27h, 0dh, 0dh, 27h, 0afh, 27h, 0dh÷ DB 0dh¯' DB ', 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh÷ DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 27h, 0afh÷ DB 27h, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh÷ DB 0¯' DB 'dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh÷÷programma:÷ lea ax, [formato]÷ push ax÷ lea ax, [stringa]÷ push ax÷ call disp_str÷ mov ah, 4ch÷ int ¯' DB '21h÷÷disp_str PROC÷__indstr EQU bp + 04h÷__param EQU bp + 06h÷÷ push bp÷ mov bp, sp÷ push bx÷ push dx÷ push si÷ push di÷ cld÷ mov si, [__indstr¯' DB ']÷ mov bx, [__param]÷ mov ah, 02h÷__leggi_carattere:÷ lodsb÷ cmp al, 00h÷ je __fine_stringa÷ cmp al, ÷÷÷÷ je __caratt_spec÷ cmp al, ÷÷÷÷ ¯' DB ' je __stringa÷ cmp al, ÷÷÷÷ je __leggi_carattere÷ mov dl, al÷ int 21h÷ jmp __leggi_carattere÷__caratt_spec:÷ mov dl, [bx]÷ inc bx÷ int ¯' DB ' 21h÷ cmp dl, 0dh÷ jne __leggi_carattere÷ mov dl, 0ah÷ int 21h÷ jmp __leggi_carattere÷__stringa:÷ mov di, [bx]÷ add bx, 0002h÷__carattere_succ_stringa:¯' DB '÷ mov dl, [di]÷ inc di÷ cmp dl, 00h÷ je __leggi_carattere÷ int 21h÷ cmp dl, ÷÷÷÷ jne __carattere_succ_stringa÷ mov ax, bx÷ add ax,¯' DB ' 0002h÷ push ax÷ push [bx]÷ call disp_str÷ mov bx, ax÷ mov ah, 02h÷ jmp __carattere_succ_stringa÷__fine_stringa:÷ mov ax, bx÷ pop di÷ po¯' DB 'p si÷ pop dx÷ pop bx÷ pop bp÷ ret 0004h÷disp_str ENDP÷÷ END inizio÷÷', 00h formato DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(stringa) DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h DW OFFSET(a_capo) DB 27h, 0dh, 27h, 27h, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 27h, 0f7h DB 27h, 0dh, 0dh, 27h, 7eh, 27h, 0dh, 0dh, 27h, 0afh, 27h, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 27h, 0afh DB 27h, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh DB 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh, 0dh programma: lea ax, [formato] push ax lea ax, [stringa] push ax call disp_str mov ah, 4ch int 21h disp_str PROC __indstr EQU bp + 04h __param EQU bp + 06h push bp mov bp, sp push bx push dx push si push di cld mov si, [__indstr] mov bx, [__param] mov ah, 02h __leggi_carattere: lodsb cmp al, 00h je __fine_stringa cmp al, '÷' je __caratt_spec cmp al, '~' je __stringa cmp al, '¯' je __leggi_carattere mov dl, al int 21h jmp __leggi_carattere __caratt_spec: mov dl, [bx] inc bx int 21h cmp dl, 0dh jne __leggi_carattere mov dl, 0ah int 21h jmp __leggi_carattere __stringa: mov di, [bx] add bx, 0002h __carattere_succ_stringa: mov dl, [di] inc di cmp dl, 00h je __leggi_carattere int 21h cmp dl, '¯' jne __carattere_succ_stringa mov ax, bx add ax, 0002h push ax push [bx] call disp_str mov bx, ax mov ah, 02h jmp __carattere_succ_stringa __fine_stringa: mov ax, bx pop di pop si pop dx pop bx pop bp ret 0004h disp_str ENDP END inizio Author: Bertram Felgenhauer Notes: 80x86 TASM. Basically, the program reads it's own code/data segment and converts it to decimal numbers, seperated by "\nDB ". MODEL TINY .CODE .STARTUP DB 177 DB 076 DB 186 DB 044 DB 001 DB 172 DB 180 DB 036 DB 179 DB 004 DB 191 DB 080 DB 001 DB 079 DB 136 DB 037 DB 212 DB 010 DB 004 DB 048 DB 134 DB 196 DB 075 DB 117 DB 244 DB 180 DB 009 DB 205 DB 033 DB 178 DB 071 DB 226 DB 228 DB 178 DB 038 DB 205 DB 033 DB 195 DB 013 DB 010 DB 069 DB 078 DB 068 DB 036 DB 077 DB 079 DB 068 DB 069 DB 076 DB 032 DB 084 DB 073 DB 078 DB 089 DB 013 DB 010 DB 046 DB 067 DB 079 DB 068 DB 069 DB 013 DB 010 DB 046 DB 083 DB 084 DB 065 DB 082 DB 084 DB 085 DB 080 DB 013 DB 010 DB 068 DB 066 DB 032 END