Вы находитесь на странице: 1из 16

11/28/2016 MicroprocessorsandMicrocontrollersNotes:Programsfor16bitarithmeticoperationsfor8086(usingvariousaddressingmodes)|studentboxoffi

Programsfor16bitarithmeticoperationsfor8086(using
variousaddressingmodes)
studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

TopicContent.

1.Additionoftwo16bitnumbers
Aim:
Towriteanassemblylanguageprogramtoperformadditionoftwo16bitsignedandunsignednumbers.
Tools:
PCinstalledwithTASM.
Program:
ASSUMECS:CODE,DS:DATA
CODESEGMENT
MOVAX,DATA
MOVDS,AX
MOVAX,OPR1
ADDAX,OPR2
MOVRES,AX
HLT
CODEENDS
DATASEGMENT
OPR1DW4269H
OPR2DW1000H
RESDW?
DATAENDS
END
Listfile:
ADDRESS

OPCODE

OPERATION

COMMENTS

0000

B88E4E

MOVAX,4E8E

0003

8ED8

MOVDS,AX

0005

A10000

MOVAX,[0000]

THEVALUEIN[0000]ISMOVED
TOAX

0008

03060200

ADDAX,[0002]

THEVALUEIN[0002]ISADDED
TOAX

000C

A30400

MOV[0004],AX

THEVALUEINAXISMOVED
TO[0004]

INITIALIZATIONOF
DATASEGMENT

http://studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

1/16

11/28/2016 MicroprocessorsandMicrocontrollersNotes:Programsfor16bitarithmeticoperationsfor8086(usingvariousaddressingmodes)|studentboxoffi

ADDRESS

OPCODE

000F

F4

OPERATION
HLT

COMMENTS
ENDOFPROGRAM

FlowChart:
Result:
UNSIGNEDNUMBERS
Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,
i=1,d=0.
Afterexecution,c=0,s=0,z=0,o=0,p=1,a=0,
i=1,d=0.
Input:
OPR1=4269H
OPR2=1000H
Output:
RES=5269H
SIGNEDNUMBERS
Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,
i=1,d=0.
Afterexecution,c=1,s=0,z=0,o=1,p=0,a=0,
i=1,d=0.
Input:
OPR1=9763H
OPR2=A973H
Output:
RES=40D6H

2.Subtractionoftwo16bitnumbers
Aim:
Towriteanassemblylanguageprogramtoperformsubtractionoftwo16bitsignedand
unsignednumbers.
Tools:
PCinstalledwithTASM.
Program:
http://studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

2/16

11/28/2016 MicroprocessorsandMicrocontrollersNotes:Programsfor16bitarithmeticoperationsfor8086(usingvariousaddressingmodes)|studentboxoffi

ASSUMECS:CODE,DS:DATA
CODESEGMENT
MOVAX,DATA
MOVDS,AX
MOVAX,OPR1
MOVBX,OPR2
SUBAX,BX
MOVRES,AX
HLT
CODEENDS
DATASEGMENT
OPR1DW4269H
OPR2DW1000H
RESDW?
DATAENDS
END
Listfile:
ADDRESS

OPCODE

OPERATION

COMMENTS

0000

B88E4E

MOVAX,4E8E

0003

8ED8

MOVDS,AX

0005

A10000

MOVAX,[0000]

THEVALUEIN[0000]ISMOVED
TOAX

0008

2B060200

ADDAX,[0002]

THEVALUEIN[0002]ISSUBTRACTED
FROMAX

000C

A30400

MOV[0004],AX

THEVALUEINAXISMOVED
TO[0004]

000F

F4

HLT

ENDOFPROGRAM

INITIALIZATIONOF
DATASEGMENT

FlowChart:
Result:
UNSIGNEDNUMBERS
Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,d=0.
Afterexecution,c=0,s=0,z=0,o=0,p=1,a=0,i=1,d=0.
Input:
OPR1=4269H
OPR2=1000H
Output:
RES=3269H
http://studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

3/16

11/28/2016 MicroprocessorsandMicrocontrollersNotes:Programsfor16bitarithmeticoperationsfor8086(usingvariousaddressingmodes)|studentboxoffi

SIGNEDNUMBERS
Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,
d=0.
Afterexecution,c=0,s=0,z=0,o=0,p=1,a=0,i=1,
d=0.
Input:
OPR1=9763H
OPR2=8973H
Output:
RES=0DF0H

