Example:
Write a program to move a block of data stored at memory area
[1000:100 through 1000:1FF], to another memory area starting at
address [1000:200].
Solution:
MOV AX,1000
MOV DS, AX
MOV SI,100
MOV DI,200
MOV CX,100
TOP: MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
DEC CX
JNZ TOP
HLT 28
Control Flow and Jump Instructions
EXAMPLE:
Implement an instruction sequence that calculates the absolute
difference between the contents of AX and BX and places it in
DX
Solution:
CMP AX, BX
JC DIFF2
DIFF1: MOV DX, AX
SUB DX, BX ; (DX)=(AX)-(BX)
JMP DONE
DIFF2: MOV DX, BX
SUB DX, AX ; (DX)=(BX)-(AX)
DONE: NOP
29
Subroutines and Subroutine- Handling
Instructions
Subroutine (Procedure) : a special program that can
be called for execution from any point in a program
Return instruction must be included at the end of the
subroutine to initiate the return sequence to the main
program environment
Subroutine- Handling Instructions
◦ CALL and RET instructions
◦ PUSH and POP instructions
30
Subroutines and Subroutine- Handling
Instructions
Subroutine concept
31
Subroutines and Subroutine- Handling
Instructions
CALL and RET instructions
32
Subroutines and Subroutine- Handling
Instructions
Call allows implementation of two types of operations:
intrasegment call and intersegment call
◦ Near-proc
Call 1234H : 1234H is loaded into IP
◦ Regptr16
Call BX : Contents of BX are loaded into IP
◦ Far-proc and Memptr32
Call [BX] : Subroutine offset at the memory location is derived
from contents of DS and BX
33
Subroutines and Subroutine- Handling
Instructions
CALL and RET instructions
34
Subroutines and Subroutine- Handling
Instructions
RET instruction causes IP or both IP and CS that were
saved on the stack to be returned back to their
corresponding registers
35
Subroutines and Subroutine- Handling
Instructions
PUSH and POP instructions
◦ Original contents are kept intact in the stack segment of a
memory during the execution of the subroutine
36
Subroutines and Subroutine- Handling
Instructions
PUSH and POP instructions
37
Subroutines and Subroutine- Handling
Instructions
PUSH and POP instructions
◦ PUSH AX (SS:SP)
((SP) – 1) (AH)
((SP) – 2) (AL)
(SP) (SP) - 2
◦ POP AX (SS:SP)
(AL) ((SP))
(AH) ((SP) + 1)
(SP) (SP) + 2
38
Loop and the Loop-handling Instructions
LOOP instructions
◦ It uses the contents of the CX register
◦ CX must be preloaded with a count that represents the number of
times the loop is to repeat
◦ Contents of CX are decremented by one and then checked to
determine if they are equal to zero
◦ If it is equal to zero, the loop is complete and the instruction
following LOOP is executed
39
Loop and the Loop-handling Instructions
LOOP instructions
40
Loop and the Loop-handling Instructions
LOOP instructions
41
Loop and the Loop-handling Instructions
EXAMPLE: Given the following sequence of instructions,
explain what happens as they are executed
MOV DL, 05H
MOV AX, 0A00H
MOV DS, AX
MOV SI, 0000H
MOV CX, 000FH
AGAIN: INC SI
CMP [SI], DL
LOOPNE AGAIN
42