- Wczytaj cyfrę (pojedynczy znak ASCII)
xor bx,bx
mov ah,0
int 16h - Odejmij od cyfry '0' by z ASCII przejść do cyfry.
sub ax,'0'
push ax - Przemnóż miejsce gdzie już jest liczba razy 10
mov ax,10
mul bx
mov bx,ax
pop ax - Dodaj do miejsca gdzie jest już liczba kolejną cyfre.
add bx,ax
Liczba jest zapisywana bo rejestru bx. Całość możemy nazwać np jako readDEC i puścić w loop 4-5 razy jeśli chcemy wczytać liczbę 16 bitową. Przy 5 obrocie pętli jc (jesli flaga carry) wyrzucamy błąd ponieważ własnie przekroczyliśmy 16 bitów w naszej zmiennej i funkcja nie wykonała się poprawnie.
Wczytywanie liczby HEX szesnastkowej w asemblerze. (dokładnie 4 znaki, każdy po 4 bity)
Wczytywanie liczby HEX szesnastkowej w asemblerze. (dokładnie 4 znaki, każdy po 4 bity)
- Wczytaj cyfrę.
mov cx,4
xor bx,bx
wczytaj:
mov ah,0
int 16h - Dozwól by były to cyfry i litery tylko 0-9, A-F
cmp al,'0'
jb wczytaj
cmp al,'9'
jbe dalej9
cmp al,'A'
jb wczytaj;
cmp al,'F'
jbe dalejF; - Z ASCI do Cyfry lub Litery
dalej9:
sub al,'0'
dalejF:
sub al,'F' - Przekręć miejsce gdzie są już liczby SHL o 4 bity w lewo i dodaj nowa cyfrę.
shl bx,4
add bx,ax
loop wczytaj; zakręć wszystkim 4 razy
Brak komentarzy:
Prześlij komentarz