0% found this document useful (0 votes)
12 views22 pages

Terminal PRG

Uploaded by

kunalchalke2827
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views22 pages

Terminal PRG

Uploaded by

kunalchalke2827
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

WAP TO TRANSFER CONTENT OF MB STARTING FROM C030H TO ANOTHER

BLOCK STARTING FROM D030H IN REVERSE ORDER


LENGTH OF THE BLOCK IS 10
M.L. in hex Hex code Label Instruction Comment
D020 MVI B,OAH ;Move 0AH in reg. B
D021
D022 LXIH, C030H ;Load C030H in H pair
D023
D024
D025 LXID, D039H ;Load D039H in H pair
D026
D027
D028 XX MOV A,M ;Move (M)--->A
D029 STAXD ;Store (A)--->(DE)
D02A INXH ;(HL) + 01H--->HL
D02B DCXD ;(DE) - 01H--->DE
D02C DCR B ;(B) - 01H--->B
D02D JNZ XX ; If (z)<>1 go to xx
D02E
DO2F
D030 RST1 ;End

WAP TO EXCHANGE DATA OF TWO MB STARTING FROM C030H & C060H


LENGTH OF THE BLOCK IS 10
M.L. in hex Hex code Label Instruction Comment
D020 MVI B,0AH ;Move 0AH in reg. B
D021
D022 21 LXIH, C030H ;Load C030H in H pair
D023 30
D024 C0
D025 LXID, C060H ;Load C060H in D pair
D026
D027
D028 XX MOV C,M ;Move (M)--->C
D029 LDAXD ;Load ((DE))--->A
D02A MOV M,A ;Move (A)--->M
D02B MOV A,C ;Move (C)--->A
D02C STAXD ;Store (A)--->(DE)
D02D INXH ;(HL) + 01H--->HL
D02E INXD ;(DE) + 01H--->DE
DO2F DCR B ;(B) - 01H--->B
D030 C2 JNZ D028JNZ XX ; If (z)<>1 go to xx
D031 28
D032 D0
D033 RST1 ;End

WAP TO MULTIPLY TWO 8 BIT NOS. STORED AT ML C030H & C031H.


STORE RESULT IN ML C032H &C033H
M.L. in hex Hex code Label Instruction Comment
C000 SUB A ;Clear accumulator
C001 MOV C,A ;Move (A)--->C
C002 LXIH, C030H ;Load C030H in Hpair
C003
C004
C005 MOV D,M ;Move (M)--->D
C006 INXH ;(HL) + 01H-->HL
C007 MOV B,M ;Move (M)--->B
C008 YY ADD D ;(A) + ( D) ----> A
C009 JNC XX ;If( CY)<>1 jump to xx
C00A
C00B
C00C INR C ;(C) + 01H--> C
C00D XX DCR B ;(B)-01H--> B
C00E JNZ YY ;If( z)<>1 jump to YY
C00F
C010
C011 INXH ;(HL) + 01H-->HL
C012 MOV M,A ;Move (A)--->M
C013 INXH ;(HL) + 01H-->HL
C014 MOV M,C ;Move (C)--->M
C015 RST1 ;End

WAP TO ADD A M.B. STARTING FROM C060H. STORE 2 BYTE


RESULT AT THE END OF THE BLOCLK . LENGTH OF THE BLOCK IS 10.
M.L. in hex Hex code Label Instruction Comment
C000 MVI B,0AH ; Store OAH in Reg.B
C001
C002 SUB A ;Clear accumulator
C003 MOV C,A ;Move (A)--->C
C004 LXIH, C060H ;Load C060H in Hpair
C005
C006
C007 YY ADD M ;(A) + ( M) ----> A
C008 JNC XX ;If( CY)<>1 jump to xx
C009
C00A
C00B INR C ;(C) + 01H--> C
C00C XX INXH ;(HL) + 01H-->HL
C00D DCR B ;(B)-01H--> B
C00E JNZ YY ;If( z)<>1 jump to YY
C00F
C010
C011 MOV M,A ;Move (A)--->M
C012 INXH ;(HL) + 01H-->HL
C013 MOV M,C ;Move (C)--->M
C014 RST1 ;End

