Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations SkipVought on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Use of the REPE command in a loop

Status
Not open for further replies.

MrBottle

IS-IT--Management
Jul 13, 2014
1
0
0
US
I'm new to assembly and have been doing well, but upon analyzing this code I've been given some trouble.
Can you guys explain what REPE does, and what has to happen in this loop for DL never to be set to 0?

Code:
00414A26  |.  F3:A6         REPE CMPS BYTE PTR DS:[ESI],BYTE PTR ES:[EDI]
00414A28  |.  0F92C0        SETB AL
00414A2B  |.  0F97C2        SETA DL
00414A2E  |.  28C2          SUB DL,AL
 
I haven't programmed in assembler for many years, but from memory the REP commands usually decrement (E)CX and terminate when it equals 0.

I think that CMPS instruction means compare the source and destination bytes and that the E in REPE means repeat until equal.

As such I would guess that the instruction means something like : Repeat the comparison of the the bytes at DS:ESI and ES:EDI until they are equal.

Since the REP commands automatically increment DS:ESI and ES:EDI, I'm presuming that this is being used to get the appropriate byte(s) (in AL and DL) on which the following lines of code operate.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top