Ĺadny brzuch
Czy po odłożeniu wartości rejestru na stos komendą push jest ona (wartość) nadal przechowywana w tym rejestrze (oraz na stosie), czy tylko na stosie (a rejestr jest pusty)?
Nic się nie usuwa/czyści :)
No to jeszcze jedno, zamierzam zrobic pętelkę:
mov bx,????????????
petla:
mov cx,ds:[bx]
cmp cx,'$'
JE RET
inc bx
RET
Pytanie: od jakiej wartości zaczyna się tablica (od '0' czy od '1')? A więc ile ma na początku wynieść bx?
Dziwna ta pętla, co ona ma robić? Skoro masz mov cx,ds:[bx], to BX jest wskaźnikiem do danych, więc jak mam znaleźć jego wartość? :mellow:
No tak, a więc mam podać dwie liczb 2-bajtowe. Chodzi mi o procedurę 'wylicz'. Ma ona za zadanie pobieranie kolejnego znaku z tabeli (zaczynając od pierwszego) 'tab' do napotkania znaku '$'. Od każdego należy odjąć 48 (aby uzyskać wartość cyfry z podanego kodu ASCII), a następnie przemnożyć pierwszy przez 1, drugi przez 10, trzeci przez 100, a czwarty przez 1000 i zsumować je. I muszę m.in. wiedzieć jaki indeks ma pierwszy element z tabeli 'tab'.
.286 .model small .stack 200h .data tab db 6 DUP (?) tab2 db 6 DUP (?) wynik db 6 DUP (?) napis db 'Wpisz liczbe (4 cyfry)',13,10,'$' napis2 db 'wpisz druga liczbe',13,10,'$' .code start: mov ax,@data mov ds,ax mov bx,offset tab ;Czyli najpierw tablica 1 dla pierwszej liczby mov dx,offset napis ;NAPIS call liczba call wylicz mov dx,offset napis2 ;NAPIS mov bx,offset tab2 ;tablica dla drugiej liczby call liczba call wylicz
...
;############### PROCEDURA ################; liczba PROC mov ah,09h int 21h mov dx,0 petla: ;PODAWANIE CYFR DO NACISNIECIA KLAWISZA EnTeR mov ah,1 int 21h cmp al,13 je DALEJ mov ds:[bx],al INC bx JMP petla DALEJ: mov al,'$' ;Dodaje znak dolara na koniec ciagu mov ds:[bx],al RET endp wylicz PROC ;??????????????????????????????????????????????????????????????????; RET endp ;########## KONIEC PROCEDURY #############;
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Nic się nie usuwa/czyści :)
No to jeszcze jedno, zamierzam zrobic pętelkę:
mov bx,????????????
petla:
mov cx,ds:[bx]
cmp cx,'$'
JE RET
inc bx
RET
Pytanie: od jakiej wartości zaczyna się tablica (od '0' czy od '1')? A więc ile ma na początku wynieść bx?
Dziwna ta pętla, co ona ma robić? Skoro masz mov cx,ds:[bx], to BX jest wskaźnikiem do danych, więc jak mam znaleźć jego wartość? :mellow:
No tak, a więc mam podać dwie liczb 2-bajtowe. Chodzi mi o procedurę 'wylicz'. Ma ona za zadanie pobieranie kolejnego znaku z tabeli (zaczynając od pierwszego) 'tab' do napotkania znaku '$'. Od każdego należy odjąć 48 (aby uzyskać wartość cyfry z podanego kodu ASCII), a następnie przemnożyć pierwszy przez 1, drugi przez 10, trzeci przez 100, a czwarty przez 1000 i zsumować je. I muszę m.in. wiedzieć jaki indeks ma pierwszy element z tabeli 'tab'.
.286 .model small .stack 200h .data tab db 6 DUP (?) tab2 db 6 DUP (?) wynik db 6 DUP (?) napis db 'Wpisz liczbe (4 cyfry)',13,10,'$' napis2 db 'wpisz druga liczbe',13,10,'$' .code start: mov ax,@data mov ds,ax mov bx,offset tab ;Czyli najpierw tablica 1 dla pierwszej liczby mov dx,offset napis ;NAPIS call liczba call wylicz mov dx,offset napis2 ;NAPIS mov bx,offset tab2 ;tablica dla drugiej liczby call liczba call wylicz
...
;############### PROCEDURA ################; liczba PROC mov ah,09h int 21h mov dx,0 petla: ;PODAWANIE CYFR DO NACISNIECIA KLAWISZA EnTeR mov ah,1 int 21h cmp al,13 je DALEJ mov ds:[bx],al INC bx JMP petla DALEJ: mov al,'$' ;Dodaje znak dolara na koniec ciagu mov ds:[bx],al RET endp wylicz PROC ;??????????????????????????????????????????????????????????????????; RET endp ;########## KONIEC PROCEDURY #############;