Article View: pl.comp.lang.asm
Article #2285Re: Tablica
From: Kicer
Date: Thu, 08 Jul 2010 19:43
Date: Thu, 08 Jul 2010 19:43
136 lines
3778 bytes
3778 bytes
przemo12146 wrote: > Witam wszystkich, > o to mój przerobiony kod: > > > format binary > > org 100h > > poczatek: > > mov word bx,[tablica+0] > mov bx,wi > > mov word bx,[tablica+2] > mov bx,ta > > mov word bx,[tablica+4] > mov bx,is > > mov word bx,[tablica+6] > mov bx,sw > > mov word bx,[tablica+8] > mov bx,ie > > mov word bx,[tablica+10] > mov bx,ci > > mov word bx,[tablica+12] > mov bx,ew > > mov word bx,[tablica+14] > mov bx,sd > > mov dx,tablica > mov ah,09h > int 21h > > mov ah,0h > int 16h > > mov ax,4C00h > int 21h > > tablica: times 16 db 255 > wi db 'Wi' > ta db 'ta' > is db 'j',20h > sw db 'sw' > ie db 'ie' > ci db 'ci' > ew db 'e!' > sd db 20h,'$' > > > teraz już wszystko dział a zmienne znajdują się w tablicy, sprawdzałem > w debuggerze powyższy kod dziala tak: do rejestru bx wkłada 2 bajty spod adresu tablica+0 później wkłada znowu do bx i tu zalezy od kompilatora albo adres zmiennej wi albo jej wartość innymi słowy nadpisujesz poprzednią wartość bx i tak dalej, kazda linijka wpisuje nową wartość do rejestru bx, czyli po optymalizacji Twój kod wyglada tak: mov bx,sd ;/zostaje tylko ostatni wpis do bx mov dx,tablica mov ah,09h int 21h mov ah,0h int 16h mov ax,4C00h int 21h tablica: times 16 db 255 wi db 'Wi' ta db 'ta' is db 'j',20h sw db 'sw' ie db 'ie' ci db 'ci' ew db 'e!' sd db 20h,'$' jeśli to Ci cos wyswietla to pewnie tylko dlatego że dos pomija znaki których wartosc do 255 i przechodzi do wysweitlania tego co lezy dalej w pamieci a jest tam Twój tekst. Tylko też dziwnie bo dwie litery to dwa bajty a Ty uzywasz db, chyba ze kompilator którego używasz traktuje np zmienną wi jako poskładaną z pojedynczych bajtów a ile ich jest to juz nie wazne. > > 1.Ile bajtów zmieści się pod pozycją np: [tablica+0] ?, dokładniej > chodzi mi o to, że w zmiennej "wi" są teraz 2 bajty ale równie dobrze > mogę wpisać tam 16 bajtów a napis i tak zostanie wyświetlony, tylko > tyle, że nie będą one znajdować się w tablicy. Jeśli chciałbym żeby > dodatkowe zmienne znajdowały się w tablicy musiałbym powiększyć ją o > 16 i odpowiednio przypisać miejsca tak jak uprzednio. tu patrz moja uwaga wyżej generalnie jest tak że zmienna to nic innego jak adres w pamieci. pod jednym adresem jest 1 bajt. To co rozumiesz jako upchanie pod 1 adres tak naprawde oznacza wpisanie 1. bajtu pod ten adres, 2. pod następny itd > > 2.Czy to znaczy, że mogę do zmiennej "wi" przypisać aż 65536 bajtów > czyli tyle ile ma rejestr bx? bx ma 16 bitów - 2 bajty > > 3.Po ile tranzystorów mają rejestry (np:eax,ebx...) ? nie wiem po co CI to ale zobacz tu: http://en.wikipedia.org/wiki/Flip-flop_%28electronics%29 1. przerzutnik D to jeden bit pozdrawiam -- Michał Walenciak Kicer86 at gmail dot com http://kicer.sileman.net.pl gg: 3729519
Technical Details
Message-ID:
<i159pq$30g$1@inews.gazeta.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailReferences:
<acaaee6e-5908-471b-a309-b7146d718425@b35g2000yqi.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail From: Kicer <a@B.c> Newsgroups: pl.comp.lang.asm Subject: Re: Tablica Followup-To: pl.comp.lang.asm Date: Thu, 08 Jul 2010 21:43:52 +0200 Organization: "Portal Gazeta.pl -> http://www.gazeta.pl" Lines: 136 Message-ID: <i159pq$30g$1@inews.gazeta.pl> References: <acaaee6e-5908-471b-a309-b7146d718425@b35g2000yqi.googlegroups.com> NNTP-Posting-Host: host-5db0eeee.sileman.net.pl Mime-Version: 1.0 X-Trace: inews.gazeta.pl 1278618234 3088 93.176.238.238 (8 Jul 2010 19:43:54 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Thu, 8 Jul 2010 19:43:54 +0000 (UTC) X-User: spaz86 User-Agent: KNode/4.4.3 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit