Выложу в тему пару простых программ. В своё время когда изучал в инсте этот язык, повесился бы за эти примеры, ибо в инете сразу маньяческие. Простеньких нету(((( Выкладывайте сюда свои программки либо ваше мнение, заметки, модули, етс
1. Межсегментные переходы
st_s segment stack "stack"
st_s ends
;==
dt1_s segment
text1 db "TEXT1", 0ah, 0dh, "$"
dt1_s ends
;==
dt2_s segment
text2 db "TEXT2", 0ah, 0dh, "$"
adr1 dd segm1
adr2 dd segm2
dt2_s ends
;==
dt3_s segment
text3 db "TEXT3", 0ah, 0dh, "$"
dt3_s ends
;===================
ct1_s segment
assume ss : st_s, ds : dt2_s, cs : ct2_s;
segm2 label far
mov ax, dt2_s
mov ds, ax
mov ah, 9h
lea dx, text2
int 21h
jmp far ptr endall
ct1_s ends
;==
ct2_s segment
assume ss : st_s, ds : dt3_s, cs : ct2_s;
segm1 label far
mov ax, dt3_s
mov ds, ax
mov ah, 9h
lea dx, text3
int 21h
assume ds: dt2_s
mov ax, dt2_s
mov ds, ax
jmp[adr2]
ct2_s ends
;==
ct3_s segment
assume ss : st_s, ds : dt1_s, cs : ct3_s;
begin:
mov ax, dt1_s
mov ds, ax
mov ah, 9h
lea dx, text1
int 21h
assume ds: dt2_s
mov ax, dt2_s
mov ds, ax
jmp[adr1]
endall:
mov ah, 4ch
int 21h
ct3_s ends
end begin;
;==
2. Вывод не попорядку из стека
st_s segment stack "stack"
st_s ends
;====
dt_s segment
dt_s ends
;====
ct_s segment
assume ss: st_s, ds: dt_s, cs: ct_s
begin:
mov ax, 31h
;mov ax, 0 - for numeric format
mov cx, 6
m1:
push ax
inc ax
loop m1
mov cx, 3
mov bp, sp
m2:
mov dx, [bp]
add bp, 4
mov ah, 2
add dx, 30h
int 21h
loop m2
;=======================
mov cx, 3
mov bp, sp
m3:
mov dx, [bp+2]
add bp, 4
mov ah, 2
add dx, 30h
int 21h
loop m3
mov ah, 4ch
int 21h
ct_s ends
end begin
3. Выбор цифр и букв
st_s segment stack "stack"
st_s ends
;====
dt_s segment
mas dw "S", "Q", 1, 3, 7, "R", 6, 5
dt_s ends
;====
ct_s segment
assume ss: st_s, ds: dt_s, cs: ct_S
begin:
mov ax, dt_s
mov ds, ax
mov bx, 0
mov dx, 0
mov di, 0
mov cx, 8
m1:
mov ax, mas[di]
inc di
cmp ax, 9h
jnl m2
inc bx
jmp m3
m2:
inc dx
m3:
loop m1
;=======
mov ah, 2
add dx, 30h
int 21h
mov dx, bx
mov ah, 2
add dx, 30h
int 21h
mov ah, 4ch
int 21h
ct_s ends
end begin