home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-386-Vol-2of3.iso
/
b
/
bootp.zip
/
BUFCMP.ASM
< prev
next >
Wrap
Assembly Source File
|
1987-05-01
|
1KB
|
84 lines
PAGE 66,132
;
;
;
;
;
;
;
;
; bufcmp.asm
;
; Efficient compare operation.
;
; Usage :
; bufcmp( soff, sseg, doff, dseg, count )
; unsigned int soff; /* source offset */
; unsigned int sseg; /* source segment */
; unsigned int doff; /* destination offset */
; unsigned int dseg; /* destination segment */
; unsigned int count; /* byte count */
;
; (c) 1984 University of Waterloo,
; Faculty of Engineering,
; Engineering Microcomputer Network Development Office
;
; version
;
; 0.1 8-June-1984 B. T. Campbell - handle segment wraps
; 0.0 01-May-1984 B. T. Campbell
;
;
include masmdefs.hsm
include model.hsm
codedef BUFCMP
datadef
cstart BUFCMP
cpublic bufcmp
push di
push si
mov DX,DS
mov BX,ES ;save segment registers
mov AX,+@AB+0[BP]
mov CL,4
shr AX,CL
add AX,+@AB+2[BP]
mov DS,AX
mov AX,+@AB+0[BP]
and AX,0fh
mov SI,AX
mov AX,+@AB+4[BP]
mov CL,4
shr AX,CL
add AX,+@AB+6[BP]
mov ES,AX
mov AX,+@AB+4[BP]
and AX,0fh
mov DI,AX
mov CX,@AB+8[BP] ;byte count
mov AX,CX
pushf
cld
rep cmpsb
jz okcmp
sub AX,CX
jmp nokcmp
okcmp:
xor ax,ax
nokcmp:
popf
mov DS,DX
mov ES,BX
pop si
pop di
creturn bufcmp
cend BUFCMP
end