3.Multiplicationoftwo16bitunsignednumbers
Aim:
Towriteanassemblylanguageprogramtoperform
multiplicationoftwo16bitunsignednumbers.
Tools:
PCinstalledwithTASM.
Program:
ASSUMECS:CODE,DS:DATA
CODESEGMENT
MOVAX,DATA
MOVDS,AX
MOVAX,OPR1
MULOPR2
MOVRESLW,AX
MOVRESHW,DX
HLT
CODEENDS
DATASEGMENT
OPR1DW2000H
OPR2DW4000H
RESLWDW?
RESHWDW?
DATAENDS
END
Listfile:
ADDRESS

OPCODE

0000

B88E4E

OPERATION
MOVAX,4E8E

COMMENTS
INITIALIZATIONOF
DATASEGMENT

http://studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

4/16

11/28/2016 MicroprocessorsandMicrocontrollersNotes:Programsfor16bitarithmeticoperationsfor8086(usingvariousaddressingmodes)|studentboxoffi

OPERATION

ADDRESS

OPCODE

COMMENTS

0003

8ED8

MOVDS,AX

0005

A10000

MOVAX,[0000]

THEVALUEIN[0000]ISMOVED
TOAX

0008

F7260200

IMULWORDPTR[0002]

THEVALUEIN[0002]ISMULTIPLIED
BYAX

000C

A30400

MOV[0004],AX

THEVALUEINAXISMOVED
TO[0004]

000F

89160600

MOV[0006],DX

THEVALUEINDXISMOVED
TO[0006]

0013

F4

HLT

ENDOFPROGRAM

FlowChart:
Result:
Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,
d=0.
Afterexecution,c=1,s=0,z=0,o=1,p=0,a=0,i=1,
d=0.
Input:
OPR1=2000H
OPR2=4000H
Output:
RESLW=0000H(AX)
RESHW=0800H(DX)

4.Multiplicationoftwo16bitsignednumbers.
Aim:
Towriteanassemblylanguageprogramtoperformmultiplicationoftwo16bitsigned
numbers.
Tools:
PCinstalledwithTASM.
Program:
ASSUMECS:CODE,DS:DATA
CODESEGMENT
http://studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

5/16

11/28/2016 MicroprocessorsandMicrocontrollersNotes:Programsfor16bitarithmeticoperationsfor8086(usingvariousaddressingmodes)|studentboxoffi

MOVAX,DATA
MOVDS,AX
MOVAX,OPR1
IMULOPR2
MOVRESLW,AX
MOVRESHW,DX
HLT
CODEENDS
DATASEGMENT
OPR1DW7593H
OPR2DW6845H
RESLWDW?
RESHWDW?
DATAENDS
END
ListFile:
ADDRESS

OPCODE

OPERATION

COMMENTS

0000

B88E4E

MOVAX,4E8E

0003

8ED8

MOVDS,AX

0005

A10000

MOVAX,[0000]

THEVALUEIN[0000]ISMOVED
TOAX

0008

F72E0200

IMULWORDPTR[0002]

THEVALUEIN[0002]ISADDED
TOAX

000C

A30400

MOV[0004],AX

THEVALUEINAXISMOVED
TO[0004]

000F

89160600

MOV[0006],DX

THEVALUEINDXISMOVED
TO[0006]

0013

F4

HLT

ENDOFPROGRAM

INITIALIZATIONOF
DATASEGMENT

FlowChart:
Result:
Case1:Twopositivenumbers
Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,d=0.
Afterexecution,c=1,s=0,z=0,o=1,p=0,a=0,i=1,d=0.
Input:
OPR1=7593H
OPR2=6845H

http://studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

6/16

11/28/2016 MicroprocessorsandMicrocontrollersNotes:Programsfor16bitarithmeticoperationsfor8086(usingvariousaddressingmodes)|studentboxoffi

Output:
RESLW=689FH(AX)
RESHW=2FE3H(DX)
Case2:onepositivenumber&onenegativenumber
Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,d=0.
Afterexecution,c=1,s=0,z=0,o=1,p=0,a=0,i=1,d=0.
Input:
OPR1=8A6DH<2sComplementof(7593H)
OPR2=6845H
Output:
RESLW=9761H(AX)<2sComplement
RESHW=D01CH(DX)<of(2FE3689FH)
Case3:twonegativenumbers
Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,d=0.
Afterexecution,c=1,s=0,z=0,o=1,p=0,a=0,i=1,d=0.
Input:
OPR1=8A6DH<2sComplementof(7593H)
OPR2=97BBH<2sComplementof(6845H)
Output:
RESLW=689FH(AX)
RESHW=2FE3H(DX)

5.Divisionofunsignednumbers
Aim:
Towriteanassemblylanguageprogramtoperformdivisionof16bitunsignednumberby8bit
unsignednumber.
Tools:
PCinstalledwithTASM.
Program:
ASSUMECS:CODE,DS:DATA
CODESEGMENT
MOVAX,DATA
MOVDS,AX
MOVAX,OPR1
DIVOPR2
http://studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

7/16

11/28/2016 MicroprocessorsandMicrocontrollersNotes:Programsfor16bitarithmeticoperationsfor8086(usingvariousaddressingmodes)|studentboxoffi

MOVRESQ,AL
MOVRESR,AH
HLT
CODEENDS
DATASEGMENT
OPR1DW2C58H
OPR2DB56H
RESQDB?
RESRDB?
DATAENDS
END
Listfile:
ADDRESS

OPCODE

OPERATION

COMMENTS

0000

B88F4E

MOVAX,4E8F

0003

8ED8

MOVDS,AX

0005

A10000

MOVAX,[0000]

THEVALUEIN[0000]ISMOVED
TOAX

0008

F6360200

DIVBYTEPTR[0002]

THEVALUEIN[0002]ISADDED
TOAX

000C

A20300

MOV[0003],AX

THEVALUEINALISMOVED
TO[0003]

000F

88260400

MOV[0004],DX

THEVALUEINAHISMOVED
TO[0004]

0013

F4

HLT

ENDOFPROGRAM

INITIALIZATIONOF
DATASEGMENT

FlowChart:
Result:
Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,d=0.
Afterexecution,c=0,s=0,z=0,o=0,p=0,a=1,i=1,d=0.
Input:
OPR1=2C58H(DIVIDEND)
OPR2=56H(DIVISOR)
Output:
RESQ=84H(AL)
RESR=00H(AH)

http://studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

8/16

11/28/2016 MicroprocessorsandMicrocontrollersNotes:Programsfor16bitarithmeticoperationsfor8086(usingvariousaddressingmodes)|studentboxoffi

6.Divisionofsignednumbers
Aim:
Towriteanassemblylanguageprogramtoperform
divisionof16bitsignednumberby8bitsigned
number.
Tools:
PCinstalledwithTASM.
Program:
ASSUMECS:CODE,DS:DATA
CODESEGMENT
MOVAX,DATA
MOVDS,AX
MOVAX,OPR1
IDIVOPR2
MOVRESQ,AL
MOVRESR,AH
HLT
CODEENDS
DATASEGMENT
OPR1DW26F8H
OPR2DB0AAH
RESQDW?
RESRDW?
DATAENDS
END
Listfile:
ADDRESS

OPCODE

OPERATION

COMMENTS

0000

B88F4E

MOVAX,4E8F

0003

8ED8

MOVDS,AX

0005

A10000

MOVAX,[0000]

THEVALUEIN[0000]ISMOVED
TOAX

0008

F63E0200

DIVBYTEPTR[0002]

THEVALUEIN[0002]ISADDED
TOAX

000C

A20300

MOV[0003],AX

THEVALUEINALISMOVED
TO[0003]

000F

88260400

MOV[0004],DX

THEVALUEINAHISMOVED
TO[0004]

0013

F4

HLT

ENDOFPROGRAM

INITIALIZATIONOF
DATASEGMENT

http://studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

9/16

11/28/2016 MicroprocessorsandMicrocontrollersNotes:Programsfor16bitarithmeticoperationsfor8086(usingvariousaddressingmodes)|studentboxoffi

