386-assembler quelltexte

Antworten
Benutzeravatar
davidvajda.de
Site Admin
Beiträge: 1424
Registriert: Di Jul 18, 2023 8:36 pm
Wohnort: D-72072, Tübingen
Kontaktdaten:

386-assembler quelltexte

Beitrag von davidvajda.de »

Code: Alles auswählen

<?php
session_start ();
?>

<form method="POST" action="./form20240317.php">
<input type="text" name="form20240317a"></input>
<input type="submit"></input>
</form>

<?php
setcookie ("form20240317b", "Hallo, ich bin das erste Cookie", time () + 800);

echo session_id () . "<br>\n";

echo htmlentities ($_POST ["form20240317a"]) . "<br>\n";
echo htmlentities ($_COOKIE ["form20240317b"]) . "<br>\n";
echo htmlentities ($_COOKIE ["form20240317c"]) . "<br>\n";

session_destroy ();
?>

Code: Alles auswählen

Trying ::1...
Connected to localhost.
Escape character is '^]'.
HTTP/1.1 200 OK
Date: Sun, 17 Mar 2024 10:18:58 GMT
Server: Apache/2.4.57 (Debian)
Set-Cookie: PHPSESSID=6otcd9sd4g14ia6erpu3fvsn50; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: form20240317b=Hallo%2C%20ich%20bin%20das%20erste%20Cookie; expires=Sun, 17 Mar 2024 10:32:18 GMT; Max-Age=800
Vary: Accept-Encoding
Content-Length: 230
Content-Type: text/html; charset=UTF-8


<form method="POST" action="./form20240317.php">
<input type="text" name="form20240317a"></input>
<input type="submit"></input>
</form>

6otcd9sd4g14ia6erpu3fvsn50<br>
Hallo, ich das Datum<br>
<br>
Dies ist das zweite Cookie<br>

Code: Alles auswählen

POST http://localhost/mysql20240217/20240317/form20240317.php HTTP/1.1
host: localhost
Cookie: form20240317c=Dies ist das zweite Cookie
Content-Length: 34
Content-Type: application/x-www-form-urlencoded

form20240317a=Hallo, ich das Datum

Code: Alles auswählen

global _start

section .data
        arrayToSort:    db      'asdhjasdnasmdsadmads', 0x00
        arrayToSortLen: equ     $-arrayToSort
section .text

    _start:

    mov esi, arrayToSort
    loop1:
        mov al, [esi]
        cmp al, 0x00
        je loop1end
        mov al, [esi]
        mov edi, esi
        inc edi
        loop2:
            mov bl, [edi]
            cmp bl, 0x00
            je loop2end
            mov bl, [edi]
            cmp al, bl
            jle noexchange
                mov al, [esi]
                mov bl, [edi]
                mov [edi], al
                mov [esi], bl
            noexchange:
            mov al, [esi]
            inc edi
            jmp loop2
        loop2end:
        inc esi
        jmp loop1
    loop1end:


    mov edx, arrayToSortLen
    mov ecx, arrayToSort
    mov ebx, 1
    mov eax, 4
    int 0x80

    mov ebx, 0
    mov eax, 1
    int 0x80

Code: Alles auswählen

david@laptop-peaq:~$ 
david@laptop-peaq:~$ nasm -f elf32 -g x86_20240317.asm 
david@laptop-peaq:~$ ld -m elf_i386 -g x86_20240317.o 
david@laptop-peaq:~$ ./a.out
aaaaadddddhjmmnsssssdavid@laptop-peaq:~$
Bild

Jetzt mache ich weiter Aufgaben, und zwar erst Mal schriftliche Sachen - und IEEE754-Umrechnung
1.) IEEE754-Umrechnung.

Code: Alles auswählen

12.78125

12/6    =   2       Rest 0
6/2     =   3       Rest 0
3/2     =   1       Rest 1
1/2     =   0       Rest 1

0.78125 * 2 =       1.56250             1
0.56250 * 2 =       1.1250              1
0.125 * 2   =       0.25                0
0.25 * 2    =       0.5                 0
0.5 * 2     =       1.0                 1

0.78125 * 2 =
--------------
     1.56250

0.5625 * 2 =
    1.1250

1100.11001b

1100.11001b = 1,10011001b * 2^3

127 + 3 = 130

130 / 2 =       65              Rest    0
65 / 2 =        32              Rest    1
32 / 2 =        16              Rest    0
16 / 2 =        8               Rest    0
8 / 2 =         4               Rest    0
4 / 2 =         2               Rest    0
2 / 2 =         1               Rest    0
1 / 2 =         0               Rest    1

