Having learned the structure of the Intel 8080, I am now trying to study the Intel 8086 and how the programs are laid out here. This is pretty intimidating at the moment, even looking at the basic examples, and even worse, I can't get the difference between the two ways I wrote the code for 8086 that I came across. Namely, sometimes I see:
.model small .stack 100h .code start: mov dl, 'a' ; store ascii code of 'a' in dl mov ah, 2h ; ms-dos character output function int 21h ; displays character in dl register mov ax, 4c00h ; return to ms-dos int 21h end start
So far I have also found:
Progr segment assume cs:Progr, ds:dataSeg, ss:stackSeg start: mov ax,dataSeg mov ds,ax mov ax,stackSeg mov ss,ax mov sp,offset top mov ah,4ch mov al,0 int 21h Progr ends dataSeg segment dataSeg ends stackSeg segment dw 100h dup(0) top Label word stackSeg ends end start
Obviously, I know that the two do very different things, but what puzzles me is how different the general syntax is. In the latter case, we have some "segment", while in the first it is simply .model, .stack and .code (and sometimes .data, from what I found). Is there any difference? Can I choose which one suits me? The former looks much easier to understand and clarify, but can I use it instead of the latter?
assembly x86 dos x86-16
Straightfw
source share