1. Program, ktory ma on odczytac 10 wartosci z tablicy majacej poczatek pod adresem 3500:300 i z rejestru AL przeniesc dane do AH
0100 MOV CX, 9 - w cx przechowywana jest liczba powtorzen petli, my chcemy by petla powturzyla sie 9 razy, bo musimy 10 wartosci zamienic
0102 MOV AX, 3500
0104 MOV DS, AX - dajemy do rejestru segmentowego rządany w poleceniu segment(3500)
0106 MOV DI, 300 - poczatkowy offset
0108 MOV AX, [DI] - odczytujemy wartosc z pamieci z pod adresu 3500:300 i zapisujemy
010A MOV AH, AL - wartosc z AL zapisujemy do AH
010C ADD DI, 2 - dodajemy do offsetu 2 by pobral dane z nastepnej komorki tablicy
010E LOOP 0108 - bedzie skakal do miejsca zaznaczonego jako tutaj, az do momentu, gdy CX osiagnie zero. W rezultacie pod koniec programu wszystkie bajty zostana podmienione
1 MOV CX,A
2 MOV BX,3500
3 MOV DS,BX
4 MOV DI,300
5 XOR AH,AH
6 DEC DI
7 INC DI
8 CMP AL,[DI]
9 JNZ 10 (skocz jeśli zn=0 czyli liczby w al i [di] nie są sobie równe)
10 INC AH
11 LOOP 6
2. Co do mnożenia dwóch liczb (zad 2) :-)
XOR CX,CX
MOV CL,AL (przekazuje ilość powtórzeń pętli)
XOR BX,BX (zeruje bx (tak na wszelki wypadek))
MOV DL,AH (nie można przekazywać ani wykonywać operacji na rejestrach o różnej długości)
ADD BX,DX (dodaje do bx tyle razy ile wartość al (w treści ejst że wynik ma być zapisany w bx))
LOOP (na linie gdzie add)
3. Zadanie 3 (metodą sortowania bombelkowego)
Liczby po lewej to tylko tak żeby było łatwiej zrozumieć jc i loop
1 MOV AX,3450
2 MOV DS,AX
3 MOV DI,150
4 MOV CX,9
5 MOV DX,A
6 MOV AL,[DI]
7 INC DI
8 MOV AH,[DI]
9 CMP AL,AH (porównanie wartości AL i AH bez zmiany wartości (żeby sprawdzić które jest miniejsze a które większe) i zapalenie odpowiednich flag)
10 JC 15 (skocz jeśli cf=1)
11 MOV [DI],AL ( )
12 DEC DI ( Zamiana wartości komurek tabeli jeżeli to potrzebne )
13 MOV [DI],AH ( )
14 INC DI ( )
15 LOOP 6
16 DEC DX
17 MOV CX,DX
18 MOV DI,150
19 LOOP 6
Inne:
1.
100 MOV BX,3500
102 MOV DS,BX
104 MOV DI,0300
106 MOV CX,000A
108 XOR AH,AH
10A DEC DI
10C INC DI
10E CMP AL,[DI]
110 JNZ 0114
112 INC AH
114 LOOP 010C
2.
100 XOR BX,BX
102 MOV CX,0008
104 MOV DX,0001
106 DEC CX
108 SHL DL,CX
10A TEST DL,AL
10C JZ 0114
10E MOV DL,AH
110 SHL DX,CX
112 ADD BX,DX
114 INC CX
116 LOOP 0104
3. (bąbelkowo)
100 MOV AX,3450
102 MOV DS,AX
104 MOV DI,0150
106 XOR BL,BL
108 MOV CX,0009
10A MOV AH,[DI+CX]
10C MOV AL,[DI+CX-1]
10E CMP AH,AL
110 JNL 118
112 MOV [DI+CX],AL
114 MOV [DI+CX-1],AH
116 INC BL
118 LOOP 10A
11A TEST BL,0000
11C JNZ 106