FlowChart:
Result:
Case1:twopositivenumbers
Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,
d=0.
Afterexecution,c=0,s=0,z=0,o=0,p=0,a=1,i=1,
d=0.
Input:
OPR1=26F8H(DIVIDEND)
OPR2=56H(DIVISOR)
Output:
RESQ=74H(AL)
RESR=00H(AH)
Case2:onepositivenumber&onenegativenumber
Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,d=0.
Afterexecution,c=0,s=0,z=0,o=0,p=0,a=1,i=1,d=0.
Input:
OPR1=D908H<2sComplementof(26F8H)
OPR2=56H
Output:
RESQ=8CH(AL)<2sComplementof(74H)
RESR=00H(AH)
Case3:onepositivenumber&onenegativenumber
Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,d=0.
Afterexecution,c=0,s=0,z=0,o=0,p=0,a=1,i=1,d=0.
Input:
OPR1=26F8H
OPR2=AAH<2sComplementof(56H)
Output:
RESQ=8CH(AL)<2sComplementof(74H)
RESR=00H(AH)

7.ASCIIaddition
http://studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

10/16

11/28/2016 MicroprocessorsandMicrocontrollersNotes:Programsfor16bitarithmeticoperationsfor8086(usingvariousaddressingmodes)|studentboxoffi

Aim:
TowriteanALPtoperformtheadditionoftwoASCIIbytes.
Tools:
PCinstalledwithTASM.
Program:
ASSUMECS:CODE,DS:DATA
CODESEGMENT
MOVAX,DATA
MOVDS,AX
MOVAH,00H
MOVAL,CHAR
ADDAL,CHAR1
AAA
MOVRES,AX
HLT
CODEENDS
DATASEGMENT
CHARDB'8'
CHAR1DB'6'
RESDW?
DATAENDS
END
Listfile:
ADDRESS

OPCODE

OPERATION

COMMENTS

0000

B88E4E

MOVAX,4E8E

0003

8ED8

MOVDS,AX

INITIALIZATIONOF
DATASEGMENT

0005

B400

MOVAH,00

00HISSTOREDINAH

0007

A00000

MOVAL,[0000]

THEVALUEIN[0000]ISMOVED
TOAL

000A

02060100

ADDAL,[0001]

THEVALUEIN[0001]ISADDED
TOAL

000E

37

AAA

ASCIIADJUSTAFTER
ADDITION

000F

A30200

MOV[0002],AX

THEVALUEINAXIS
MOVEDTO[0002]

0012

F4

HLT

ENDOFPROGRAM

FlowChart:
http://studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

11/16

11/28/2016 MicroprocessorsandMicrocontrollersNotes:Programsfor16bitarithmeticoperationsfor8086(usingvariousaddressingmodes)|studentboxoffi

Result:
Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,d=0.
Afterexecution,c=1,s=0,z=0,o=0,p=1,a=1,i=1,d=0.
Input:
CHAR='8'
CHAR1='6'
Output:
RES=0104(AX)<unpackedBCDof14

8.ASCIIsubstraction
Aim:
TowriteanALPtoperformthesubtractionoftwoASCIIbytes.
Tools:
PCinstalledwithTASM.
Program:
ASSUMECS:CODE,DS:DATA
CODESEGMENT
MOVAX,DATA
MOVDS,AX
MOVAH,00H
MOVAL,CHAR
SUBAL,CHAR1
AAS
MOVRES,AX
HLT
CODEENDS
DATASEGMENT
CHARDB'9'
CHAR1DB'5'
RESDW?
DATAENDS
END
Listfile:
ADDRESS

OPCODE

OPERATION

COMMENTS

0000

B88E4E

MOVAX,4E8F

0003

8ED8

MOVDS,AX

INITIALIZATIONOF
DATASEGMENT

0005

B400

MOVAH,00

00HISSTOREDINAH

http://studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

12/16

11/28/2016 MicroprocessorsandMicrocontrollersNotes:Programsfor16bitarithmeticoperationsfor8086(usingvariousaddressingmodes)|studentboxoffi

ADDRESS
0007

OPCODE
A00000

OPERATION
MOVAL,[0000]

COMMENTS
THEVALUEIN[0000]ISMOVED
TOAL

000A

2A060100

SUBAL,[0001]

THEVALUEIN[0001]IS
SUBTRACTEDFROMAL

000E

3F

AAS

ASCIIADJUSTAFTER
SUBTRACTION

000F

A30200

MOV[0002],AX

THEVALUEINAXIS
MOVEDTO[0002]

0012

F4

HLT

ENDOFPROGRAM

FlowChat:
Result:
Case1:
Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,d=0.
Afterexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,d=0.
Input:
CHAR=9
CHAR1=5
Output:
RES=0004(AX)
Case2:
Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,d=0.
Afterexecution,c=1,s=1,z=0,o=0,p=1,a=1,i=1,d=0.
Input:
CHAR=5
CHAR1=9
Output:
RES=FF06(AX)<2sComplementof(4)