WAP TO SUBTRACT CONTENT OF M.L. C081H FROM C080H.


STORE RESULT IN C082H
M.L. in hex Hex code Label Instruction Comment
C000 LXIH, C080H ;Load C080H in Hpair
C001
C002
C003 MOV A,M ;Move (A)--->M
C004 INXH ;(HL) + 01H-->HL
C005 SUB M ;(A) -(M)----> M
C006 JP XX ;Jump to xx if ans. Is +ve
C007
C008
C009 CMA ;(A)' ---> A
C00A INR A ;(A) + 01H----> A
C00B XX INXH ;(HL) + 01H-->HL
C00C MOV M,A ;Move (A)--->M
C00D RST1 ;End
WAP TO ADD 2 , FOUR BYTE NOS. STORED FROM M.L. STARTING FROM C050H
& C060H.STORE RESULT IN STARTING FROM C060H
M.L. in hex Hex code Label Instruction Comment
E010 STC ;(CY)=1
E011 CMC ;(CY)'--->CY
E012 MVI B,04H ;Move 04H in reg.B
E013
E014 LXIH, C050H ; Load C050H in Hpair
E015
E016
E017 LXID, C060H ; Load C060H in D pair
E018
E019
E01A XX LDAXD ;Load ((DE))---->A
E01B ADC M ;(A) + (M) + (CY)--->A
EO1C STAXD ;Store (A) ----> (DE)
E01D INXH ;(HL) + 01H-->HL
E01E INXD ;(DE) + 01H-->DE
E01F DCR B ;(B)-01H--> B
E020 JNZ XX ;If( z)<>1 jump to YY
E021
E022
E023 RST1 ;End

WAP TO COUNT HOW MANY EVEN & ODD NOS ARE PRESENT IN A MB STARTING
FROM C090H. STORE EVEN COUNT IN REG. C & ODD COUNT IN REG. D
LENGTHOF THE BLOCK IS 10

M.L. in hex Hex code Label Instruction Comment


C000 MVI C,00H ; Clear reg. C
C001
C002 MVI B,0AH ;Store 0AH in reg.B
C003
C004 LXIH, C090H ; Load C090H in Hpair
C005
C006
C007 YY MOV A,M ; Move (M)---->A
C008 RRC ; Rotate (A) right
C009 JC XX ; Jump to xx if (CY)=1
C00A
C00B
C00C INR C ; ( C ) + 01H ----> C
C00D XX INXH ;(HL ) + 01H ----> HL
C00E DCR B ;(B) -01H ---->B
C00F JNZ YY ;If( z)<>1 jump to YY
C010
C011
C012 MVI A, 0AH ; Move 0AH in Accumulator
C013
C014 SUB C ;(A)-( C )---->A
C015 MOV D,A ; Move (A) ----->D
C016 RST1 ;End

WAP TO COUNT HOW MANY TIME DATA 11H IS REPEATED IN A MB STARTING FROM
C071H. LENGTH OF THE BLOCK IS STORED IN C070H. STORE RESULT IN REG.C

M.L. in hex Hex code Label Instruction Comment


C000 MVI C,00H ; Clear reg. C
C001
C002 LXIH, C070H ; Load C070H in Hpair
C003
C004
C005 MOV B,M ; Move (M)----> B
C006
C007 YY INXH ;(HL) + 01H ---->HL
C008 MOV A,M ; Move (M)----> A
C009 CPI, 11H ; Compare (A) with 11H
C00A
C00B JNZ XX ;If( z)<>1 jump to XX
C00C
C00D
C00E INR C ;( C ) + 01H ----> C
C00F XX DCR B ; (B) - 01H----> B
C010 JNZ YY ;If( z)<>1 jump to YY
C011
C012
C013 RST1 ;End

