Académique Documents
Professionnel Documents
Culture Documents
################################################A######Q###
#7
###################2Q####bjbjU#U################### ###"###7|##7|
##5K###################################################################l####
#########################8#######8#######8###############L#######$<######$<####
##$<######$<######=##l###L#######v##2###x>##Z
##H######H######H######H######]Z######wZ##
###Z######v######v######v######v######v######v######v#######x##
###.z##L###v######################8#######Z######################U#####]Z######
Z######Z######v######9d####################H##############H##
##v######9d######9d######9d######Z########Z###H######8#######H######v#######
#######9d######################################################Z######v######9d##
###9d######3k##:###3p##,###N######8##############################################
#################p######H######l>##
###0zS##L###6##$<######o_#####_p##
###########p#####v##0###v######ip##R###zz#######d##.###zz######p######9d######
L#######L########################################Module 11Lecture-4Instruction
formats of 8086 :The instruction format of 8086 has one or more number of fields
associated with it.The first filled is called operation code field or opcode field,
which indicates the type of operation.The instruction format also contains other
fields known as operand fields.There are six general formats of instructions in
8086 instruction set. The length of an instruction may vary from one byte to sic
bytes.#a) One byte Instruction : This format is only one byte long and may have the
implied data or register operands. The least significant 3 bits of the opcode are
used for specifying the register operand, if any. Otherwise, all the eight bits
form an opcode and the operands are implied.For example: 1 1 1 1 1 0 0 0
#
EMBED Equation.DSMT4 ###
CLC : clear carryThis is an operation without any
operand, which clear the carry flag bit.##Exchange register with accumulator
Depending on the register (reg = RRR), the contents of the specified register will
be exchanged with the accumulator. This operation is having one operand which is
specified in a register.ASC# EMBED Equation.DSMT4 ### Adjust for addition AAA
00110111 # EMBED Equation.DSMT4 ###Here the operand to this instruction is
implicit and it take the contents of register AL.b) Register to Register : This
format is 2 bytes long. The first byte of the code specifies the operation code and
the width of the operand specifies by w bit. The second byte of the opcode shows
the register operands and RIM field. # EMBED Equation.DSMT4 ###
# EMBED Equation.DSMT4 ### # EMBED Equation.DSMT4 ###
# EMBED
Equation.DSMT4 ### # EMBED Equation.DSMT4 ### # EMBED Equation.DSMT4 ### # EMBED
Equation.DSMT4 ### # EMBED Equation.DSMT4 ###
# EMBED Equation.DSMT4 ### #
EMBED Equation.DSMT4 ### # EMBED Equation.DSMT4 #########
The register represented by the REG field is one of the
operands. The RIM field specifies another register or memory location, ie., the
other operand. The register specified by REG is a source operand if # EMBED
Equation.DSMT4 ###, else it is a destination operand.For example:MOV : data
transfer operation from Register to Register. Op-code is ##
1 0 0 0 1 0 0 0
1 1 0 0 0
0 0 1
# EMBED
Equation.DSMT4 ###REG = 0 0 0
indicates Register ALREG = 0 0 1
indicates Register CL# EMBED Equation.DSMT4 ###
indicates it is a byte
operation (8 bit)# EMBED Equation.DSMT4 ### indicates AL is a source register.
This instruction indicates MOV
CL, AL,
i.e
CL# EMBED Equation.DSMT4 ### AL
C) Register to/from memory with no displacement : This format is also 2 bytes long
and similar to the register to register format except for the MOD field.# EMBED
Equation.DSMT4 ###
# EMBED Equation.DSMT4 ### # EMBED
Equation.DSMT4 ###
# EMBED Equation.DSMT4 ### # EMBED Equation.DSMT4
### # EMBED Equation.DSMT4 ### # EMBED Equation.DSMT4 ### # EMBED Equation.DSMT4
###
# EMBED Equation.DSMT4 ### # EMBED Equation.DSMT4 ### # EMBED
Equation.DSMT4 #########
The MOD field shows the MOD of addressing. In case of no
displacement. MOD = 00For example :MOV : Data transfer Register/memory to/from
register.## This format is similar to register to register transfer. The difference
is in mood field.For register to register, mod = 11For register to/from memory with
no displacement, mod = 00.When mod = 0 0, the r/m fields indicates the address to
memory location.As for example r/m = 1 1 1 indicates (Bx)The instruction 1 0 0 0 0
1 0 1 0 0 0
0 0 0
1 1 1
indicates the instruction MOV AX, [BX]In
hexadecimal, the instruction is # EMBED Equation.DSMT4 ###Here the data is present
in a memory location in DS whose offset address is in BX. The effective address of
the data is given as # EMBED Equation.DSMT4 ###There # EMBED Equation.DSMT4 ###
indicates AX is a destination register so it moves the data from memory to
register.d) Register to/from Memory with Displacement :This type of instruction
format contains one or two additional bytes for displacement along with 2-byte the
format of the register to/from memory without displacement.
# EMBED
Equation.DSMT4 ###
# EMBED Equation.DSMT4 ### # EMBED Equation.DSMT4
### # EMBED Equation.DSMT4 ### # EMBED Equation.DSMT4 ### # EMBED Equation.DSMT4
machine control Instructions: These instructions control the machine status. NOP,
HLT, WAIT and LOCK instructions belongs to this category. f) Flag Manipulation
Instructions: All instructions which directly affect the flag register belong to
this category. The instructions CLD, STD, CLI, STI etc. belong to this category.g)
Shift and Rotate Instructions: These instructions involve the bitwise shifting or
rotation in either direction with or without a count in CX.h) String Instructions:
These instruction involve string manipulation operations like load, love, scan.
Compare, store etc. These instructions are only to be operated upon the string.Data
Transfer operation:MOV : move
PUSH: Push to stackPOP: pop
from stack
XCHG: ExchangeIN: Input from the port
OUT: Output
to the portXLAT: Translate
LEA: Load effective addressLDS/LES:
Load pointer to DS/ESLAHF: Load AH from lower byte of Flag registerSAHF: Store AH
to lower byte of Flag registerPUSHF: push Flags to stackPOPF: pop Flags from stack
Arithmatic operationsADD: add
ADC: Add with
carryINC: Increment
DEC: DecrementSUB: Subtract
SBB: Subtract with BorrowCMP: compareAAA: ASCll
Adjust After AdditionAAS: ASCll
Adjust After SubtractionAAM: ASCll Adjust for multiplicationAAD: ASCll Adjust for
divisionDAA: Decimal Adjust AccumulatorDAS: Decimal Adjust After SubtractionNEG:
NegativeMUL: Unsigned multiplication Byte or word.IMUL : Signed multiplicationCBW:
Convert signed Byte to WordCWD: Convert signed word to double wordDIV: Unsigned
DivisionIDIV: Signed DivisionLogical Instructions:Logical Instructions:AND: Logical
OR: Logiacl ORNOT: Logical Invert
XOR: Logical Exclusive ORTEST:
Logical compare InstructionSHL/SAL: Shift logical/Arithmatic leftSHR: Shift logical
RightSAR: Shift Arithmatic RightROR: Rotate Right without carryROL: Rotate Left
without carryRCR: Rotate Right through carryRCL: Rotate Left through carryString
Manipulation InstructionsPEP : Repeat Instruction prefixMOVSB/MOVSW: Move string
Byte or string word.CMPS: Compare sting Byte or String word.SCAS: Scan string Byte
or string wordLODS: Load string Byte or String wordSTOS: Store String Byte or
String wordControl transfer or Branching Instructions:-Unconditional Branch
Instructions.CALL: Unconditional CallRET: Return from the procedureINT N: Interrupt
type NINTO: Interrupt on overflowJMP: Unconditional JumpJRET: Return from ISRLOOP:
Loop unconditionally-Conditional Branch Instruction:JZ Label : Transfer control to
Label if # EMBED Equation.DSMT4 ###JZ Label : Transfer control to Label if #
EMBED Equation.DSMT4 ###JNZ Label : Transfer control to Label if # EMBED
Equation.DSMT4 ###JS Label : Transfer control to Label if # EMBED Equation.DSMT4
###JNS Label : Transfer control to Label if # EMBED Equation.DSMT4 ###JO Label :
Transfer control to Label if # EMBED Equation.DSMT4 ###JNO Label : Transfer
control to Label if # EMBED Equation.DSMT4 ###JP Label : Transfer control to
Label if # EMBED Equation.DSMT4 ###JNP Label : Transfer control to Label if #
EMBED Equation.DSMT4 ###JB Label : Transfer control to Label if # EMBED
Equation.DSMT4 ###JNB Label : Transfer control to Label if # EMBED
Equation.DSMT4 ###JBE Label : Transfer control to Label if # EMBED
Equation.DSMT4 ###or # EMBED Equation.DSMT4 ###JNBE Label : Transfer control to
Label if # EMBED Equation.DSMT4 ### or # EMBED Equation.DSMT4 ###JL Label :
Transfer control to Label if # EMBED Equation.DSMT4 ### or # EMBED
Equation.DSMT4 ###JNL Label : Transfer control to Label if # EMBED
Equation.DSMT4 ### or # EMBED Equation.DSMT4 ###JLE Label : Transfer control to
Label if # EMBED Equation.DSMT4 ### or neither SF nor OF is 1JNLE Label :
Transfer control to Label if # EMBED Equation.DSMT4 ### or at least any one of
SF and OF is 1LOOPZ label : Loop through a sequence of instructions from Label
while # EMBED Equation.DSMT4 ### and # EMBED Equation.DSMT4 ###LOOPNZ label :
Loop through a sequence of instructions from Label while # EMBED Equation.DSMT4
### and # EMBED Equation.DSMT4 ###.Flag manipulator and Processor control
instructions:CLC Clear carry flagCMC- Complement carry flagSTC- Set carry flag
CLD- Clear direction flagSTD- Set direction flagCLI- Clear interrupt flagSTI- Set
Interrupt flagWAIT- wait for test input pin to go lowHLT- Halt the processorNOP- No
operationESC- Escape to external device like NDP (numeric co-processor)LOCK- Bus
lock instruction prefix.10010
regOP CODE
d
w WWWWW1 1
REG
R/M1 0 0 0 1 0 d w1 1 R E GMOD
REG
R/MOP CODE
d
w
WWWWW1 0 0 0 1 0 d wmod
reg
rimMOD
REG
R/MopcodeHigh byte of
displacementLow byte of displacement 1 1
op code
R/MOp code
wLower byte DATAHigher byte DATAMOD
op code
R/MOp code
wHigher byte ofdisplacementLower byte of DATAHigher byte of
DATA
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
#########2################### ### ###!
###"#######(###+###############m###p###q##############################
#########%
##'
##
##
###
###
###
###
##.
##/
##0
##1
##K
##L
##c
##d
##e
##f
##h
##########################j
##EHU####j)'I
##CJ##U##V##aJ###j####EHU####j#'I
##CJ##U##V##aJ###j^###EHU####j'I
##CJ##U##V##aJ###j###EHU####j_'I
##CJ##U##V##aJ###6#]###j####EHU####j'I
##CJ##U##V##aJ## #j####U###>*###j####CJ##U##mH##nH##u####5#\#4####
#######2###3###############<###=#####################:###;############
###l###m#########)
##*
############################################################################
#############################################################################
#############################################################################
############################################################################
#####################################$#a$######$#a$######$#a$#######5O##1Q#####
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
################################################################################*
###
###
##s############
##
########(##+##3##4##########
######[###\#########L###M###N###############################################
#############################################################################
############################################################################
#############################################################################
########################################################################$#
#####a$######$#a$###h
##i
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##########################5###6###7###8###:###;###R############
####|u#############j###EHU####j'I
##CJ##U##V##aJ###j###EHU####j'I
##CJ##U##V##aJ###jF###EHU####j}'I
##CJ##U##V##aJ###j###EHU####jn'I
##CJ##U##V##aJ###j###EHU####jX'I
##CJ##U##V##aJ###j1###EHU####j@'I
##CJ##U##V##aJ###j}##EHU####j5'I
##CJ##U##V##aJ##
#j####U###,R###S###T###U###W###X###o###p###q###r###s###y##########
###
##z
##}
##
##
##
##
##
##
##
##
##(##*##f##g##~##################################
##########4##########################################
####jt+##EHU####j#(I
##CJ##U##V##aJ###j(##EHU####jt#(I
##CJ##U##V##aJ###j%##EHU####j'I
##CJ##U##V##aJ###6#]####j####CJ##U##mH##nH##u####j####EHU####j'I
##CJ##U##V##aJ## #j####U###jY ##EHU####j'I
##CJ##U##V##aJ###24###5###6###7###B###D###x###{###~########################
###############A###D###N###O###f###g###h###i###########################
###################################################
######################j;##EHU####j@'I
##CJ##U##V##aJ###j#9##EHU####j5'I
##CJ##U##V##aJ###j^6##EHU####j)'I
##CJ##U##V##aJ###j3##EHU####j#'I
##CJ##U##V##aJ###j#1##EHU####jT#(I
##CJ##U##V##aJ###6#]##
#j####U###jA.##EHU####j##(I
##CJ##U##V##aJ###1##########################################2###3###4###5###6
###7###N###O###P###Q###U###V###m###n###o###p###r###s########################
########################|
u################################jN##EHU####j'I
##CJ##U##V##aJ###jK##EHU####j'I
##CJ##U##V##aJ###j;I##EHU####j'I
##CJ##U##V##aJ###jF##EHU####j'I
##CJ##U##V##aJ###jC##EHU####j}'I
##CJ##U##V##aJ###j)A##EHU####jn'I
##CJ##U##V##aJ## #j####U###jv>##EHU####jX'I
##CJ##U##V##aJ###(######################H###K###a###e#########N###T###^###b###
############"###%###'###/###T###U###l###m###n###o#####################
#######
##############-###.###/###0###;###>###b###c###z###{###|
###}#########################################
###j(I
##CJ##U##V##aJ###j-Z##EHU####j(I
##CJ##U##V##aJ###jbW##EHU####j5(I
##CJ##U##V##aJ###j1T##EHU####j#(I
##CJ##U##V##aJ###jWQ##EHU####j(I
##CJ##U##V##aJ##
#j####U###6#]####j####CJ##U##mH##nH##u##9##############Q###R###`###a#########
####################X###Y##################0###1###p###q#################
#############################################################################
############################################################################
#############################################################################
############################################################################
###############################$#
#####a$######$#a$###################_###############<###Y###c###d###e###
##############6###7###i##################################################
#############################################################################
############################################################################
#############################################################################
##############################################################################
###$####R##a$######$#
#####a$########################################################
###################################.###/###1###H###I###J###K###N###O###f###g###h###i###n###o###########
#z######un####jo##EHU####j\(I
##CJ##U##V##aJ###j#m##EHU####jR(I
##CJ##U##V##aJ###j]j##EHU####j,(I
##CJ##U##V##aJ###jg##EHU####j#(I
##CJ##U##V##aJ###jd##EHU####j#(I
##CJ##U##V##aJ###jEb##EHU####j#(I
##CJ##U##V##aJ###j_##EHU####j#(I
##CJ##U##V##aJ## #j####U##
#j\##EHU###+###################################################
############################### ###!
###8###9###:###;###e###h#########2###6###7###:###i###l#####################
#################
###7############################6#]##
#jL}##EHU####j(I
##CJ##U##V##aJ###jz##EHU####j(I
##CJ##U##V##aJ####j####CJ##U##mH##nH##u####jw##EHU####jw(I
##CJ##U##V##aJ###j-u##EHU####jm(I
##CJ##U##V##aJ## #j####U###jxr##EHU####je(I
##CJ##U##V##aJ###67###8###9###:###b###c###z###{###|
###}##########}###~################################################
#################################,######.###/###3###4###K################xq####
#j##EHU####jn'I
##CJ##U##V##aJ###jK##EHU####jX'I
##CJ##U##V##aJ###j##EHU####j@'I
##CJ##U##V##aJ###j##EHU####j5'I
##CJ##U##V##aJ###j5##EHU####j#'I
##CJ##U##V##aJ###6#]###j###EHU####j(I
##CJ##U##V##aJ## #j####U###j###EHU####jx(I
##CJ##U##V##aJ###,###;###~############{###|###}######################### ###!
###"#########################c ## ## ##
############################################################################
#############################################################################
#############################################################################
############################################################################
##########################$######a$######$#a$######$#
###R##a$###K###L###M###N###Q###R###i###j###k###l###m###n####################
#################################################1###2###3###4###I###J#
##a###b##############{##o####################jw(I
##CJ##U##V##aJ###j,##EHU####jm(I
##CJ##U##V##aJ####j####CJ##U##mH##nH##u####jw##EHU####j'I
##CJ##U##V##aJ###j##EHU####j'I
##CJ##U##V##aJ###j###EHU####j'I
##CJ##U##V##aJ###j`##EHU####j'I
##CJ##U##V##aJ## #j####U###j##EHU####j}'I
##CJ##U##V##aJ###(b###c###d###x###y####################################
###'###(###?
###@###A###B###############################################5###6###7###
8###L###M###d###e###################w################j5
'I
##CJ##U##V##aJ###j##EHU####j#'I
##CJ##U##V##aJ###6#]###j
j##EHU####j#3)I
##CJ##U##V##aJ###j##EHU####j2)I
##CJ##U##V##aJ####j####CJ##U##mH##nH##u####jI##EHU####jw(I
##CJ##U##V##aJ###j##EHU####jm(I
##CJ##U##V##aJ## #j####U##
#j##EHU###,e###f###g###z###{########################################
################################### ##
### ##
## ### ##% ##& ##' ##( ##* ##+ ##B ##C ##D
########z########un##j$##EHU####j'I
##CJ##U##V##aJ###jr##EHU####j'I
##CJ##U##V##aJ###j##EHU####j'I
##CJ##U##V##aJ###j###EHU####j}'I
##CJ##U##V##aJ###j`##EHU####jn'I
##CJ##U##V##aJ###j##EHU####jX'I
##CJ##U##V##aJ###j##EHU####j@'I
##CJ##U##V##aJ## #j####U###jH##EHU###+D ##E ##G ##H ##_ ##` ##a ##b ##c ##h ##
## ## ## ## ## ## ## ## ###!###!###!###!###!###!##1!##2!##3!##4!##F!##G!
##^!##_!##`!##a!##l!##m!##!##!##!##!##!##!##!##!##!##!##!##!
###"##""##################'###*###.###2##################
#########6#]###j###EHU###j`##EHU###j##EHU###j##EHU##
#jB##EHU####jw(I
##CJ##U##V##aJ###j##EHU####jm(I
##CJ##U##V##aJ####j####CJ##U##mH##nH##u####j##EHU####j'I
##CJ##U##V##aJ## #j####U###: ## ##!
###"###"###"###"##"##"##"##"##"##"##"##"##"############################
#############################################################################
#############################################################################
###################################################################################
###################################################################################
##########################$####R###$#If####a$# ###$##$#If####a$######$#
###R##a$###"##"##"##"##########
#######[T###########N############N############H############N############B##########
##[P########################$#If########$#If#######$#
###R###$#If####a$####$##$#If#####l############################r##8#j
U#@#,"#####################2
##########################################################################0###
############################################6########################
#############################################4###
#l#a################################!
###############################################################DP############
###########################$##$#If#####l############################r##8#j
U#@#,"#####################2
##########################################################################0###
############################################6########################
#############################################4###
#l#a###
#####R###$#If#######$####R###$#If####a$###!
###'###*###.###2###3###5###;###################################################
DP###################################################$##$#If#####l############
################r##8#jU#@#,"#####################2
##########################################################################0###
############################################6########################
#############################################4###
#l#a###
#####R###$#If#######$#
###R###$#If####a$###2###;###>###B###F###O###R###]###`###k###n###z###}##########
###################################$##$##$##$##$##$###%###
%##0%##1%##2%##3%##7%##G%##K%##N%##O%##f%##g%##h%##i%##j%##k%##%##%##%##%##
%##%##%##%##%##%##%##%##
%##################################
#j~##EHU####j^?)I
##CJ##U##V##aJ###j##EHU####j>)I
##CJ##U##V##aJ###j##EHU####j>)I
##CJ##U##V##aJ## #j####U####j##6#EHU##]###j+B)I
##CJ##U##V##aJ####j####6#U##]##6#]#>;###>###B###F###G###I###O###R#############
##########################D8##################################################
#############$##$#If#####l############################r##8#j
U#@#,"#####################2
##########################################################################0###
############################################6########################
#############################################4###
#l#a######$####R###$#If####a$#
##
###R###$#If######R###S###T###U###W###]###`###a###########################N8#####
##############################D#####################################
#####R###$#If#######$##$#If#####l############################r##8#j
U#@#,"#####################2
##########################################################################0###
############################################6########################
#############################################4###
#l#a######$#
###R###$#If####a$###a###b###c###e###k###n###o###p###############N8##############
#####################D#################################################
#####R###$#If#######$##$#If#####l############################r##8#j
U#@#,"#####################2
##########################################################################0###
############################################6########################
#############################################4###
#l#a######$#
###R###$#If####a$###p###q###s###z###}###~#########[<###########N############N###
#########D############N############N############[8########################
#####R###$#If#######$#
###R###$#If####a$####$##$#If#####l############################r##8#j
U#@#,"#####################2
##########################################################################0###
############################################6########################
#############################################4###
#l#a##################################################################
#######################D8#######################################$##$#If#####l##
##########################r##8#jU#@#,"#####################2
##########################################################################0###
############################################6########################
#############################################4###
#l#a###
#####R###$#If#######$#
###R###$#If####a$######################################################
#####################D8###################################################$##$#
If#####l############################r##8#jU#@#,"#################2
##########################################################0###
############################################6########################
##############################4###
#l#a###
#####R###$#If#######$#
###R###$#If####a$######################################################
#########D8###################################>#################$#If#######$##$#
If#####l############################r##8#jU#@#,"#############2
##########################################0###
############################################6########
###############################4###
#l#a######$####R###$#If####a$#
##
###R###$#If######################################################N<#####
##############################D#####################################
#####R###$#If#######$##$#If#####l############################r##8#j
U#@#,"#################2
##########################################################0###
############################################6#########
#############################################4###
#l#a######$#
###R###$#If####a$#######################################N8##############
#####################D#################################################
#####R###$#If#######$##$#If#####l############################r##8#j
U#@#,"#####################2
##########################################################################0###
############################################6########################
#############################################4###
#l#a######$#
###R###$#If####a$###########################[8###########N############N###
#########D############N############N############[8########################
#####R###$#If#######$#
###R###$#If####a$####$##$#If#####l############################r##8#j
U#@#,"#####################2
##########################################################################0###
############################################6########################
#############################################4###
#l#a###################################################################
###################D#############################################$##$#If#####l##
##########################r##8#jU#@#,"#####################2
##########################################################################0###
############################################6########################
#############################################4###
#l#a###
#####R###$#If#######$####R###$#If####a$##########$###$##-$##.
$##$##$##$##$##$##$##$##################################################
########################################################################i###
##########################$##$#If#####l##4############################F####i
#,"`####################r#################`#
#################0###############################################6##
##########
##########
##########
#########4###
#l#a######$####R###$#If####a$######$####R##a$##
$##$##$###%###%###%###%###
%##########################################################################L
############################################$##$#If#####l##4####################
########r####E
%#i#,"
############################################################################ #
#################0###############################################6#######
##############################################################
4###
#l#a######$####R###$#If####a$####%##7%##;%##?%##C%##F%##G%##K%##L
%##############################################################L#############
#######################################$##$#If#####l##4########################
####r####E
%#i#,"###################`##################`##################`################
#####
#################0###############################################6#######
##############################################################
4###
#l#a######$####R###$#If####a$###L%##M%##N%##j%##%##%##
%##################################################9#########################
##########$##$#If#####l##4################################E
%#i#X#,"################### ################## ##################
##########################################################0##################
#############################6#####################################
############################################4###
#l#a######$####R###$#If####a$###%##%##%##%##%##
%#############################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
########################################$#If#######$####R###$#If####a$###%##%##
%##%##%##%##%##%##%##%##%##%##%##%###&###&###&## &##
&###&##"&###&##$&##%&##&&##'&##>&##?
&##@&##A&##B&##H&##O&##P&##g&##h&##i&##j&##k&##l&##&##&##&##&##&######
##########xq####j##EHU####j@)I
##CJ##U##V##aJ###j##EHU####j?)I
##CJ##U##V##aJ###jx##EHU####jA)I
##CJ##U##V##aJ###j;##EHU####j#A)I
##CJ##U##V##aJ###j ##EHU####jt?)I
##CJ##U##V##aJ###6#]###j##EHU####jyA)I
##CJ##U##V##aJ## #j####U###j##EHU####j#A)I
##CJ##U##V##aJ###,%##%##%##
&##&&##B&##E&##F###########9############9############9############9############9##
#####################$#
###R###$#If####a$#####$##$#If#####l##4################################E
%#i#X#,"########################################################################
############################################0###############################
################6###############################################
##################################4###
#l#a#####E&##H&##I&##O&##k&##&##&##############9############################
###########################################$##$#If#####l##4###################
#############E
%#i#X#,"########################################################################
############################################0###############################
################6###############################################
##################################4###
#l#a######$#
###R###$#If####a$###&##&##&##&##&##&##&##&##&##&##&##&##&##&##&##&
##&##&##&##&##&##&###'###'###'###'###'##
'###'###'##)'##*'##+'##,'##-'##.'##E'##F'##G'##H'##I'##J'##a'##b'##c'######
###########xq###j###EHU####jA)I
##CJ##U##V##aJ###j##EHU####j@)I
##CJ##U##V##aJ###j
##EHU####j?)I
##CJ##U##V##aJ###j###EHU####jA)I
##CJ##U##V##aJ###jt###EHU####j@)I
##CJ##U##V##aJ###jV###EHU####j?)I
##CJ##U##V##aJ###6#]###j###EHU####jA)I
##CJ##U##V##aJ##
#j####U###,&##&##&##&##&##&##&##########################9###############
############################################$##$#If#####l##4##################
##############E
%#i#X#,"########################################################################
############################################0###############################
################6###############################################
##################################4###
#l#a######$####R###$#If####a$###&###'###'##
'###'###'##-'######################################9#########################
######################$##$#If#####l##4################################E
%#i#X#,"########################################################################
############################################0###############################
################6###############################################
##################################4###
#l#a######$#
###R###$#If####a$###-'##I'##e'##h'##k'##l'##r'#################################
#################9###################################$##$#If#####l##4########
########################E
%#i#X#,"########################################################################
############################################0###############################
################6###############################################
##################################4###
#l#a######$#
###R###$#If####a$###c'##d'##e'##k'##r'##s'##'##'##'##'##'##'##'##'##'##'
##'##'##'##'##'##'##'##'##'##'##'##'##'##'##'##'###(###(##
(##
(###(##
(###(##$(##%(##&(##'(##(##4(##5(##L(##M(###################x###j?)I
##CJ##U##V##aJ###j"##EHU####jA)I
##CJ##U##V##aJ###j###EHU####j@)I
##CJ##U##V##aJ###j####EHU####j?)I
##CJ##U##V##aJ###j###EHU####jA)I
##CJ##U##V##aJ###j###EHU####j@)I
##CJ##U##V##aJ###j####EHU####j?)I
##CJ##U##V##aJ###6#]##
#j####U###/r'##'##'##'##'##'##'##########################################
####################9#######################$##$#If#####l##4##################
##############E
%#i#X#,"########################################################################
############################################0###############################
################6###############################################
##################################4###
#l#a######$####R###$#If####a$###'##'##'###(##'(##*(##(############################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###############################################$####R###$#If####a$###-(##.
(##4(##P(##l(##(##(##F###########9############9############9############9#######
#####9#######################$#
###R###$#If####a$#####$##$#If#####l##4################################E
%#i#X#,"########################################################################
############################################0###############################
################6###############################################
##################################4###
#l#a#####M(##N(##O(##P(##Q(##h(##i(##j(##k(##l(##m(##(##(##(##(##(##(##(##
(##(##(##(##(##(##(##(##(##(##(##0)##2)##7)##9)##=)##?)##y)##{)##
)##)##s*##*##*##*##*##*##|
+##+##+##+##+##+###,###,###,###,##,##,###############
##############jd4##EHU####jC)I
##CJ##U##V##aJ###j1##EHU####j=)I
##CJ##U##V##aJ###j#/##EHU####j=)I
##CJ##U##V##aJ###6#]###j+##EHU####jA)I
##CJ##U##V##aJ###j(##EHU####j@)I
##CJ##U##V##aJ## #j####U###j
%##EHU###8(##(##(##(##(##############9############0############&############
####
###$#####R###a$######$#
###R##a$#####$##$#If#####l##4################################E
%#i#X#,"########################################################################
############################################0###############################
################6###############################################
##################################4###
#l#a######$#
###R###$#If####a$###(##(##)##)##)##)##)##)##o*##*##*##*##x+##+##+###,
###,##,##,##,#####.###.##.##.##?/##i/##j/##/###############################################
############################################################################
#############################################################################
#############################################################################
#######################################################################
###$#####R###a$###,##-##-##-##-##-##-##-##-##-##-##-##-####.###.###.###.##>.##@.##T.##V.##q.##r.##.##.##.##.##.##.##.##.##(/##*/##//
##1/##D/##M/##N/##e/##f/##g/##h/##j/##/##/##/##/##/##/##g0##i0##k0##m0##o0##q
0##v0##x0##0##0##0##0##0#####################
######jR@##EHU####jb)I
##CJ##U##V##aJ####jo=##6#EHU##]###j`b)I
##CJ##U##V##aJ###j?:##EHU####ja)I
##CJ##U##V##aJ## #j####U####j\7##6#EHU##]###j$a)I
##CJ##U##V##aJ####j####6#U##]##6#]#>/##/##0##0##0###1###1###2##S2##U2##2#
#2##n3##3##3##3##3##A5##B5##N6##O6##7##7###9###9##79##89##{9##|
9###########################################################################
#############################################################################
#############################################################################
############################################################################
###########################################
###$#
####R###a$###0##0##0##0##0##0##0##0##0##0##0###1###1###1###1##1##1##
1##1##1##1##1##1###2## 2##
2###2###2###2###2###2##42##52##62##82##O2##P2##Q2##R2##n2##o2##2##2##2##2##+3##
-3##13##33##u3##|
3##~3##3##3##3##3##3##3######################
###jR##EHU####j;?*I
##CJ##U##V##aJ###joO##EHU####jz>*I
##CJ##U##V##aJ###jL##EHU####jkd)I
##CJ##U##V##aJ###jI##EHU###jcF##EHU####jc)I
##CJ##U##V##aJ###jC##EHU####jc)I
##CJ##U##V##aJ## #j####U###6#]#93##3##3##3##3##3##3##<5##>5##87##:7##?
7##A7##w8##y8##z8##}8##8##8##8##8##8##8##8##8##8##8##8##8##;##;##;##
;##;##;##<##<##<##<##<##<##<##<##[=##^=##`=##c=##e=##h=##j=##m=###>###>#
#>##>###?###?##*?##.?##L?##P?##[?##^?##~?##?##?##?##?##?##?##?##?##?##?
##?
###@###@##&@##+@##3@##5@##U@##[@##q@##v@##@##@##@##@##@##@##########
#####################################6#]##
#jU##EHU####j?*I
##CJ##U##V##aJ## #j####U###Z|
9##T:##U:###;###;##;##;##C<##D<##<##<##=##=###>###>##>##>##>##>##*?##+?
##[?##\?##?##?##?##?##?##?
############################################################################
#############################################################################
#############################################################################
############################################################################
######################################
###$#####R###a$#######?##&@##'@##U@##V@##q@##r@##@##@##@##@##@##@##
%A##&A##iA##jA##wA##xA##A##A##A##A##A##A###B##'B##(B##NB###################
#############################################################################
############################################################################
#############################################################################
#############################################################################
######################
###$#
####R###a$###@###A###A##&A##)A##OA##RA##jA##mA##xA##{A##}A##A##A##A##A##A##
A##A##A##A##A##A##A##A###B##
B##(B##+B##OB##RB##^B##aB##B##B##B##B##B##B##B##B###C###C##PC##SC##rC##tC##
~C##C##C##C##C##C##C##C##C##C##C##C###D###D##"D##%D##?
D##BD##`D##cD##D##D##D##D##D##D###E###E##3E##7E##]E##aE##E##E##E##E##
%F##)F##?F##BF##_F##dF##uF##wF##xF##|
F##F##F##F##F##F##F###G###G##########################
###########################6#]#dNB##OB##]B##^B##B##B#
#B##B##B##B##B##B##
C###C##!C##"C##8C##9C##OC##PC##C##C##C##C##C##C###D###D##!
D###########################################################################
#############################################################################
#############################################################################
############################################################################
###########################################
###$#####R###a$###!D##"D##>D##?
D##_D##`D##D##D##D##D##D##D##D##D###E###E##2E##3E##\E##]E##E##