[0] Vorzeichenzeichen
[10000010] Exponent
(1,10011001b) = [10011001], normalisierte Mantisse

[0][10000010][10011001]

0100.0001.0100.1100.1000.0000.0000

0x414C800

Richtig
Jetzt habe ich dieses Beispiel von der Fernuni Hagen immer wieder Gerechnet. Ich sollte mir jetzt selber ein Programm generieren

Der witz ist - dass ich bei der Nachkommastelle keine seltsame Zahl haben will - also ich möchte kein 0.712831233333 haben, weil, dann kriege ich probleme mit der Rundung

Und deswegen muss ich mir jetzt ein sinngemässes Programm schreiben

Die Frage ist wie

wenn ich zum Beispiel

1/4 geht
1/8 geht
1/16 geht

Das könnte man so machen.

das man einfach

n als Zufallszahl nimmt und so oft zwei miteinander multipliziert. n sollte nicht grösser als 8 sein

Und dann teilt man 1 dadurch

Ok und für das vor dem Komma, nimmt einfach eine Zahl zwischen

1 und 2^15

Code: Alles auswählen

Das funktioniert schon mal ganz gut

Rechne die Zahl in IEEE-754 um 30148.031250
Rechne die Zahl in IEEE-754 um 23287.031250
Rechne die Zahl in IEEE-754 um 5402.125000
Rechne die Zahl in IEEE-754 um 23607.007812

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main (void) {
    time_t t;
    int n;
    float f1 = 1;
    float f2;

    srand ((unsigned )time (&t));

    f2 = (float) (rand () % (8192 * 4));

    n = (rand () % 8) + 2;

    while (n > 0) {
        f1 = f1 / 2;
        n--;
    }

    f2 = f2 + f1;

    printf ("Rechne die Zahl in IEEE-754 um %f\n", f2);

return 0;
}
Jetzt mache die Schriftlichen Aufgaben.

Code: Alles auswählen

1.) Rechne die Zahl in binaer Darstellung  in eine Dezimale Darstellung um
1111111010110111b 65207d
2.) Rechne die Zahl in dezimal darstellung in eine Binaerdarstellung um
21514 0101010000001010
3.) Addiere die drei Zahlen schriftlich
            62758
+            8634
+           27769
-----------------
            99161
4.) Subtrahiere die letzten drei Zahlen schriftlich von der ersten schriftlich
             6534
-            1457
-            5547
-             741
-----------------
            -1211
5.) Rechne die Zahl ins zweier komplement um, mit 8 Bit - und subtrahiere diese zahl von der ersten und rechne das Ergebnis nach dezimal
-103 -24 = -127
10011001 11101000 = 10000001
6.) Multipliziere die zwei Zahlen schriftlich
56885*340 = 19340900
7.) Dividiere die zwei Zahlen schriftlich
38673/15591 = 2
8.) Errechne x Logarithmisch mit dem Taschenrechner
64764^x = 1739002694
Bild

Bild

Bild

Bild

Bild

Code: Alles auswählen

 0 0 0 0 0    0
 1 0 0 0 1    1
 2 0 0 1 0    0
 3 0 0 1 1    1
 4 0 1 0 0    1
 5 0 1 0 1    1
 6 0 1 1 0    1
 7 0 1 1 1    1
 8 1 0 0 0    0
 9 1 0 0 1    1
10 1 0 1 0    0
11 1 0 1 1    1
12 1 1 0 0    0
13 1 1 0 1    1
14 1 1 1 0    0
15 1 1 1 1    1



 1 0 0 0 1    1
 3 0 0 1 1    1
 4 0 1 0 0    1
 5 0 1 0 1    1
 6 0 1 1 0    1
 7 0 1 1 1    1
 9 1 0 0 1    1
11 1 0 1 1    1
13 1 1 0 1    1
15 1 1 1 1    1

Gruppe 1:
 1 0 0 0 1    1
 4 0 1 0 0    1
Gruppe 2:
 3 0 0 1 1    1
 5 0 1 0 1    1
 6 0 1 1 0    1
 9 1 0 0 1    1
Gruppe 3:
 7 0 1 1 1    1
11 1 0 1 1    1
13 1 1 0 1    1
Gruppe 4:
15 1 1 1 1    1


1:3         0 0 - 1
1:5         0 - 0 1
4:9         - 0 0 1
4:5         0 1 0 -
4:6         0 1 - 0
3:7         0 - 1 1
3:11        - 0 1 1
5:7         0 1 - 1
5:13        - 1 0 1
6:7         0 1 1 -
9:11        1 0 - 1
9:13        1 - 0 1
7:15        - 1 1 1
11:15       1 - 1 1
13:15       1 1 - 1