WAP TO SEARCH FOR THE FIRST OCCURANCE OF DATA AAH IN A MB STARTING


FROM C081H.LENGTH OF THE BLOCK IS STORED IN C080H. IF THE SEARCH IS
SUCCESSFUL STORE ADDRESS OF THE OCCURA=NCE IN H PAIR ELSE STORE FFFFH

M.L. in hex Hex code Label Instruction Comment


C000 LXIH, C080H ; Load C080H in Hpair
C001
C002
C003 MOV B,M ; Move (M)----> B
C004 INXH ;(HL) + 01H ---->HL
C005 YY MOV A,M ; Move (M)----> A
C006 CPI,AAH ; Compare (A) with 11H
C007 JZ XX ;If( z)=1 jump to XX
C008
C009
C00A INXH ;(HL) + 01H ---->HL
C00B DCR B ; (B) - 01H----> B
C00C JNZ YY ;If( z)<>1 jump to YY
C00D
C00E
C00F LXIH, FFFFH ; Load FFFFH in H pair
C010
C011
C012 XX RST1 ; End
WAP to find the highest data from a M.B. starting from C070H. Length of the
block is 10. Store result at the end of the block

M.L. in hex Hex code Label Instruction Comment


C000 MVI B,09H ;Store 09H in register B
C001
C002 LXIH, C060H ;Load C060H in H pair
C003
C004
C005 MOV A,M ; Move (M)---->A
C006 YY INXH ;(HL) + 01H ---->HL
C007 CMP M ;(A) -(M)
C008 JNC XX ;If( CY)<>1 jump to YY
C009
C00A
C00B MOV A,M ; Move (M)---->A
C00C XX DCR B ; (B) - 01H----> B
C00D JNZ YY ;If( z)<>1 jump to YY
C00E
C00F
C010 INXH ;(HL) + 01H ---->HL
C011 MOV M,A ; Move (A)---->M
C012 RST1

WAP to divide a no. stored at M.L. C050H by another no. stored at M.L. C051H. Store quotient
at M.L. C052H & remainder at M.L C053H
M.L. in hex Hex code Label Instruction Comment
C000 LXIH, C050H ; Load C050H in H pair
C001
C002
C003 MOV A,M ; Move (M)---->A
C004 INXH ;(HL) + 01H ---->HL
C005 MOV B,M ; Move (M)---->B
C006 MVIC , 00H ;Clear reg. C
C007 YY CMP B ;(A)-(B)
C008 JC XX ;If( CY) = 1 jump to xx
C009
C00A
C00B SUB B ; (B) - 01H----> B
C00C INR C ; (C) + 01H----> C
C00D JMP YY ; Jump to YY
C00E
C00F
C010 XX INXH ;(HL) + 01H ---->HL
C011 MOV M,C ; Move (C)---->M
C012 INXH ;(HL) + 01H ---->HL
C013 MOV M,A ; Move (A)---->M
C014 RST1 ;End

WAP to separate nibbles of a number stored at M.L. C050 & store in M.L. C051H & C052H.
iply both nibbles & store result in C053H
M.L. in hex Hex code Label Instruction Comment
C000 LXIH, C050H ;Load C050Hin Hpair
C001
C002
C003 MOV B,M ; Move (M)---->B
C004 MOV A,M ; Move (M)---->A
C005 ANI, OFH ; (A) AND 0FH---> A
C006
C007 MOV C,A ; Move (A)---->C
C008 INXH ;(HL) + 01H ---->HL
C009 MOV M,A ; Move (A)---->M
C00A MOV A,B ; Move (B)---->A
C00B RRC : Rotate ( A) right four times
C00C RRC
C00D RRC
C00E RRC
C00F ANI, OFH ; (A) AND 0FH---> A
C010
C011 INXH ;(HL) + 01H ---->HL
C012 MOV M,A ; Move (A)---->M
C013 SUB A ; Clear Acumulator
C014 XX ADD M ;(A) + (M) ---> A
C015 DCR C ;(C ) - 01H ----->C
C016 JNZ XX ;If( z)<>1 jump to XX
C017
C018
C019 INXH ;(HL) + 01H ---->HL
C01A MOV M,A ; Move (A)---->M
C01B RST1 ;End

