Google
Showing posts with label masm611. Show all posts
Showing posts with label masm611. Show all posts

Dec 21, 2007

Assembly Language Programs on array of Hexadecimal numbers

AIM: To write 8086 Assembly Language Program to sorting n-hexadecimal number in ascending order.

Answer:

MODEL SMALL

.STACK 100

.DATA ; Data segment starts

LIST DW 53H, 25H, 02H, 19H ; Array (list) containing 4 elements is initialized.

COUNT EQU 04 ; Count is initialized to 4

.CODE ; Code segment starts

START:

MOV AX,@DATA ;Initialize the data segment

MOV DS,AX

MOV DX,COUNT-1 ;Move 03(count-1) to DX register

LOOP0: MOV CX,DX ;Move the contents of DX to CX register

MOV SI,OFFSET LIST ;Move the pointer variable of array(list) to SI

LOOP1: MOV AX,[SI] ;Move the contents of array pointed by SI to AX register

CMP AX,[SI+2] ;Compare the contents of array pointed by SI and SI+2

JL PR1 ; Transfers the control to PR1 if OF & SF are SET i.e. if 1st no<2nd style="font-size:130%;">

AIM: To write 8086 Assembly Language Program to sorting n-hexadecimal number in descending order.


Answer:

MODEL SMALL

.STACK 100

.DATA ; Data segment starts

LIST DW 53H, 25H, 02H, 19H ; Array (list) containing 4 elements is initialized.

COUNT EQU 04 ; Count is initialized to 4

.CODE ; Code segment starts

START:

MOV AX,@DATA ;Initialize the data segment

MOV DS,AX

MOV DX,COUNT-1 ;Move 03(count-1) to DX register

LOOP0: MOV CX,DX ;Move the contents of DX to CX register

MOV SI,OFFSET LIST ;Move the pointer variable of array(list) to SI

LOOP1: MOV AX,[SI] ;Move the contents of array pointed by SI to AX register

CMP AX,[SI+2] ;Compare the contents of array pointed by SI and SI+2

JG PR1 ; Transfers the control to pr1 if OF & SF

; are RESET i.e. if 1st no>2nd no.

XCHG [SI+2],AX ;Exchanges the contents of AX with [SI+2]

XCHG [SI],AX ;Exchanges the contents of AX with [SI]

PR1: ADD SI,02 ;Increments SI by 2

LOOP LOOP1 ; Control passes to LOOP1

DEC DX ; Decrement DX register

JNZ LOOP0 ; Jump to LOOP0 if CX! = 0

INT 03H

END START

INPUT:

LIST 53H, 25H, 02H, 19H

OUTPUT:

SORTED ARRAY OF THE INPUT

53H, 25H, 19H, 02H


AIM: To write 8086 Assembly Language Program to find Number of Positive & Negative hexadecimal numbers in an array.


Answer:

MODEL SMALL

.STACK 100

.DATA ; Data segment starts

LIST DW 2345H, 4567H, 8125H, 0A120H ; Initialize an array (LIST) of 16bit

COUNT EQU 04 ; Initialize count variable

.CODE ; Code segment starts

START:

XOR BX,BX ; Clear the contents of BX register

XOR DX,DX ; Clear the contents of DX register

MOV AX,@DATA ; Initialize data segment

MOV DS,AX

MOV CL,COUNT ;Move count to CL register

MOV SI,OFFSET LIST ;Offset of array is moved to SI

LOOP1: MOV AX,[SI] ;The contents of array pointed by SI are moved to AX

SHL AX,01 ;After SHL, the MSB will contain the SIGN FLAG

JC NEG1 ; Jump on no carry to NEG1

INC BX ; Increment BX register

JMP NEXT ; Jump to NEXT

NEG1: INC DX ; Increment DX register

NEXT: ADD SI,02 ;Increment SI by 2

DEC CL ; Decrement CL by 1

JNZ LOOP1 ; Jump to loop1 if ZF! = 0

INT 03H

END START

INPUT:

ARRAY OF 16BITS

LIST DW 2345H, 4567H, 8125H, 0A120H

OUTPUT:

BX register gives the no of positive numbers in the given array (LIST)

DX register gives the no of negative numbers in the given array (LIST)

AIM: To write 8086 Assembly Language Program to find Number of Even & Odd hexadecimal numbers in an array.


Answer:

MODEL SMALL

.STACK 100

.DATA ; Data segment starts

LIST DW 2345 H, 4567 H, 8125 H, 0A120 H, 6742 H ; Initialize an array (LIST) of 16bit

COUNT EQU 05 ; Initialize count variable

.CODE ; Code segment starts

START:

XOR BX,BX ;Clear the contents of BX register

XOR DX,DX ;Clear the contents of DX register

MOV AX,@DATA ;Initialize data segment

MOV DS,AX

MOV CL,COUNT ;Move count to CL register

MOV SI,OFFSET LIST ;Offset of array is moved to SI

LOOP1: MOV AX,[SI] ;The contents of array pointed by SI are moved to AX

ROR AX,01 ;After ROR, the LSB specifies if the no is even/odd

JC ODD ;Jump on no carry to ODD

INC BX ; Increment BX register

JMP NEXT ; Jump to next

ODD: INC DX ; Increment DX register

NEXT: ADD SI,02 ;Increment SI by 2

DEC CL ; Decrement CL by 1

JNZ LOOP1 ; Jump to loop1 if ZF! = 0

INT 03H

END START

INPUT: ARRAY OF 16-BITS

LIST DW 2345H, 4567H, 8125H, 0A120H

OUTPUT:

BX register gives the no of odd numbers in the given array (LIST)

DX register gives the no of odd numbers in the given array (LIST)

You might be also interested in:
:: Temperature Control system using 8086
:: Traffic light control system using 8086
:: Assembly Language Program to serve NMI

Dec 10, 2007

MASM 611 SOFTWARE

hey guys,
the software its masm611 you can download it here : http://www.phatcode.net/downloads.php?id=175

I have not tried this but here is the other link
http://www.thefreecountry.com/compilers/assemblers.shtml

you can try these programs on it.
if you find any errors please comment on that programs so the we can try to fix it .

You might be also interested in:
:: Temperature Control system using 8086
:: Traffic light control system using 8086