4:5         0 1 0 -
6:7         0 1 1 -
1:3         0 0 - 1
13:15       1 1 - 1
4:6         0 1 - 0
5:7         0 1 - 1
9:11        1 0 - 1
1:5         0 - 0 1
9:13        1 - 0 1
11:15       1 - 1 1
3:7         0 - 1 1
3:11        - 0 1 1
4:9         - 0 0 1
5:13        - 1 0 1
7:15        - 1 1 1





Gruppe 1:
4:5         0 1 0 -
Gruppe 2:
6:7         0 1 1 -

4:5:6:7              0 1 - -


Gruppe 1:
4:6         0 1 - 0
1:3         0 0 - 1
Gruppe 2:
5:7         0 1 - 1
9:11        1 0 - 1
Gruppe 3:
13:15       1 1 - 1

4:6:5:7             0 1 - -
1:3:9:11            - 0 - 1
5:7:13:15           - 1 - 1
9:11:13:15          1 - - 1

Gruppe 1:
1:5         0 - 0 1
Gruppe 2:
9:13        1 - 0 1
3:7         0 - 1 1
Gruppe 3:
11:15       1 - 1 1

1:5:9:13            - - 0 1
1:5:3:7             0 - - 1
9:13:11:!5          1 - - 1
3:7:11:15           - - 1 1


Gruppe 1:
4:9         - 0 0 1
Gruppe 2:
5:13        - 1 0 1
3:11        - 0 1 1
Gruppe 3:
7:15        - 1 1 1

4:9:5:13            - - 0 1
4:9:3:11            - 0 - 1
5:13:7:15           - 1 - 1
3:11:7:15           - - 1 1



4:5:6:7              0 1 - -
4:6:5:7             0 1 - -
1:3:9:11            - 0 - 1
5:7:13:15           - 1 - 1
9:11:13:15          1 - - 1
1:5:9:13            - - 0 1
1:5:3:7             0 - - 1
9:13:11:!5          1 - - 1
3:7:11:15           - - 1 1
4:9:5:13            - - 0 1
4:9:3:11            - 0 - 1
5:13:7:15           - 1 - 1
3:11:7:15           - - 1 1




4:5:6:7             0 1 - -
4:6:5:7             0 1 - -
1:3:9:11            - 0 - 1
4:9:3:11            - 0 - 1
5:7:13:15           - 1 - 1
5:13:15             - 1 - 1
9:11:13:15          1 - - 1
9:13:11:!5          1 - - 1
1:5:3:7             0 - - 1
3:7:11:15           - - 1 1
3:11:7:15           - - 1 1
4:9:5:13            - - 0 1
1:5:9:13            - - 0 1




4:5:6:7             0 1 - -
1:3:9:11            - 0 - 1
5:7:13:15           - 1 - 1
9:11:13:15          1 - - 1
3:7:11:15           - - 1 1
4:9:5:13            - - 0 1


3:7:11:15:1:9:5:13           - - - 1
4:5:6:7                     0 1 - -





 1 0 0 0 1    1
 3 0 0 1 1    1
 4 0 1 0 0    1
 5 0 1 0 1    1
 6 0 1 1 0    1
 7 0 1 1 1    1
 9 1 0 0 1    1
11 1 0 1 1    1
13 1 1 0 1    1
15 1 1 1 1    1

y <= (x0) or (not x3 and x2)
y <= not (not(x0) and (x3 or not x2))

library ieee;
use ieee.std_logic_1164.all;

entity quine20240317 is
port (
    x3, x2, x1, x0: in std_logic;
    y: out std_logic
);
end;

architecture behaviour of quine20240317 is
begin
    y <= (x0) or (not x3 and x2);
end;

library ieee;
use ieee.std_logic_1164.all;

entity quine20240317testbench is
port (
    y: out std_logic
);
end;

architecture behaviour of quine20240317testbench is
    component quine20240317
    port (
        x3, x2, x1, x0: in std_logic;
        y: out std_logic
    );
    end component;
    signal x3, x2, x1, x0: std_logic;
begin
    q: quine20240317 PORT MAP (x3=>x3, x2=>x2, x1=>x1, x0=>x0, y=>y);


Code: Alles auswählen

library ieee;
use ieee.std_logic_1164.all;

entity quine20240317 is
port (
    x3, x2, x1, x0: in std_logic;
    y: out std_logic
);
end;

architecture behaviour of quine20240317 is
begin
    y <= (x0) or (not x3 and x2);