WAP TO CHEK NO. STORED AT ML C060H IS A PALINDROME OR NOT


IF NO IS PALINDROME STORE AAH IN REG.B ELSE STORE BBH

M.L. in hex Hex code Label Instruction Comment


C000 LDA, C060H ;Load (C060H)---->A
C001
C002
C003 MOV B,A ; Move (A)---->B
C004 RRC ; Rotate (A) to right 4 times
C005 RRC
C006 RRC
C007 RRC
C008 CMP B ; (A) - (B)
C009 JZ XX ;If( z)=1 jump to XX
C00A
C00B
C00C MVI B,BBH ; Move BBH in reg. B
C00D
C00E JMP YY ; goto YY
C00F
C010
C011 XX MVI B,AAH ; Move AAH in reg. B
C012
C013 YY RST1 ;End

WAP TO CHEK 16 BIT NO. STORED ML C060H & C061H IS A PALINDROME OR NOT
IF NO IS PALINDROME STORE AAH IN REG.B ELSE STORE BBH

M.L. in hex Hex code Label Instruction Comment


C000 LXIH, C060H ;Load (C060H)---->A
C001
C002
C003 MOV A,M ; Move (M)---->A
C004 RRC ; Rotate (A) to right 4 times
C005 RRC
C006 RRC
C007 RRC
C008 INXH ;(HL) + 01H ---->HL
C009 CMP M ; (A) - (M)
C00A JZ XX ;If( z)=1 jump to XX
C00B
C00C
C00D MVI B,BBH ; Move BBH in reg. B
C00E
C00F JMP YY ; goto YY
C010
C011
C012 XX MVI B,AAH ; Move AAH in reg. B
C013
C014 YY RST1 ; End

WAP TO ADD A MB STARTING FROM C070H. LENGTH OF THE BLOCK IS 10. STORE 16 BIT RESULT A
THE BLOCK . USE DAD INSTRUCTION

M.L. in hex Hex code Label Instruction Comment


C000 MVI A,0AH
C001
C002 LXID, 0000H
C003
C004
C005 LXIH, C070H
C006
C007
C008 XX MOV C,M
C009 MVI B,00H
C00A
C00B XCHG ;(HL)<---->(DE)
C00C DAD B ;(HL) + (BC)--->HL
C00D XCHG ;(HL)<---->(DE)
C00E INXH
C00F DCR A
C010 JNZ XX
C011
C012
C013 MOV M,E
C014 INXH
C015 MOV M,D
C016 RST1

WRITE A SUBROUTINE TO STORE DATA 00H & FFH IN ALTERNATE M.L. OF A M.B. STARTING FROM

FILL:
M.L. in hex Hex code Label Instruction Comment
C000 MVI B,32H
C001
C002 LXIH, D050H
C003
C004
C005 XX MVI M,OOH
C006
C007 INXH
C008 MVI M,FFH
C009
C00A INXH
C00B DCR B
C00C JNZ XX
C00D
C00E
C00F RET
C010
NG FROM
. STORE 16 BIT RESULT AT THE END OF THE BLOCK.
F A M.B. STARTING FROM D050H. LENGTH OF THE BLOCK IS 100.
DECIMAL----> BINARY---->HEX

D050 OO 2 50
D051 FF 25 0
D052 OO 12 1
D053 FF 6 0
D054 OO 3 0
D055 FF 1 1

50 0011 0010
3 2
32H

You might also like