🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #2296

Re: Tablica

#2296
From: przemo12146
Date: Sun, 11 Jul 2010 15:18
182 lines
6547 bytes
Po kompilacji kodu:

format binary

org 100h

poczatek:

mov bx,[wi]
mov word [tablica+0],bx

mov bx,[ta]
mov word [tablica+2],bx

mov bx,[is]
mov word [tablica+4],bx

mov bx,[sw]
mov word [tablica+6],bx

mov bx,[ie]
mov word [tablica+8],bx

mov bx,[ci]
mov word bx,[tablica+10]

mov bx,[ew]
mov word bx,[tablica+12]

mov bx,[sd]
mov word [tablica+14],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 dw 'Wi'
ta dw 'ta'
is dw 'j',20h
sw dw 'sw'
ie dw 'ie'
ci dw 'ci'
ew dw 'e!'
sd dw 20h,'$'

oraz po różnych jego modyfikacjach doradzonych przez "Bogdana" i
"Kicera" jak i moich
chcąc się upewnić że zmienne znajdują się w tablicy zdisasemblowałem
"program"
debuggerem "IDA Pro 4.9 Freeware" a oto wynik jego działania:


seg000:0100 ; Format      : MS-DOS COM-file
seg000:0100 ; Base Address: 1000h Range: 10100h-10174h Loaded length:
74h
seg000:0100
seg000:0100                 .686p
seg000:0100                 .mmx
seg000:0100                 .model tiny
seg000:0100
seg000:0100 ;

===========================================================================
seg000:0100
seg000:0100 ; Segment type: Pure code
seg000:0100 seg000          segment byte public 'CODE' use16
seg000:0100                 assume cs:seg000
seg000:0100                 org 100h
seg000:0100                 assume es:nothing, ss:nothing, ds:seg000,
fs:nothing,

gs:nothing
seg000:0100
seg000:0100 ; --------------- S U B R O U T I N E
------------------------------------

---
seg000:0100
seg000:0100
seg000:0100 start           proc near
seg000:0100                 mov     bx, word_10160
seg000:0104                 mov     word_10150, bx
seg000:0108                 mov     bx, word_10162
seg000:010C                 mov     word_10152, bx
seg000:0110                 mov     bx, word_10164
seg000:0114                 mov     word_10154, bx
seg000:0118                 mov     bx, word_10168
seg000:011C                 mov     word_10156, bx
seg000:0120                 mov     bx, word_1016A
seg000:0124                 mov     word_10158, bx
seg000:0128                 mov     bx, word_1016C
seg000:012C                 mov     bx, word_1015A
seg000:0130                 mov     bx, word_1016E
seg000:0134                 mov     bx, word_1015C
seg000:0138                 mov     bx, word_10170
seg000:013C                 mov     word_1015E, bx
seg000:0140                 mov     dx, 150h
seg000:0143                 mov     ah, 9
seg000:0145                 int     21h             ; DOS - PRINT
STRING
seg000:0145                                         ; DS:DX -> string
terminated by "$"
seg000:0147                 mov     ah, 0
seg000:0149                 int     16h             ; KEYBOARD - READ
CHAR FROM BUFFER,

WAIT IF EMPTY
seg000:0149                                         ; Return: AH =
scan code, AL =

character
seg000:014B                 mov     ax, 4C00h
seg000:014E                 int     21h             ; DOS - 2+ - QUIT
WITH EXIT CODE

(EXIT)
seg000:014E start           endp                    ; AL = exit code
seg000:014E
seg000:014E ;

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
seg000:0150 word_10150      dw 0FFFFh               ; DATA XREF: start
+4 w
seg000:0152 word_10152      dw 0FFFFh               ; DATA XREF: start
+C w
seg000:0154 word_10154      dw 0FFFFh               ; DATA XREF: start
+14 w
seg000:0156 word_10156      dw 0FFFFh               ; DATA XREF: start
+1C w
seg000:0158 word_10158      dw 0FFFFh               ; DATA XREF: start
+24 w
seg000:015A word_1015A      dw 0FFFFh               ; DATA XREF: start
+2C r
seg000:015C word_1015C      dw 0FFFFh               ; DATA XREF: start
+34 r
seg000:015E word_1015E      dw 0FFFFh               ; DATA XREF: start
+3C w
seg000:0160 word_10160      dw 6957h                ; DATA XREF:
start r
seg000:0162 word_10162      dw 6174h                ; DATA XREF: start
+8 r
seg000:0164 word_10164      dw 6Ah                  ; DATA XREF: start
+10 r
seg000:0166                 db  20h
seg000:0167                 db    0
seg000:0168 word_10168      dw 7773h                ; DATA XREF: start
+18 r
seg000:016A word_1016A      dw 6569h                ; DATA XREF: start
+20 r
seg000:016C word_1016C      dw 6963h                ; DATA XREF: start
+28 r
seg000:016E word_1016E      dw 2165h                ; DATA XREF: start
+30 r
seg000:0170 word_10170      dw 20h                  ; DATA XREF: start
+38 r
seg000:0172                 db  24h ; $
seg000:0173                 db    0
seg000:0173 seg000          ends
seg000:0173
seg000:0173
seg000:0173                 end start


dochodzę do wniosku, że próby zmiany wielkości uprzednio
zadeklarowanych zmiennych w
tablicy nie mają sensu ponieważ nie przynosi to pożądanego efektu, a
co za tym idzie
programista sam jest odpowiedzialny między innymi za ich rozmiar więc
skoro wcześniej
zmienna została już zainicjowana konkretnym rozmiarem to nie można
tego zmienić
później (dla mnie jest to dość logiczne jeśli chcieliśmy zmienną o
innym rozmiarze
trzeba było zrobić to wcześniej lub dopisać sobie dodatkową) no chyba
że się mylę.
Technical Details
Message-ID: <b5eb2851-c397-41a8-9cac-6f923b13a139@c33g2000yqm.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.nask.pl!news.nask.org.pl!goblin1!goblin.stu.neva.ru!postnews.google.com!c33g2000yqm.googlegroups.com!not-for-mail
References: <92331df0-601e-4a00-bf14-d0874270720c@z8g2000yqz.googlegroups.com> <i1br8b$l4g$1@inews.gazeta.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.nask.pl!news.nask.org.pl!goblin1!goblin.stu.neva.ru!postnews.google.com!c33g2000yqm.googlegroups.com!not-for-mail
From: przemo12146 <przemo12146@gmail.com>
Newsgroups: pl.comp.lang.asm
Subject: Re: Tablica
Date: Sun, 11 Jul 2010 08:18:56 -0700 (PDT)
Organization: http://groups.google.com
Lines: 188
Message-ID: <b5eb2851-c397-41a8-9cac-6f923b13a139@c33g2000yqm.googlegroups.com>
References: <92331df0-601e-4a00-bf14-d0874270720c@z8g2000yqz.googlegroups.com>  <i1br8b$l4g$1@inews.gazeta.pl>
NNTP-Posting-Host: 195.117.93.1
Mime-Version: 1.0
X-Trace: posting.google.com 1278861536 30950 127.0.0.1 (11 Jul 2010 15:18:56 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Sun, 11 Jul 2010 15:18:56 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: c33g2000yqm.googlegroups.com; posting-host=195.117.93.1;  posting-account=vJlzHgoAAAB4VQEIaOfBd-KwI2yffTmo
User-Agent: G2/1.0
X-HTTP-UserAgent: Opera/9.80 (Windows NT 5.1; U; pl) Presto/2.6.30  Version/10.60,gzip(gfe)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit