Filar Społeczności Chell Opublikowano 15 Kwietnia 2017 Filar Społeczności Udostępnij Opublikowano 15 Kwietnia 2017 kod z poprzedniego tematu teraz wyglada tak: format binary use16 org 0x100 jmp start string1 db "string numer jeden$" bok: push cx mov cx, 1 mov ah, 0x02;pos add dh, 1 int 0x10 mov ah, 0x09;write int 0x10 pop cx ret macro print xx,yy,len,str: {mov dh, xx mov dl, yy call pprint1 mov cx, len call pprint2} pprint1: mov ah, 0x02 int 0x10 ret pprint2: mov ah, 0x09 mov si, cx sub si, 1 petla: mov al, [string1+si] int 0x10 sub si, 1 loop petla ret start: mov al, 0x02;80x25 text int 0x10 mov ah, 0x09;write character and attribute at cursor position ;pasek tytulowy i menu mov bl, 0x40;col mov al, 0x00;char mov cx, 160;ile int 0x10 mov ah, 0x02 mov dh, 0 mov dl, 0 int 0x10 print 0,31,18 mov ah, 0x02 ;bg mov dh, 2 mov dl, 0 int 0x10 mov ah, 0x09 mov bl, 0x70 mov al, 0x00 mov cx, 1760 int 0x10 mov bl, 0x74 ;dolny pasek mov ah, 2 mov dh, 24 int 0x10 mov ah, 0x09 mov al, 0xDC mov cx, 80 int 0x10 mov bl, 0x40 ;lewy i prawy pasek mov ah, 2 mov dh, 1 int 0x10 mov al, 0x00 mov cx, 23 lewy: call bok loop lewy mov ah, 2 mov dh, 1 mov dl, 79 int 0x10 mov cx, 23 prawy: call bok loop prawy mov ah, 2 mov dh, 0 mov dl, 0 int 0x10 mov ax, 0x4c00 int 0x21 po wywolaniu makra print juz nic nas nie obchodzi, tylko rysuje sobie okienko. doszedłem do wniosku że przekazywanie argumentów przez makro jest 100x wygodniejsze, więc chwilowo na tym stanęło. pytanie tylko - jak w ten sposób przekazać dowolny string w miejsce string1? kombinowałem movem, kombinowałem lea, ale wszystko chce operować na obu bajtach rejestru. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 15 Kwietnia 2017 Udostępnij Opublikowano 15 Kwietnia 2017 format binary use16 org 0x100 jmp start string1 db "string numer jeden$" bok: push cx mov cx, 1 mov ah, 0x02;pos add dh, 1 int 0x10 mov ah, 0x09;write int 0x10 pop cx ret macro print xx,yy,len,str: {mov dh, xx mov dl, yy call pprint1 mov cx, len mov bp, str call pprint2} pprint1: mov ah, 0x02 int 0x10 ret pprint2: mov ah, 0x09 mov si, cx sub si, 1 petla: mov al, [bp+si] int 0x10 sub si, 1 loop petla ret start: mov al, 0x02;80x25 text int 0x10 mov ah, 0x09;write character and attribute at cursor position ;pasek tytulowy i menu mov bl, 0x40;col mov al, 0x00;char mov cx, 160;ile int 0x10 mov ah, 0x02 mov dh, 0 mov dl, 0 int 0x10 print 0,31,18,string1 mov ah, 0x02 ;bg mov dh, 2 mov dl, 0 int 0x10 mov ah, 0x09 mov bl, 0x70 mov al, 0x00 mov cx, 1760 int 0x10 mov bl, 0x74 ;dolny pasek mov ah, 2 mov dh, 24 int 0x10 mov ah, 0x09 mov al, 0xDC mov cx, 80 int 0x10 mov bl, 0x40 ;lewy i prawy pasek mov ah, 2 mov dh, 1 int 0x10 mov al, 0x00 mov cx, 23 lewy: call bok loop lewy mov ah, 2 mov dh, 1 mov dl, 79 int 0x10 mov cx, 23 prawy: call bok loop prawy mov ah, 2 mov dh, 0 mov dl, 0 int 0x10 mov ax, 0x4c00 int 0x21 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Chell Opublikowano 15 Kwietnia 2017 Autor Filar Społeczności Udostępnij Opublikowano 15 Kwietnia 2017 perfekt, dziękuję Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się