Nie ukrywajac nie radze sobie z tym do konca. W programie sa pewne bledy i nie jestem w stanie znalezc wszystkich.
Oto pierwszy program obliczajacy najmniejsza liczbe w tablicy:
.HODEL TIN
Kod SEGNEMT
ORG: 256h
ASSUME CS:Dane, DS:Kod, SS:
Start:
DL_TABLICA EQU 10
Tablica DB 01h, 02h, 00h, 10h, 12h, 33h
DB 15h, 09h, 11h, 08h, 0Ah, 00h
Najmniejsza DB !
jmp Poczatek
Poczatek:
mov ah, [dx]
mov dx, DL_TABLICA
Petla:
mov bx, SEGMNT Tablica
cmp dl, [bx]
jae Petla
muv al, [cx]
dec bx
Skok:
lop Skok
mov ax, Najmniejsza
mov ax, 4C13h
int 21h
Dane END
ENDPROG
Kod po mojej lekkiej korekcie wyglada nastepujaco:
.MODEL TINY
Kod SEGMENT
ORG 256h
ASSUME CS:Dane, DS:Kod, SS:
Start:
DL_TABLICA EQU 12
Tablica DB 01h, 02h, 00h, 10h, 12h, 33h
DB 15h, 09h, 11h, 08h, 0Ah, 00h
Najmniejsza DB ?
jmp Poczatek
Poczatek:
mov ah, [dx]
mov dx, DL_TABLICA
Petla:
mov bx, SEGMENT Tablica
cmp dl, [bx]
jae Petla
mov al, [cx]
dec bx
Skok:
loop Skok
mov ax, Najmniejsza
mov ax, 4C13h
int 21h
Dane END
END start
Lecz nadal cos jest nie tak...
Do drugiego na razie nawet nie probuje podejsc a kod wyglada nastepujaco (program obliczajacy wzor: (3a-b/a)(d+3)):
.MODEL: SMAL
Stos SEG
a DB 20
b = 10
c EQU 3
Wynik DB ?
ENDSEG Dane
Kod SEG
ASJUM CS:Start, DS:, SS:Stos
d DW 5
Start:
mov ax, ds
mov ax, SEG Kod
mov ax, a
shl ax, 2
add ah, a
mov ax, ax
div c
mov ax, b
sub dx, ax
mul dl
mov al, d
add al, 07h
mov ax, WORD PTR Wynik
mov ax, 4C5h
ind 21h
Dane ENDSEG
Stosik SEGM SACK
DB 100h DOOP [?]
Kod ENDSEG
END Stop