9.ASCIImultiplication
Aim:

http://studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

13/16

11/28/2016 MicroprocessorsandMicrocontrollersNotes:Programsfor16bitarithmeticoperationsfor8086(usingvariousaddressingmodes)|studentboxoffi

TowriteanALPtoperformthemultiplicationoftwoASCIIbytes.
Tools:
PCinstalledwithTASM.
Program:
ASSUMECS:CODE,DS:DATA
CODESEGMENT
MOVAX,DATA
MOVDS,AX
MOVAH,00
MOVAL,NUM1
MULNUM2
AAM
MOVRES,AX
HLT
CODEENDS
DATASEGMENT
NUM1DB09
NUM2DB05
RESDW?
DATAENDS
END
Listfile:
ADDRESS

OPCODE

OPERATION

COMMENTS

0000

B88E4E

MOVAX,4E8F

0003

8ED8

MOVDS,AX

0005

B400

MOVAH,00

00HISSTOREDIN
AH

0007

A00000

MOVAL,[0000]

THEVALUEIN[0000]ISMOVED
TOAL

000A

F6260100

MULBYTEPTR[0001]

THEVALUEIN[0001]IS
MULTIPLIEDBYAL

000E

D40A

AAM

ASCIIADJUSTAFTER
MULTIPLCATION

000F

A30200

MOV[0002],AX

THEVALUEINAXIS
MOVEDTO[0002]

0012

F4

HLT

ENDOFPROGRAM

INITIALIZATIONOF
DATASEGMENT

FlowChart:
Result:
http://studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

14/16

11/28/2016 MicroprocessorsandMicrocontrollersNotes:Programsfor16bitarithmeticoperationsfor8086(usingvariousaddressingmodes)|studentboxoffi

Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,d=0.
Afterexecution,c=0,s=0,z=0,o=0,p=1,a=0,i=1,d=0.
Input:
NUM1=09
NUM2=05
Output:
RES=0405(AX)<unpackedBCDof45

10.ASCIIdivision
Aim:
TowriteanALPtoperformthedivisionoftwoASCII
numbers.
Tools:
PCinstalledwithTASM.
Program:
ASSUMECS:CODE,DS:DATA
CODESEGMENT
MOVAX,DATA
MOVDS,AX
MOVAX,DIVIDEND
AAD
MOVCH,DIVISOR
DIVCH
MOVRESQ,AL
MOVRESR,AH
HLT
CODEENDS
DATASEGMENT
DIVIDENDDW0607H
DIVISORDB09H
RESQDB?
RESRDB?
DATAENDS
END
Listfile:
ADDRESS

OPCODE

OPERATION

0000

B88F4E

MOVAX,4E8F

0003

8ED8

MOVDS,AX

COMMENTS
INITIALIZATIONOF
DATASEGMENT

http://studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

15/16

11/28/2016 MicroprocessorsandMicrocontrollersNotes:Programsfor16bitarithmeticoperationsfor8086(usingvariousaddressingmodes)|studentboxoffi

ADDRESS

OPCODE

OPERATION

COMMENTS

0005

A10000

MOVAH,[0000]

THEVALUEIN[0000]IS
MOVEDTOAX

0008

D50A

AAD

ASCIIADJUSTFOR
DIVIDION

000A

8A2E0200

MOVCH,[0002]

THEVALUEIN[0002]IS
MOVEDTOCH

000E

F6F5

DIVCH

AXISDIVIDED
BYCH

0010

A20300

MOV[0003],AL

THEVALUEINALIS
MOVEDTO[0003]

0013

88260400

MOV[0002],AH

THEVALYEINAHIS
MOVEDTO[0004]

0017

F4

HLT

ENDOF
PROGRAM

FlowChart:
Result:
Flags:
Beforeexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,d=0.
Afterexecution,c=0,s=0,z=0,o=0,p=0,a=0,i=1,d=0.
Input:
DIVIDEND=0607H<unpackedBCDof67
DIVISOR=09H
Output:
RESQ=07(AL)
RESR=04(AH)

http://studentboxoffice.in/jntuh/notes/Microprocessors%20and%20Microcontrollers/246

16/16

Вам также может понравиться