Machine Level Programs
In this section, a few machine levels programming instance, rather then, instruction sequences are presented for comparing the 8086 programming with that of 8085. These programs are ii the form of instruction sequences as 8085 programs. These can even be hand-coded entered byte by byte and executed on an 8086 based system but due to the complicated instruction set of 8086 and its tedious opcode conversion procedure, mostly programmers prefer to use assemblers. However, we will deeply discuss the hand- coding,
Write a program to add data byte situated at offset 0500H in 2000H segment to another data byte available at 0600H in the similar segment and the result is store at 0700H in the similar segment.
The flow chart for this problem might be drawn as given figure
The above instruction is quite straight-forward. As the immediate data can't be loaded into a segment register, the data is transferred to one general purpose resistors AX. And then the register general purpose registers AX, and then the register content is moved to the segment registers DS. Thus the data segment register DS have 2000H. The instruction MOV AX,[500H] signifies that the contents of the specific location, whose offset is indicated in the brackets having the segment pointed to by DS segment register, is to be moved to register AX. The MOV , AX instruction moves the contents of the AX to an offset 0700H in DS (DS = 2000H). Make a point that the code segment register CS gets automatically loaded by the code segment address of the program whenever it is executed. In actual it is the monitor program that accepts the CS:IP address of the program and passes it to the equivalent registers on the time of execution. Hence no instructions are needed for loading the CS register like SS or DS.