A "8 bájtos szám" alatt azt érted,
hogy két 8 karakter hosszúságú szövegből kinyert
számot akarsz összeadni, vagy azt hogy két
256^8 nagyságú számot akarsz összadni?
naja, vagy esetleg a bitet
karakternek hivod? :)) ha a szamok "12345678"
formatumban vannak, akkor at kell alakitanod, ha
0x1122334455667788 (tehat ket 64 bites szam)
formatumban van (tehat 8 byteos szam), akkor azt
ird es megoldjuk.
És
akkor EBX-ben lesz az összeg alsó 4 bájtja EDX-ben
a felső 4 bájtja és a carry flag mutatja majd a
65. bit állapotát.A fenti példa egyébként csak
32bites védett módban fogy működni.
De én
nem így csinálnám hanem MMX -el ehhez viszont
olyan assembler kell ami le is tudja majd
fordítani, és persze csak MMX-es és attól jobb
CPU-n fog működni!
A változó1 és a változó2 a két
64bites változó. Az MMX-es megoldásnál viszont a
PADDQ utasítás nem fogja beállítani neked a
flag-eket szóval nem tudod majd hogy van-e
túlcsordulás avagy nincs!
Azaz *a *b és *c
karaktertömbök ebben az esetben. 1. Ekkor
viszont nem ártana átadni a méretet is. 2.
Azonosító DELPIERO Regisztrált 2003.11.26.
3. Azonosító okokok Regisztrált
2003.11.19. 4. Answ írta: De minek kell neked egyáltalán ez
a 64 bites assembly függvény? Az újabb C/C++
fordítókban már van 64 bites szám típus: __int64,
int64, vagy INT64 néven.. Azért kell
neki, mivel ez iskolai beadandó feladat, és nem az
a cél hogy kiszámolja, hanem hogy az assemblyt,
C-s paraméterátadást, .. értse és ezt bebizonyítsa
eme feladat által. Most ő az "értés/megcsinálás"
részét nem nagyon komálja inkább lepasszolná neked
(vagy valaki másnak) a feladatot.
Egy másik
topikban már megírtam a véleményem. Ide csak
annyit: ha így haladunk ez a fórum lesz a
kódolni/gondolkodni abszolút nem tudó és akaró
"egyetemisták" kedvenc gyülekezőhelye, tele
házifeladatokkal, ZH és vizsgakérdésekkel melyek
legtöbbje a ciklus, változó, paraméterátadás,
mutató, dinamikus memóriakezelés alapfogalmak
nemértésének következményei és mint ilyenek elég
színvonaltalan kérdéseket eredményeznek az oldal
valódi "kérdéseihez" képest (meg ilyen frappáns
topikcímeket).
Nah az viszont mar nem volt benne a
kerdesben! ami viszont benne volt es hibas a
valaszomban az az hogy a cx tartalmahoz hozza kell
adni a 30H-et mert igy nem karakter! De amugy
teljesen igazad van, e problema megoldasahoz egy
sima assembly help is
elegendo!
Nekem van egy
ilyen programom (lemezkezelő) és azt a feladatot
kaptam, hogy pofozzam ki egy kicsit, csináljak
keretet a megjelenő adatok köré. Sajna lövésem
sincs, hogyan kell ezt megcsinálni, de 17.-én le
kell adnom. Légyszike segítsetek!
Köszi!
.model
small .stack .data? block db 512
dup(?) .code
public
cr_lf cr_lf proc push dx mov dl,
13 call write_char mov dl, 10 call
write_char pop dx ret cr_lf
endp
public
write_hexa_digit write_hexa_digit proc push
dx cmp dl,10 jae hexa ; >= add
dl,'0' jmp hexa_ki hexa: add
dl,'A'-10 jmp hexa_ki hexa_ki: call
write_char pop dx ret write_hexa_digit
endp
public write_hexa write_hexa
proc push dx push cx mov dh, dl ;dl
mentese dh-ba mov cl,4 shr dl,cl call
write_hexa_digit mov dl,dh and
dl,0fh call write_hexa_digit pop cx pop
dx ret write_hexa
endp
public
write_char write_char proc push ax mov
ah,2 int 21h pop ax ret write_char
endp
public
write_block write_block proc push cx push
dx mov cx, 40 w_b_new: call
write_line call cr_lf add dx, 16 loop
w_b_new pop dx pop cx ret write_block
endp
public cls cls proc push
ax push bx push cx push dx xor ax,
ax xor cx, cx mov dh, 49 mov dl,
79 mov bh, 7 mov ah, 6 ;sor gorgetese
fel int 10h pop dx pop cx pop
bx pop ax ret ;sorok szama, ha 0,
torles ;ch:cl bal felso sor:oszlop ;dh:dl
jobb also cls endp
main proc call
cls mov ax, dgroup mov ds, ax lea bx,
block ;ds:bx mov al, 0 ;0-a, 1-b
meghajto mov dx, 256 ;kezdo blokk mov cx, 1
;egyszerre beolvasott blokkok szama int 25h
;hattertarakhoz ez kell, monitor/bill 21h ;ez
egy blokkot beolvas a floppyrol ;hibajelzes
ah-ba ;tobbi a stackba, ami emiatt no popf
;flag regiszterbe tesz vissza xor dx, dx
;ds:dx-ben lesz az adat call write_block mov
ah, 4ch int 21h main endp end
main