Thread View: pl.comp.lang.asm
7 messages
7 total messages
Started by przemo12146
Wed, 16 Jun 2010 11:38
Tablica
Author: przemo12146
Date: Wed, 16 Jun 2010 11:38
Date: Wed, 16 Jun 2010 11:38
67 lines
1626 bytes
1626 bytes
Cze¶æ, Jestem pocz±tkuj±cy mam kilka pytañ do mojego kodu: format binary org 100h poczatek: mov bx,tablica mov ax,a mov cx,b mov [bx+5],ax mov [bx+7],cx mov dx,[bx+5] mov ah,9h int 21h mov dx,[bx+7] mov ah,9h int 21h mov ah,0h int 16h mov ax,4C00h int 21h tablica: times 10 db 0 a db 1100001b,'$' b db 10000001b,'$ 1.Dlaczego jak wpisuje do rejestru bx+1 lub bx+2 a¿ do bx+4 zmienn± a lub b pokazuje mi ¶mieci zamiast tego co pod ni± siê znajduje, zacz±æ mogê dopiero od bx+5 tak jak wy¿ej ? 2.Dlaczego pomiêdzy wpisywaniem zmiennych do tablicy pod adresy bx+5 czy tez bx+7 itp. musz± byæ od siebie w odstepie 2 bo inaczej zamiast zmiennych na pulpicie widzie ¶mieci ? 3.Litera 'a' w kodzie ascii ma warto¶æ szesnastkowo 61 binarnie 1100001 czyli jest 7 bitowa pomijaj±c uzupelnienie liczby do 8 bitów dlaczego znajduje sie w odleg³o¶ci 2 bajtów w tablicy skoro tablica jest zainicjonowana na 10 bajtów rownych 0 ? 4.Wpisuj±c do tablicy np: 255 bajtowej, zmienn± sk³adaj±c± sie z 8 bitów chc±c j± wpisaæ pod 10 bajt u¿yjemy operacji np: [bx+9] gdzie do rejestru bx zostala przypisana tablica ale czy mo¿na zapisaæ to w sposób [bx-245] przecie¿ zadeklarowana tablica to etykieta obliczana przez linker wraz z zadeklarowan± przestrzeni± czyli wpisuj±c jak±¶ zmienn± pod x przestrzeñ to np: [tablica] jest pocz±tkiem czy koñcem czyli bajtem 0 czy 255 ? 5.W jaki inny sposób mogê przedstawiæ sumê elementów znajduj±cych siê w tablicach? Gdybym popelni³ gape prosze o wyrozumia³o¶æ.
Re: Tablica
Author: przemo12146
Date: Thu, 17 Jun 2010 03:15
Date: Thu, 17 Jun 2010 03:15
6 lines
174 bytes
174 bytes
Dziêkuje za odpowied¼. Co do kompilatora u¿ywam starej wersji MASM'a. Mo¿e znasz jakie¶ dobre ksi±zki dla pocz±tkuj±cych co do programowania w asemblerze?
Re: Tablica
Author: przemo12146
Date: Thu, 17 Jun 2010 10:07
Date: Thu, 17 Jun 2010 10:07
2 lines
54 bytes
54 bytes
Jeszcze raz dziêkuje chêtnie skorzystam z kursu.
Re: Tablica
Author: Michoo
Date: Thu, 17 Jun 2010 11:05
Date: Thu, 17 Jun 2010 11:05
57 lines
2508 bytes
2508 bytes
przemo12146 pisze: > Cze��, > Jestem pocz�tkuj�cy mam kilka pyta� do mojego kodu: Co to jest - TASM, czy jaki� inny staro�? > > 1.Dlaczego jak wpisuje do rejestru bx+1 lub bx+2 a� do bx+4 zmienn� a > lub b pokazuje mi �mieci zamiast tego co pod ni� si� znajduje, zacz�� > mog� dopiero od bx+5 tak jak wy�ej ? Nie mia�em kontaktu z asm pod dosem dobre 5 lat, ale stara �ci�ga m�wi, �e to, �e to dzia�a to jaki� cud - u�ywasz 09h, kt�re wypisuje string, a �adujesz do rejestru dx znak, a nie wska�nik (jakby� chcia� u�y� 02h) > > 2.Dlaczego pomi�dzy wpisywaniem zmiennych do tablicy pod adresy bx+5 > czy tez bx+7 itp. musz� by� od siebie w odstepie 2 bo inaczej zamiast > zmiennych na pulpicie widzie �mieci ? ax, bx maj� rozmiar s�owa, bajt ma rozmiar bajtu > > 3.Litera 'a' w kodzie ascii ma warto�� szesnastkowo 61 binarnie > 1100001 czyli jest 7 bitowa pomijaj�c uzupelnienie liczby do 8 bit�w > dlaczego znajduje sie w odleg�o�ci 2 bajt�w w tablicy skoro tablica > jest zainicjonowana na 10 bajt�w rownych 0 ? Co masz na my�li? > > 4.Wpisuj�c do tablicy np: 255 bajtowej, zmienn� sk�adaj�c� sie z 8 > bit�w chc�c j� wpisa� pod 10 bajt u�yjemy operacji np: [bx+9] gdzie do > rejestru bx zostala przypisana tablica ale czy mo�na zapisa� to w > spos�b [bx-245] przecie� zadeklarowana tablica to etykieta obliczana > przez linker Z C ci si� pomiesza�o - linker policzy [tablica+10], a nie [bx+10], bo nie zajmuje si� zgadywaniem co b�dzie w bx. Poza tym sk�d pomys�, �e rejestr bx jest 8 bitowy? > wraz z zadeklarowan� przestrzeni� czyli wpisuj�c jak�� zmienn� pod x > przestrze� to np: [tablica] jest pocz�tkiem czy ko�cem czyli bajtem 0 > czy 255 ? Jak si� chcesz odwo�a� do 3 pola 8 bajtowej tablicy to znacznie �atwiej jest napisa� [tablica-6] ni� [tablica+2], wi�c odpowied� jest oczywista - ko�cem. > > 5.W jaki inny spos�b mog� przedstawi� sum� element�w znajduj�cych si� > w tablicach? Najlepiej u�y� masm'a i przedstawia� w LISTBOX/EDIT jako kolejne linijki, albo w zestawie p�l STATIC. > > Gdybym popelni� gape prosze o wyrozumia�o��. Wyrozumia�o�� wyrozumia�o�ci�, ale ty prawie nic nie wiesz. Zacznij od kursu assemblera a potem bierz si� za pisanie program�w - odwrotna kolejno�� jest d�uga, trudna, bolesna i frustruj�ca. -- Pozdrawiam Michoo
Re: Tablica
Author: "Bogdan (bogdro)
Date: Thu, 17 Jun 2010 18:19
Date: Thu, 17 Jun 2010 18:19
125 lines
4505 bytes
4505 bytes
W dniu 16.06.2010 20:38, przemo12146 pisze: > Cze��, > Jestem pocz�tkuj�cy mam kilka pyta� do mojego kodu: > > format binary > > org 100h > > poczatek: > > mov bx,tablica > mov ax,a > mov cx,b > > mov [bx+5],ax > mov [bx+7],cx > > mov dx,[bx+5] > mov ah,9h > int 21h To tak nie podzia�a. W DX musisz mie� adres zmiennej, kt�r� chcesz wy�wietli�, a nie warto�� tej zmiennej. Najch�tniej by si� napisa�o: mov dx, bx+5 ale tak si� nie da. Spr�buj mov dx, bx ; DX = BX add dx, 5 ; DX = BX + 5 (reszta dobrze - bez zmian). > mov dx,[bx+7] > mov ah,9h > int 21h Jak wy�ej. > mov ah,0h > int 16h > > mov ax,4C00h > int 21h > > tablica: times 10 db 0 > a db 1100001b,'$' > b db 10000001b,'$ > > 1.Dlaczego jak wpisuje do rejestru bx+1 lub bx+2 a� do bx+4 zmienn� a > lub b pokazuje mi �mieci zamiast tego co pod ni� si� znajduje, zacz�� > mog� dopiero od bx+5 tak jak wy�ej ? Prawdopodobnie dlatego, �e wpisywa�e� warto�� zmiennej, a nie jej adres. Wpisywa�e� do DX adres 2461h (dolar w starszym bajcie, warto�� zmiennej 'a' w m�odszym) lub 2481h (w drugim przypadku). Swoj� drog�, znak w zmiennej 'b' mo�e nie by� drukowalny (wi�c i tak dostaniesz �mieci). > 2.Dlaczego pomi�dzy wpisywaniem zmiennych do tablicy pod adresy bx+5 > czy tez bx+7 itp. musz� by� od siebie w odstepie 2 bo inaczej zamiast > zmiennych na pulpicie widzie �mieci ? By� mo�e ma to zwi�zek z problemem BX+5 vs. [BX+5]. Ale pami�taj te�, �e zapisujesz ca�e s�owo (2 bajty) - warto�� zmiennej 'a' lub 'b' plus nast�puj�cy po nich znak dolara, aby zako�czy� napis dla DOSa. Praktyka jak najbardziej s�uszna, ale st�d w�a�nie bierze si� odleg�o�� 2 bajt�w, je�li nie chcesz zamazywa� tego, co ju� jest. > 3.Litera 'a' w kodzie ascii ma warto�� szesnastkowo 61 binarnie > 1100001 czyli jest 7 bitowa pomijaj�c uzupelnienie liczby do 8 bit�w > dlaczego znajduje sie w odleg�o�ci 2 bajt�w w tablicy skoro tablica > jest zainicjonowana na 10 bajt�w rownych 0 ? Sk�d wiesz, �e w odleg�o�ci 2 bajt�w? Mo�e j� tam wpisa�e�, a teraz pokaza�e� inny kod? Mo�e wy�wietlasz co innego, ni� my�lisz, np. wy�wietlasz nie od pocz�tku tablicy, a od �rodka? Mo�e wy�wietlasz ca�� tablic�, bajty zerowe si� po prostu nie wy�wietlaj�, co powoduje b��dn� interpretacj� wy�wietlanego wyniku? Przedstawiony kod nie �wiadczy o tym, co m�wisz. > 4.Wpisuj�c do tablicy np: 255 bajtowej, zmienn� sk�adaj�c� sie z 8 > bit�w chc�c j� wpisa� pod 10 bajt u�yjemy operacji np: [bx+9] gdzie do > rejestru bx zostala przypisana tablica ale czy mo�na zapisa� to w > spos�b [bx-245] Wed�ug mnie nie mo�na. Offsety w adresacji nie zawin� si� tak, jak trzeba. Sp�jrz na ten wynik disasemblacji: <adres> <kod instrukcji> <instrukcja> 00000000 8A870BFF mov al,[bx-0xf5] 00000004 8A870AFF mov al,[bx-0xf6] 00000008 8A87F500 mov al,[bx+0xf5] 0000000C 8A87F600 mov al,[bx+0xf6] Jak wida�, offset zrobi� si� 16-bitowy (4 ostatnie znaki/2 ostatnie bajty kodu instrukcji). U�ywaj�c ujemnych warto�ci, naprawd� cofasz si� przed tablic� w pami�ci (czego zazwyczaj si� nie robi). > przecie� zadeklarowana tablica to etykieta obliczana > przez linker > wraz z zadeklarowan� przestrzeni� czyli wpisuj�c jak�� zmienn� pod x > przestrze� to np: [tablica] jest pocz�tkiem czy ko�cem czyli bajtem 0 > czy 255 ? Jest pocz�tkiem, tak samo jak r�wnowa�ny zapis [tablica+0]. > 5.W jaki inny spos�b mog� przedstawi� sum� element�w znajduj�cych si� > w tablicach? Zaw� troch� pytanie. Mo�esz dodawa� do siebie elementy dw�ch tablic i wynik wy�wietla� na ekranie. Mo�esz, jak kolega zasugerowa�, wy�wietli� wynik w okienku win32. Mo�esz zwr�ci� jako kod wyj�cia z programu (ERRORLEVEL). Pytasz o ksi��ki? Spr�buj z moim kursikiem na http://rudy.mif.pg.gda.pl/~bogdro/. Jak Ci si� nie spodoba, mam troch� link�w na http://rudy.mif.pg.gda.pl/~bogdro/linki.htm. -- Pozdrawiam/Regards - Bogdan (GNU/Linux & FreeDOS) Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro Grupy dyskusyjne o asm: pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32 www.JabberPL.org www.TorProject.org Soft (EN): miniurl.pl/bogdro-soft
Re: Tablica
Author: Bernard
Date: Fri, 18 Jun 2010 17:23
Date: Fri, 18 Jun 2010 17:23
58 lines
1208 bytes
1208 bytes
On 2010-06-16 20:38, przemo12146 wrote: > Cze��, > Jestem pocz�tkuj�cy mam kilka pyta� do mojego kodu: > > format binary > > org 100h > > poczatek: > > mov bx,tablica - �adujesz dwa bajty spod adresu tablica do bx, a potem u�ywasz ich jako adresu > mov ax,a > mov cx,b > > mov [bx+5],ax > mov [bx+7],cx > > mov dx,[bx+5] Tym razem do dx za�adowa�e� dawniejsz� warto�� zmiennej a na szcz�cie jeden b��d maskuje drugi i to zadzia�a tak, jak chcia�e�. > mov ah,9h > int 21h > > mov dx,[bx+7] A teraz zmiennej b - jak wy�ej. > mov ah,9h > int 21h > > mov ah,0h > int 16h > > mov ax,4C00h > int 21h > > tablica: times 10 db 0 > a db 1100001b,'$' > b db 10000001b,'$ > > 1.Dlaczego jak wpisuje do rejestru bx+1 lub bx+2 a� do bx+4 zmienn� a > lub b pokazuje mi �mieci zamiast tego co pod ni� si� znajduje, zacz�� > mog� dopiero od bx+5 tak jak wy�ej ? > > 2.Dlaczego pomi�dzy wpisywaniem zmiennych do tablicy pod adresy bx+5 > czy tez bx+7 itp. musz� by� od siebie w odstepie 2 bo inaczej zamiast > zmiennych na pulpicie widzie �mieci ? Bo Twoje zmienne maj� po 2 bajty (w ka�dym razie jako 2-bajtowe �adujesz je do rejestr�w)
Re: Tablica
Author: "identifikator:
Date: Sun, 20 Jun 2010 20:29
Date: Sun, 20 Jun 2010 20:29
9 lines
328 bytes
328 bytes
Dzi�kuje za odpowied�. Co do kompilatora u�ywam starej wersji MASM'a. Mo�e znasz jakie� dobre ksi�zki dla pocz�tkuj�cych co do programowania w asemblerze? Vlad Pirogow Asembler Podr�cznik Programisty - hardkor, normalnie jak Kto� nie �wika� standard�w w DOSie to si� zam�czy t� pozycj�...
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads