IPB

Witaj Gościu ( Zaloguj | Rejestruj )

 
Reply to this topicStart new topic
[ASM] load effective address, albo coś innego
Chell
post 15.04.2017 - 20:37
Post #1


Mały samoprzylepny lemur
********

Wiek: 18 lat
Grupa: Użytkownicy
Postów: 1,323
Dołączył: 18.05.2011
Skąd: Kostrzyn / Poznań
Team: Yes

4tk

Uploader
Ostrzeżenia:
(0%) -----


kod z poprzedniego tematu teraz wyglada tak:
KOD
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.


--------------------

JEŚLI WIDZISZ GRĘ TO WIEDZ ŻE TRWAŁA ONA DUŻO CZASU!!
Go to the top of the page
 
+Quote Post
post 15.04.2017 - 20:37
Post #





Wiek:



Uploader


Pani kontekstowa pokazuje swe wdzięki tylko w Valhalli lub wszędzie jeżeli nie jesteś zalogowany(a)! :3
Go to the top of the page
 
Quote Post
ediepl
post 15.04.2017 - 22:38
Post #2


Master of Forums
*********

Wiek: 21 lat
Grupa: Użytkownicy
Postów: 1,635
Dołączył: 21.01.2011
Skąd: Swarzędz

ediepl


Nagrody:
Najlepszy Silnik (CA 2012)

Uploader
Ostrzeżenia:
(0%) -----


KOD
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
Go to the top of the page
 
+Quote Post
Chell
post 15.04.2017 - 23:02
Post #3


Mały samoprzylepny lemur
********

Wiek: 18 lat
Grupa: Użytkownicy
Postów: 1,323
Dołączył: 18.05.2011
Skąd: Kostrzyn / Poznań
Team: Yes

4tk

Uploader
Ostrzeżenia:
(0%) -----


perfekt, dziękuję


--------------------

JEŚLI WIDZISZ GRĘ TO WIEDZ ŻE TRWAŁA ONA DUŻO CZASU!!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 użytkownik(ów) przegląda ten temat (1 gości i 0 anonimowych użytkowników)
0 Użytkownicy:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2017 - 13:36