Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

fragment kodu asemblera


eagl

Rekomendowane odpowiedzi

Opublikowano

Witam, poniżej kawałek kodu, proszę o pomoc w zrozumieniu co on robi, kod nie jest mój, staram się go tylko zrozumieć, pozdrawiam i z góry dzięki za odpowiedzi

 

 

 push AX
 push BX
 push CX
 push DX

 mov bh,00h		
 mov dh,00h	  
 mov dl,00h	  
 mov ah,02h	  
 int 10H

 mov bh,00h	  
 mov bl,07h	  
 mov cx,2000	
 mov al,' '  
 mov ah,09h	
 int 10H

 pop DX
 pop CX
 pop BX
 pop AX

Ret

Opublikowano

To fragment jakiejś procedury.

Najpierw wrzuca na stos rejestry na których operuje(te 4 PUSH'e)

Potem wywołuje przerwanie DOS ustawiające kolumnę w konsoli:

Set cursor position AH=02h BH = Page Number, DH = Row, DL = Column

Kolejno piszę tekst(w tym przypadku spację) przerwaniem dos:

Write character and attribute at cursor position AH=09h

AL = Character, BH = Page Number, BL = Color, CX = Number of times to print character

 

Następnie "zrzuca" ze stosu rejestry w odwrotnej kolejności i wychodzi z procedury(ret).

Ogólnie to polecam poczytać http://rudy.mif.pg.gda.pl/~bogdro/dos/index.php zanim się wejdzie w asm pod DOS'a(btw. bardzo ciekawy system...)

Cytat

 

Orientacja seksualna polega na tym, że jeden mężczyzna lubi blondynki, drugi szatynki, że jedna pani woli umięśnionych mężczyzn a inna chudych intelektualistów. Homoseksualizm nie jest orientacją jest chorobą za którą homoseksualiści nie ponoszą odpowiedzialności. Pewna grupa ludzi rodzi się upośledzona fizycznie, na przykład bez ręki ale czy to znaczy, że wszystkim zdrowym powinniśmy też obcinać ręce? Nie, powinniśmy zapewnić im protezy. Obowiązkiem państwa jest zapewnienie homoseksualistom, jak wszystkim upośledzonym fizycznie czy psychicznie profesjonalnej opieki medycznej.

Opublikowano

dzięki wielkie na prawdę mi bardzo pomogłeś, mam kolejne pytanie, mianowicie

 

ponizej moja tablica

Tablica 	   db '   0 1 2 3   '
			   db '  ÚÄÂÄÂÄÂÄż  '
			   db ' 0ł ł ł ł ł  '
			   db '  ĂÄĹÄĹÄĹÄ´  '
			   db ' 1ł ł ł ł ł  '
			   db '  ĂÄĹÄĹÄĹÄ´  '
			   db ' 2ł ł ł ł ł  '
			   db '  ĂÄĹÄĹÄĹÄ´  '
			   db ' 3ł ł ł ł ł  '
			   db '  ŔÄÁÄÁÄÁÄŮ  '

 

we wczesniejszej procedurze ktora czyscila ekran, użyłem funkcji

 

  mov cx,2000

 

w kolejnej procedurze, ktora odpowiada za wyswietlanie mojej tablicy na ekranie, znajduje się fragment kodu:

 

 mov cx,1

 

a nastepnie, juz odpowiednio w petli

 

 mov ah,02h	  
 int BIOSSERVICE

 mov al,Tablica[sI];

 mov ah,09h	  
 int BIOSSERVICE

 

kod jest jasny ale, nie wiem jak zachowuje sie tablica w tym momencie gdy sie do niej odwoluje kolejno z indeksem który zwiekszam w petli.

wiem ze ten sposob w jaki zdefiniowałem tablice, to jest ona traktowana jako ciag znakow jednej zmiennej, normalnie gdy odwołujemy się do tablicy to ustawiamy coś

w rodzaju ofsetu, mówmy od którego miejsca tablica ma być czytana, ale tutaj coś mi nie gra, bo tablica jest wypisywana, mysle ze ponizszy kod cos tu miesza

 

mov cx,1

Opublikowano

pokaż trochę więcej bo z twojego opisu nie jestem pewien czy dobrze rozumiem twój problem

Cytat

 

Orientacja seksualna polega na tym, że jeden mężczyzna lubi blondynki, drugi szatynki, że jedna pani woli umięśnionych mężczyzn a inna chudych intelektualistów. Homoseksualizm nie jest orientacją jest chorobą za którą homoseksualiści nie ponoszą odpowiedzialności. Pewna grupa ludzi rodzi się upośledzona fizycznie, na przykład bez ręki ale czy to znaczy, że wszystkim zdrowym powinniśmy też obcinać ręce? Nie, powinniśmy zapewnić im protezy. Obowiązkiem państwa jest zapewnienie homoseksualistom, jak wszystkim upośledzonym fizycznie czy psychicznie profesjonalnej opieki medycznej.

Opublikowano

dzięki wielkie że poświecasz swój cenny czas dla mnie, ale powyższy problem już rozwiązałem, doczytałem w książce, poniżej mam już ostatni problem, mianowicie nie za bardzo rozumiem tą procedurę :/ może dla ciebie jest ona bardziej jasna

 

 push bp
 mov bp,sp  
 push ax
 push bx
 push cx
 push dx
 push si

 mov dx,[bp+4]
 mov cx,1  
 mov bh,00h 
 mov bl,07h

 mov ah,02h	  
 int BIOSSERVICE
 mov si, 0
 mov bx,[bp+6]
 mov al,[bX][sI]
 mov ah, 0
 mov cl, 10
 div cl
 mov si, dx
 mov dh, ah
 add al, 48		
 mov bh,00h
 mov bl,07h
 mov cx, 1

 mov ah,09h	  
 int BIOSSERVICE  
 mov al, dh
 add al, 48	   
 mov dx, si
 inc dl

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...