;make a abd3 key disk(lockup) code segment assume cs:code,ds:code org 100h begin:jmp kkk int_1e dd ? new_1e db 10 dup(0) file db 'key.dat',0 chrn3 db 18h,1h,1h,2h db 18h,1h,2h,2h db 18h,1h,3h,2h db 18h,1h,4h,2h db 18h,1h,5h,2h db 18h,1h,6h,2h db 18h,1h,7h,2h db 18h,1h,8h,2h db 18h,1h,9h,2h db 18h,1h,0ah,2h db 18h,1h,0bh,2h db 18h,1h,0ch,2h db 18h,1h,0dh,2h db 18h,1h,0eh,2h db 18h,1h,0fh,2h db 18h,1h,10h,2h db 18h,1h,0aah,4h ferrmeg db 'Format error!',0dh,0ah,'$' werrmeg db 'Write error!',0dh,0ah,'$' rerrmeg db 'Read error!',0dh,0ah,'$' fok db 'Format ok!',0dh,0ah,'$' rok db 'Read ok!',0dh,0ah,'$' wok db 'Write ok!',0dh,0ah,'$' kk proc near mov ax,0201h mov bx,5000h mov cx,0001h mov dx,0100h int 13h mov ax,0201h int 13h mov ax,0 mov ds,ax mov si,522h mov di,offset new_1e mov cx,10 rep movsb mov ax,0 mov es,ax mov byte ptr es:[526h],12h mov byte ptr es:[52ah],0h call format call f1e call readaa call un1e call write ret kk endp kkk: call kk call over f1e proc near push cs pop ds mov ax,351eh int 21h mov si,offset int_1e mov byte ptr es:[bx+7],2h mov byte ptr es:[bx+3],4 ret f1e endp format proc near push cs pop es mov ah,05h mov dx,0100h mov ch,18h mov cl,0 mov bx,offset chrn3 int 13h jb ferr push cs pop ds mov dx,offset fok mov ah,9 int 21h ret format endp un1e proc near ;push es ;mov si,0 ;mov es,si ;mov di,522h ;mov byte ptr es:[di+3],2 ;mov byte ptr es:[di+4],27h ;pop es mov ax,0 mov es,ax push cs pop ds mov di,522h mov si,offset new_1e mov cx,10 rep movsb mov si,522h ;mov byte ptr es:[si+4],27h mov byte ptr es:[si+7],2 ret un1e endp over proc near mov ah,4ch int 21h ret over endp readaa proc near mov ax,8000h mov es,ax mov ax,0201h mov bx,0 mov ch,18h mov cl,0aah mov dx,0100h int 13h cmp ah,10h je okok jmp rerr okok: push ds mov ax,8000h mov ds,ax mov si,0 mov di,0 mov cx,2c0h ll: lodsw add di,ax loop ll pop ds mov es:[1000h],di mov dx,offset rok mov ah,9 int 21h ret rerr: mov dx,offset rerrmeg jmp err wwerr: mov dx,offset werrmeg jmp err ferr: mov dx,offset ferrmeg err: mov ah,9 push cs pop ds int 21h call un1e call over readaa endp write proc near mov ax,8000h mov es,ax mov di,0 mov ax,0 mov cx,200h rep stosw mov es:[0],1111h mov si,4 rewrite: mov ax,0301h mov bx,0 mov ch,18h mov cl,01h mov dx,0100h int 13h jnb zdcome dec si jz werr jmp rewrite zdcome: mov ax,0301h mov bx,0 mov cx,1801h mov dx,100h int 13h jb werr push cs pop ds mov dx,offset file mov ax,3d00h int 21h mov bx,ax push es pop ds mov ah,3fh mov dx,0 mov cx,200h int 21h mov ah,3eh int 21h push cs pop ds mov ax,0301h mov bx,0 mov cx,0001h mov dx,0000h int 13h jb werr mov dx,offset wok mov ah,9 int 21h ret werr: jmp wwerr write endp code ends end begin