end;

library ieee;
use ieee.std_logic_1164.all;

entity quine20240317testbench is
port (
    y: out std_logic
);
end;

architecture behaviour of quine20240317testbench is
    component quine20240317
    port (
        x3, x2, x1, x0: in std_logic;
        y: out std_logic
    );
    end component;
    signal x3, x2, x1, x0: std_logic;
begin
    q: quine20240317 PORT MAP (x3=>x3, x2=>x2, x1=>x1, x0=>x0, y=>y);


    x0 <= '0' after 0 ns, '1' after 10 ns, '0' after 20 ns, '1' after 30 ns, '0' after 40 ns, '1' after 50 ns, '0' after 60 ns, '1' after 70 ns, '0' after 80 ns, '1' after 90 ns, '0' after 100 ns, '1' after 110 ns, '0' after 120 ns, '1' after 130 ns, '0' after 140 ns, '1' after 150 ns;

    x1 <= '0' after 0 ns, '0' after 10 ns, '1' after 20 ns, '1' after 30 ns, '0' after 40 ns, '0' after 50 ns, '1' after 60 ns, '1' after 70 ns, '0' after 80 ns, '0' after 90 ns, '1' after 100 ns, '1' after 110 ns, '0' after 120 ns, '0' after 130 ns, '1' after 140 ns, '1' after 150 ns;

    x2 <= '0' after 0 ns, '0' after 10 ns, '0' after 20 ns, '0' after 30 ns, '1' after 40 ns, '1' after 50 ns, '1' after 60 ns, '1' after 70 ns, '0' after 80 ns, '0' after 90 ns, '0' after 100 ns, '0' after 110 ns, '1' after 120 ns, '1' after 130 ns, '1' after 140 ns, '1' after 150 ns;

    x3 <= '0' after 0 ns, '0' after 10 ns, '0' after 20 ns, '0' after 30 ns, '0' after 40 ns, '0' after 50 ns, '0' after 60 ns, '0' after 70 ns, '1' after 80 ns, '1' after 90 ns, '1' after 100 ns, '1' after 110 ns, '1' after 120 ns, '1' after 130 ns, '1' after 140 ns, '1' after 150 ns;
end;
 
Bild

Code: Alles auswählen

<?php
session_start ();

include ("/home/david/mysqldata.php");

$db = new PDO ("mysql: host=localhost", $MYSQL_USER, $MYSQL_PASSWORD);

$sql = "CREATE DATABASE mysql20240317" . session_id () . "; ";
$db->query ($sql);

$sql = "USE mysql20240317" . session_id () . "; ";
$db->query ($sql);

$sql = "CREATE TABLE a (x1 INTEGER, x2 INTEGER); CREATE TABLE b (y1 INTEGER, y2 INTEGER); ";
$db->query ($sql);

$sql = "INSERT INTO a (x1, x2) VALUES (0, 0); INSERT INTO a (x1, x2) VALUES (0, 1); INSERT INTO a (x1, x2) VALUES (1, 0); INSERT INTO a (x1, x2) VALUES (1, 1); INSERT INTO a (x1, x2) VALUES (2, 7); INSERT INTO b (y1, y2) VALUES (0, 0); INSERT INTO b (y1, y2) VALUES (1, 1); INSERT INTO b (y1, y2) VALUES (2, 7); ";
$db->query ($sql);

$sql = "SELECT x1, x2 FROM a; ";
$stmt = $db->query ($sql);
while ($row = $stmt -> fetch ())
    echo $row [0] . ", " . $row [1] . "; ";
echo "<br>\n";

$sql = "SELECT y1, y2 FROM b; ";
$stmt = $db->query ($sql);
while ($row = $stmt -> fetch ())
    echo $row [0] . ", "  . $row [1] . "; ";
echo "<br>\n";

$sql = "SELECT x1, x2, y1, y2 FROM a INNER JOIN b ON a.x1 = b.y1; ";
$stmt = $db->query ($sql);
while ($row = $stmt -> fetch ())
    echo $row [0] . ", " . $row [1] . ", " . $row [2] . ", " . $row [3] . "; ";
echo "<br>\n";

$sql = "DROP DATABASE mysql20240317" . session_id () . "; ";
$db->query ($sql);

session_destroy ();
?>

Code: Alles auswählen

0, 0; 0, 1; 1, 0; 1, 1; 2, 7; <br>
0, 0; 1, 1; 2, 7; <br>
0, 0, 0, 0; 0, 1, 0, 0; 1, 0, 1, 1; 1, 1, 1, 1; 2, 7, 2, 7; <br>
Antworten