@inquis1t0r: @wytrzzeszcz: a macie jakieś protipy jak obsłużyć operacje matematyczne na liczbach większych od 9? bo w przedziale pd 0-9 wszystko bzika, gorzej jak wyjdę poza przedział
z głowy to cie nie powiem ale powinieneś zrobić coś w stylu ustawiasz 4 lokacje pamięci ( znak a i b i stan) i w przerwaniu klawiatury piszesz tak jeśli stan==1 to obsługa a jeśli stan==2 to obsługa b jeśli stan==3 to obsługa znaku
obsługa a wygląda mniej więcej tak
weź wartość A z pamięci i #!$%@? do EAX jeśli al > "9" albo al <"0" to przejdz do kolejnego
@numeryczny_mikolaj12: zrobiłbym tak: 1. zm1 i zm2 są buforami na ciąg znaków, powinny zatem być odpowiednio dużymi tablicami. 2. po odczytaniu danych od użytkownika, przeleć się bo obydwu buforach i poodejmuj '0' od każdego elementu 3. w pętli dodawaj jeden bufor do drugiego. Tu się robi trochę problematycznie bo: 1. trzeba, dla wyników większych od 10 robić przeniesienie do kolejnej pary cyfr, 2. trzeba pamiętać, że liczby mogą być różnej długości.
Jak macie lekarzowi przynieść próbkę kału do badania laboratoryjnego to w czym się taką próbkę przynosi i ile tego gówna trzeba przynieść? I niby jak ja mam to wszystko ogarnąc, na rękę mam sobie nasrać i wsadzić to do pudełka?
#naukaprogramowania #assembler #asembler #programowanie
@numeryczny_mikolaj12: poka co napisałeś.
nie bij xD
global start
section .data
zm1 db 0
zm2 db 0
wynik db 0,10
section .text
start:
mov rax,3
mov rbx,0
mov rcx,zm1
mov rdx,2
int 80h
mov rax,3
mov rbx,0
mov rcx,zm2
mov rdx,2
int 80h
;konwersja
mov al,[zm1] ; al = *zm1
sub al,'0' ; al = (int)*zm1
mov [zm1],al ;*zm1 = al
mov al,[zm2] ; al = *zm1
sub al,'0' ; al = (int)*zm1
mov
z głowy to cie nie powiem ale powinieneś zrobić coś w stylu
ustawiasz 4 lokacje pamięci ( znak a i b i stan)
i w przerwaniu klawiatury piszesz tak
jeśli stan==1 to obsługa a
jeśli stan==2 to obsługa b
jeśli stan==3 to obsługa znaku
obsługa a wygląda mniej więcej tak
weź wartość A z pamięci i #!$%@? do EAX
jeśli al > "9" albo al <"0" to przejdz do kolejnego
to się nie uda do obliczeń użyj nie wiem ECX bo AL niszczy stan EAXa
możesz też użyć pętli zamiat maszyny stanów jesten czort w sumie
kumasz?
1. zm1 i zm2 są buforami na ciąg znaków, powinny zatem być odpowiednio dużymi tablicami.
2. po odczytaniu danych od użytkownika, przeleć się bo obydwu buforach i poodejmuj '0' od każdego elementu
3. w pętli dodawaj jeden bufor do drugiego. Tu się robi trochę problematycznie bo: 1. trzeba, dla wyników większych od 10 robić przeniesienie do kolejnej pary cyfr, 2. trzeba pamiętać, że liczby mogą być różnej długości.