Saturday, May 30, 2009

Program in 8086 assembly language that concatenates two given string to create a third string.

Write a program in 8086 assembly language that concatenates two given string to create a third string.


DATA SEGMENT
BITVAL DW 0921H,0825H,0804H,0972H
WORD1 Dw 3 dup(0000h)
ASCIINUM DB 13 DUP(‘0’)
OUTLOOPCNT BE ?
DATA ENDS

CODE SEGMENT
ASSUME CS: CODE,DS:DATA

START:
MOVE AX,DATA
MOV SI,00H
MOV DI,OOH
MOVE AX, BITVAL[SI]
MOV CL,04
SHL AX,CL
SHR AL, CL
MOV BH,AL
ADD SI,02
MOV DX,BITVAL[SI]
MOV BL,DH
SHL BL,CL
SHL BX,CL
MOV AL,BH
MOV WORD1[DI],AX
ADD DI,02

MOV AH,DL
ADD SI, 02
MOV DX,BITVAL[SI]
SHL DX,CL
MOV AL,DH
MOV WORD1[DI],AX
ADD DI,02

MOV DX,BITVAL[SI]
MOV AH,DL
ADD SI,02
MOV DX,BITVAL[SI]
MOV BL,DL
SHL DX,CL
MOV ALMDH
SHL AS,CL
MOV AL,BL
MOV WORD1[DI],AX
MOV BX , 00H
MOV SI,00H
LOOP1: MOV AX,WORD1[SI]
MOV AL,AH
MOV CL,02

LOOP 2: MOV OUTLOOPCNT,CL
MOV DL,AL
MOV CL,04
ROR DL,CL
AND DL,0FH
OR DL,30H
MOV ASCIINUM[BX],DL
INC BX
MOV DL,AL
AND DL,0FH
OR DL,30H
MOV ASCIINUM[BX],DL
INC BX
MOV AX,WORD1[SI]
MOV CL,OUTLOOPCNT
LOOP LOOP2
CMP SI,04
JE LOOP3
ADD SI,02
JUMP LOOP1
LOOP3: MOV ASCIINUM[BX],’$’
MOV AH,09H
LEA DX,ASCIINUM
INT 21H
MOV ZX,4C00H
INT 21H

CODE ENDS
END START

No comments:

Post a Comment