INST. OPERANDS FUNCTION
NO
OPERAND
Copy byte at DS:[SI] to ES:[DI].
Update SI and DI.
MOVSB
Algorithm:
ES:[DI] = DS:[SI]
if DF = 0 then
SI = SI + 1 , DI = DI + 1
else
SI = SI – 1 , DI = DI – 1
INST. OPERANDS FUNCTION
NO
OPERAND
Copy word at DS:[SI] to ES:[DI].
Update SI and DI.
MOVSW
Algorithm:
ES:[DI] = DS:[SI]
ES:[DI+1] = DS:[SI+1]
or ES:[DI-1] = DS:[SI-1]
if DF = 0 then
SI = SI + 2 , DI = DI + 2
else
SI = SI – 2 , DI = DI – 2
INST. OPERANDS FUNCTION
NO
OPERAND
Copy byte at DS:[SI] to ES:[DI].
Update SI and DI.
MOVSB
Algorithm:
ES:[DI] = DS:[SI]
if DF = 0 then
SI = SI + 1 , DI = DI + 1
else
SI = SI – 1 , DI = DI – 1
INST. OPERANDS FUNCTION
NO
OPERAND
Copy byte at DS:[SI] to ES:[DI].
Update SI and DI and repeat MOVSB
until CX=0.
MOVSB
Algorithm:
ES:[DI] = DS:[SI]
CX = CX-1
if CX <> 0 then
if DF = 0 then
SI = SI + 1 , DI = DI + 1 , MOVSB
else
SI = SI – 1 , DI = DI – 1 , MOVSB
else stop MOVSB
REP
INST. OPERANDS FUNCTION
NO
OPERAND
Copy byte at AL to ES:[DI]
Update SI and DI and repeat STOSB
until CX=0.
STOSB
Algorithm:
ES:[DI] = AL
CX = CX-1
If CX <> 0 then
if DF = 0 then
DI = DI + 1 , STOSB
else
DI = DI – 1 , STOSB
else stop STOSB
REP
INST. OPERANDS FUNCTION
NO
OPERAND
Copy word at AX to ES:[DI]
Update SI and DI and repeat STOSW
until CX=0.
STOSW
Algorithm:
ES:[DI] = AX
CX = CX-1
If CX <> 0 then
if DF = 0 then
DI = DI + 2 , STOSW
else
DI = DI – 2 , STOSW
else stop STOSW
REP
INST. OPERANDS FUNCTION
NO
OPERAND
Compare byte at DS:[SI] with ES:[DI].
Update SI and DI and repeat CMPSB
until CX=0.
CMPSB
Algorithm:
DS:[SI] - ES:[DI]
CX = CX-1
If CX <> 0 then
if DF = 0 then
SI = SI + 1 , DI = DI + 1 , CMPSB
else
SI = SI – 1 , DI = DI – 1 , CMPSB
else stop CMPSB
REP
S, Z, O, A, C & P
FLAGS are Affected
INST. OPERANDS FUNCTION
NO
OPERAND
Compare byte at DS:[SI] with ES:[DI].
Update SI and DI and repeat CMPSB
until CX=0 or ZF=0.
CMPSB
Algorithm:
DS:[SI] - ES:[DI]
CX = CX-1
If CX <> 0 AND ZF = 1 then
if DF = 0 then
SI = SI + 1 , DI = DI + 1 , CMPSB
else
SI = SI – 1 , DI = DI – 1 , CMPSB
else stop CMPSB
REPE
S, Z, O, A, C & P
FLAGS are Affected
INST. OPERANDS FUNCTION
NO
OPERAND
Compare byte at DS:[SI] with ES:[DI].
Update SI and DI and repeat CMPSB
until CX=0 or ZF=1.
CMPSB
Algorithm:
DS:[SI] - ES:[DI]
CX = CX-1
If CX <> 0 AND ZF = 0 then
if DF = 0 then
SI = SI + 1 , DI = DI + 1 , CMPSB
else
SI = SI – 1 , DI = DI – 1 , CMPSB
else stop CMPSB
REPNE
S, Z, O, A, C & P
FLAGS are Affected
INST. OPERANDS FUNCTION
NO
OPERAND
Compare word at DS:[SI] with ES:[DI].
Update SI and DI and repeat CMPSB
until CX=0 or ZF=1.
CMPSW
Algorithm:
DS:[SI] - ES:[DI]
CX = CX-1
If CX <> 0 AND ZF = 0 then
if DF = 0 then
SI = SI + 2 , DI = DI + 2 , CMPSB
else
SI = SI – 2 , DI = DI – 2 , CMPSB
else stop CMPSB
REPNZ
S, Z, O, A, C & P
FLAGS are Affected
INST. OPERANDS FUNCTION
NO
OPERAND
Compare byte at AL with ES:[DI].
Update SI and DI and repeat SCASB
until CX=0.
SCASB
Algorithm:
AL- ES:[DI]
CX = CX-1
if CX <> 0 then
if DF = 0 then
DI = DI + 1 , SCASB
else
DI = DI – 1 , SCASB
else stop SCASB
REP
S, Z, O, A, C & P
FLAGS are Affected
INST. OPERANDS FUNCTION
NO
OPERAND
Compare byte at AL with ES:[DI].
Update SI and DI and repeat SCASB
until CX=0 or ZF=0.
SCASB
Algorithm:
AL - ES:[DI]
CX = CX-1
if CX <> 0 AND ZF = 1 then
if DF = 0 then
DI = DI + 1 , SCASB
else
DI = DI – 1 , SCASB
else stop SCASB
REPE
S, Z, O, A, C & P
FLAGS are Affected
INST. OPERANDS FUNCTION
NO
OPERAND
Compare byte at AL with ES:[DI].
Update SI and DI and repeat SCASB
until CX=0 or ZF=1.
SCASB
Algorithm:
AL- ES:[DI]
CX = CX-1
If CX <> 0 AND ZF = 0 then
if DF = 0 then
DI = DI + 1 , SCASB
else
DI = DI – 1 , SCASB
else stop SCASB
REPNE
S, Z, O, A, C & P
FLAGS are Affected
INST. OPERANDS FUNCTION
NO
OPERAND
Compare word at AX with ES:[DI].
Update SI and DI and repeat SCASB
until CX=0 or ZF=1.
SCASW
Algorithm:
AX - ES:[DI]
CX = CX-1
If CX <> 0 AND ZF = 0 then
if DF = 0 then
DI = DI + 2 , SCASB
else
DI = DI – 2 , SCASB else stop
SCASB
REPNZ
S, Z, O, A, C & P
FLAGS are Affected
MOV AX, code
MOV DS,AX
MOV ES,AX
MOV DI,OFFSET dest
LEA SI,srs
MOV CX,ssize
CLD
REP
MOVSB
HLT
Dest db 1000 dup (?)
SrS db 1000 dup (?)
Ssize dw 50
MOV AX, code
MOV DS,AX
MOV AX,EXTRA
MOV ES,AX
LEA DI,ES:[dest]
MOV SI,OFFSET DS:[srs]
MOV CX,DS:[ssize]
CLD
REP
MOVSW
HLT
Srs db 1000 dup (?)
Ssize dw 50
EXTRA SEGMENT
Dest db 1000 dup (?)
EXTRA ENDS
1. Write a program to find number of bytes prior to the byte
equals to the contents of AL in 2KB of the memory started
at string1 and store that number in result.
2. Write a program that accomplishes:
for i=0 to 100
if XX(i) = YY(i) then
MC=MC+1
else
MC1=MC1+1
next i
3. Write a program to clear DOS screen
4. Write a program to divide the screen to 4 equal size zones
each zone have different color and rotate these colors
clockwise between sectors.
5. Write a program to store the current screen then retrieve
it.
6. Write a program to copy the 5kB data file named test1 to
the file named test2 (both of them are stored in the same
segment).
7. Write a program to search a 3kB of memory for the word
‘MICROPROCESSOR’ and store no. of iteration in itr-no.
8. Write a program to scroll the screen 7 lines upward then
retrieve them line by line downward.