Computer Science, asked by yadavcool2998, 11 months ago

Microprocessor 8086 maximum no. In a given string from memory loca

Answers

Answered by OOOIRKIOOO
1

Load data from offset 500 to register CL and set register CH to 00 (for count).

Load first number(value) from next offset (i.e 501) to register AL and decrease count by 1.

Now compare value of register AL from data(value) at next offset, if that data is greater than value of register AL then update value of register AL to that data else no change, and increase offset value for next comparison and decrease count by 1 and continue this till count (value of register CX) becomes 0.

Store the result (value of register AL ) to memory address 2000 : 600.

Program –

MEMORY ADDRESS MNEMONICS COMMENT

400 MOV SI, 500 SI<-500

403 MOV CL, [SI] CL<-[SI]

405 MOV CH, 00 CH<-00

407 INC SI SI<-SI+1

408 MOV AL, [SI] AL<-[SI]

40A DEC CL CL<-CL-1

40C INC SI SI<-SI+1

40D CMP AL, [SI] AL-[SI]

40F JNC 413 JUMP TO 413 IF CY=0

411 MOV AL, [SI] AL<-[SI]

413 INC SI SI<-SI+1

414 LOOP 40D CX<-CX-1 & JUMP TO 40D IF CX NOT 0

416 MOV [600], AL AL->[600]

41A HLT END

Explanation –

MOV SI, 500 : set the value of SI to 500

MOV CL, [SI] : load data from offset SI to register CL

MOV CH, 00 : set value of register CH to 00

INC SI : increase value of SI by 1.

MOV AL, [SI] : load value from offset SI to register AL

DEC CL : decrease value of register CL by 1

INC SI : increase value of SI by 1

CMP AL, [SI] : compares value of register AL and [SI] (AL-[SI])

JNC 413 : jump to address 413 if carry not generated

MOV AL, [SI] : transfer data at offset SI to register AL

INC SI : increase value of SI by 1

LOOP 40C : decrease value of register CX by 1 and jump to address 40D if value of register CX is not zero

MOV [600], AL : store the value of register AL to offset 600

HLT : stop


Similar questions