Witajcie, dopiero zaczynam swoja przygodę z Asemblerem ☺ na studia muszę zrobić zadanie:
"Ćwiczenie 1 (skala ZAL/NZAL)
Niech wartość zmiennej a=11 będzie przechowywana w komórce o adresie 001AH, wartość zmiennej b=3 w komórce o
adresie 001BH, wartość zmiennej c w komórce o adresie 001CH.
Napisać w języku assemblera procesora 8080 oraz 8086 programy realizujące następujące operacje:
a:=a+1;b:=b-1; c=2*a-b;
(w przypadku procesora 8086 założyć adres bazowy segmentu 0002H).
"
Napisałem program w 8086, który właściwie to działa, ale nie rozumiem za bardzo o co chodzi z adresem segmentu bazowego. Też nie wiem czy mój program wygląda dobrze, więc byłbym wdzięczny też za jakieś podpowiedzi :)
org 100h
;a = 11 o adresie 001AH
MOV AL, 11
MOV BX, 001AH
MOV [BX], AL
;b=3 o adresie 001bh
MOV AL, 3
MOV BX, 001BH
MOV [BX], AL
;a:=a+1
MOV BX, 001AH
MOV AL, [BX]
INC AL
MOV [BX], AL
;b=b-1
MOV BX, 001BH
MOV AL, [BX]
DEC AL
MOV [BX], AL
;c = 2*a
MOV BX, 001AH
MOV AL, [BX]
ADD AL, [BX]
;c = c - b
MOV BX, 001BH
SUB AL, [BX]
MOV BX, 001CH
MOV [BX], AL
ret
Z góry dziękuję za każdą pomoc,
Pozdrawiam