Witam, za niedługi okres czasu musze oddać 2 zrobione zadania z asemblera. Próbowałem je zrobić lecz mnie to przerasta. Czy mógłbym prosić o sprawdzenie i poprawienie błędów a także wytłumaczenie mi czemu jest źle?
PRAGNĘ DODAĆ IŻ BARDZIEJ ZALEŻY MI POD WZGLĘDEM CZASU NA ZADANIU DRUGIM!!!
Zad1. Program ma znaleźć najmniejszy element tablicy.
.MODEL TINY
Kod SEGMENT
ORG 100h
ASSUME CS:Kod, DS:Kod, SS:Kod
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 ax, SEG Kod
mov ds, ax
mov cx, DL_TABLICA; licznik petli
mov bx, -1
Petla:
inc bx
mov al, tablica[bx]
cmp byte ptr tablica[bx],ah
jae Petla
mov al, ah
dec cx
Skok:
loop Petla
mov Najmniejsza, al
mov ax, 4C13h
int 21h
Kod ENDS
.STACK 100h
END START
Zad2. Program ma obliczać wyrażenie (3*a-b/a)*(d+3):
.MODEL SMALL
Dane SEGMENT
a EQU 20h
b EQU 10h
d EQU 3h
Wynik DW ?
Dane ENDS
Kod SEGMENT
org 100h
ASSUME CS:Kod, DS:Kod, SS:Kod
Start:
mov ax, @DATA
mov ds, ax
mov ax, @STACK
mov ds, ax
mov ax, a
shl ax, 2
add ah, a
mov ax, ax
mov bh, d
div bh
mov ax, b
sub dx, ax
mul dl
mov al, d
add al, 07h
mov ax, 4C00h
int 21h
Kod ENDS
.STACK 100h
END Start